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.cc,v 1.3 2004/05/19 15:56:49 mmarsh Exp $ 00008 // 00009 // $Log: Activity.cc,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 #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 //assert( 0 != m_queue ); 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 //if ( 0 != m_deadPile ) 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 ) // never called 00088 { 00089 } 00090 00091 CloseHandler::~CloseHandler() 00092 { 00093 }
1.4.1