Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

Activity.h

00001 /*
00002  * Copyright 2003 Michael A. Marsh, Cornell University. All rights reserved.
00003  * This software is released under the modified BSD license.
00004  * See the file LICENSE in the top-level directory for details.
00005  */
00006 //
00007 // $Id: Activity.h,v 1.3 2004/05/19 15:56:49 mmarsh Exp $
00008 //
00009 // $Log: Activity.h,v $
00010 // Revision 1.3  2004/05/19 15:56:49  mmarsh
00011 // *** empty log message ***
00012 //
00013 // Revision 1.2  2003/11/04 22:31:48  mmarsh
00014 // *** empty log message ***
00015 //
00016 //
00017 
00018 #ifndef __CODEX_EVENTS_ACTIVITY_H__
00019 #define __CODEX_EVENTS_ACTIVITY_H__
00020 
00021 #include <queue>
00022 #include <vector>
00023 
00024 #include "Event.h"
00025 
00026 using namespace std;
00027 
00028 namespace CODEX_Events
00029 {
00031    typedef std::queue< EventBase* > QType; // namespace needed on Solaris
00032 
00034    typedef vector< Activity* > DeadPileType;
00035 
00052    class Activity
00053    {
00054       public:
00063          Activity( DeadPileType& deadPile, QType& eventQueue );
00064 
00066          virtual ~Activity();
00067 
00074          virtual bool handler( EventAck& event );
00075 
00076       protected:
00084          void sendEvent( EventBase* event,
00085                          Activity* source,
00086                          bool failure=false );
00087 
00094          void enableTerminate();
00095 
00096       private :
00097          void terminate();
00098 
00099       protected :
00101          DeadPileType& m_deadPile;
00103          QType&        m_queue;
00104 
00105       private :
00106          int           m_outstanding;
00107          bool          m_canTerminate;
00108    };
00109 
00110    class DataEvent;
00111 
00124    class DataHandler : public virtual Activity
00125    {
00126       public:
00128          DataHandler();
00129 
00131          virtual ~DataHandler();
00132 
00134          virtual bool handler( DataEvent& event ) = 0;
00135    };
00136 
00137    class CloseEvent;
00138 
00150    class CloseHandler : public virtual Activity
00151    {
00152       public:
00154          CloseHandler();
00155 
00157          virtual ~CloseHandler();
00158 
00160          virtual bool handler( CloseEvent& event ) = 0;
00161    };
00162 
00163 }
00164 
00165 #endif /* __CODEX_EVENTS_ACTIVITY_H__ */

Generated on Wed Jun 2 16:32:54 2004 for COrnell Data EXchange (CODEX) by doxygen1.2.18