00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "Activity.h"
00019 #include "Event.h"
00020
00021 #include <assert.h>
00022
00023 using namespace CODEX_Events;
00024
00025 Activity::Activity( DeadPileType& deadPile, QType& eventQueue ) :
00026 m_deadPile( deadPile ),
00027 m_queue( eventQueue ),
00028 m_outstanding( 0 ),
00029 m_canTerminate( false )
00030 {
00031
00032 }
00033
00034 Activity::~Activity()
00035 {
00036 }
00037
00038 bool
00039 Activity::handler( EventAck& event )
00040 {
00041 if ( ( 0 == --m_outstanding ) && m_canTerminate )
00042 {
00043 terminate();
00044 }
00045 return true;
00046 }
00047
00048 void
00049 Activity::sendEvent( EventBase* event, Activity* ack, bool failure )
00050 {
00051 if ( 0 != event )
00052 {
00053 m_queue.push( event );
00054 ++m_outstanding;
00055 }
00056 if ( 0 != ack )
00057 {
00058 m_queue.push( new EventAck(ack, failure) );
00059 }
00060 }
00061
00062 void
00063 Activity::enableTerminate()
00064 {
00065 m_canTerminate = true;
00066 }
00067
00068 void
00069 Activity::terminate()
00070 {
00071
00072
00073 m_deadPile.push_back(this);
00074
00075 }
00076
00077 DataHandler::DataHandler() :
00078 Activity( *(DeadPileType*)0, *(QType*)0 )
00079 {
00080 }
00081
00082 DataHandler::~DataHandler()
00083 {
00084 }
00085
00086 CloseHandler::CloseHandler() :
00087 Activity( *(DeadPileType*)0, *(QType*)0 )
00088 {
00089 }
00090
00091 CloseHandler::~CloseHandler()
00092 {
00093 }