Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

Handler.hpp

00001 #if !defined(__HANDLER_HPP)
00002 #define  __HANDLER_HPP
00003 
00004 /*
00005   CoreLinux++ 
00006   Copyright (C) 1999,2000 CoreLinux Consortium
00007   
00008    The CoreLinux++ Library is free software; you can redistribute it and/or
00009    modify it under the terms of the GNU Library General Public License as
00010    published by the Free Software Foundation; either version 2 of the
00011    License, or (at your option) any later version.
00012 
00013    The CoreLinux++ Library Library is distributed in the hope that it will 
00014    be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016    Library General Public License for more details.
00017 
00018    You should have received a copy of the GNU Library General Public
00019    License along with the GNU C Library; see the file COPYING.LIB.  If not,
00020    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00021    Boston, MA 02111-1307, USA.  
00022 */   
00023 
00024 #if   !defined(__COMMON_HPP)
00025 #include <Common.hpp>
00026 #endif
00027 
00028 #if   !defined(__REQUEST_HPP)
00029 #include <Request.hpp>
00030 #endif
00031 
00032 namespace   corelinux
00033 {
00034 
00035    DECLARE_CLASS( Handler );
00036 
00043    class Handler : public Synchronized
00044    {
00045    public:
00046 
00047       //
00048       // Constructors and destructors
00049       //
00050 
00052 
00053                         Handler( void );
00054 
00056 
00057                         Handler( HandlerCref );
00058 
00060 
00061       virtual           ~Handler( void );
00062 
00063       //
00064       // Operator overloads
00065       //
00067 
00068                HandlerRef  operator=( HandlerCref );
00069 
00071 
00072                bool        operator==( HandlerCref ) const;
00073 
00074       //
00075       // Accessors
00076       //       
00078 
00079                HandlerPtr  operator++( void ) ;
00080 
00082 
00083                HandlerPtr  operator--( void ) ;
00084 
00085       //
00086       // Mutators
00087       //
00088 
00096                void  succeedHandler( HandlerPtr ) throw ( Assertion );
00097 
00105                void  precedeHandler( HandlerPtr ) throw ( Assertion );
00106 
00108 
00109                void  extractSelf( void );
00110 
00119       virtual  void  handleRequest( RequestPtr ) ;
00120 
00121    protected:
00122 
00132       virtual  bool  handlesType( RequestPtr ) = 0;
00133 
00140       virtual  void  handle( RequestPtr ) = 0;
00141 
00143 
00144                void  setSuccessor( HandlerPtr ) ;
00145 
00147 
00148                void  setPredecessor( HandlerPtr ) ;
00149 
00151 
00152                void  setSiblings( HandlerPtr, HandlerPtr );
00153    protected:
00154 
00156 
00157                HandlerPtr  theSuccessor;
00158 
00160 
00161                HandlerPtr  thePredecessor;
00162 
00163    private:
00164 
00165    };
00166 }
00167 #endif   // if !defined(__HANDLER_HPP)
00168 
00169 /*
00170    Common rcs information do not modify
00171    $Author: frankc $
00172    $Revision: 1.1 $
00173    $Date: 2000/04/27 14:32:21 $
00174    $Locker:  $
00175 */
00176 
00177 
00178 

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium