00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __CODEX_APSS_INITACTIVITY_H__
00019 #define __CODEX_APSS_INITACTIVITY_H__
00020
00021 #include "CODEX_Events/Activity.h"
00022 #include "CODEX_Events/Event.h"
00023 #include "Types.h"
00024 #include "MessageProcessor.h"
00025 #include "CODEX_Server/ServerResponseHandler.h"
00026 #include "CODEX_Server/UnicastRequestHandler.h"
00027
00028 namespace CODEX_APSS
00029 {
00030 class InitEvent;
00031
00040 class InitActivity : public CODEX_Events::CloseHandler
00041 {
00042 public :
00044 typedef vector< SignedEstablishedMsg > EvidenceVector;
00045
00059 InitActivity( CODEX_Events::DeadPileType& deadPile,
00060 CODEX_Events::QType& eventQueue,
00061 unsigned int version,
00062 unsigned int coordinator,
00063 unsigned int self,
00064 unsigned int num,
00065 const unsigned char* key,
00066 const SubshareList& subshares,
00067 CODEX_Server::ServerResponseHandler* responseHandler,
00068 CODEX_Server::UnicastRequestHandler* requestHandler );
00069
00071 virtual ~InitActivity();
00072
00073 bool handler( CODEX_Events::CloseEvent& event );
00074
00076 bool handler( InitEvent& event );
00077
00079 void addFailure();
00080
00082 void addEvidence( const SublabelType& label,
00083 EvidenceVector* evidence );
00084
00085 private :
00086 typedef map< SublabelType , EvidenceVector* > EvidenceMap;
00087
00088 unsigned int m_version;
00089 unsigned int m_coordinator;
00090 unsigned int m_self;
00091 unsigned int m_num;
00092 unsigned char m_key[ CODEX_Server::ServerState::nMID ];
00093
00094 SubshareList m_subshares;
00095 CODEX_Server::ServerResponseHandler* m_responseHandler;
00096 CODEX_Server::UnicastRequestHandler* m_requestHandler;
00097 EvidenceMap m_evidence;
00098
00099 unsigned int m_numShares;
00100 unsigned int m_failures;
00101 };
00102
00103 }
00104
00105 #endif