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__ */
1.2.18