00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __CODEX_QUORUM_RESPONSEINFO_H__
00022 #define __CODEX_QUORUM_RESPONSEINFO_H__
00023
00024 #include <map>
00025
00026 #include "ResponseCallback.h"
00027
00028 namespace CODEX_Quorum
00029 {
00033 class ResponseInfo
00034 {
00035 public :
00037 typedef map< unsigned int , bool > ServerMap;
00038
00045 ResponseInfo( ResponseCallback* cb ) :
00046 m_cb( cb ),
00047 m_failures( 0 )
00048 {}
00049
00051 virtual ~ResponseInfo();
00052
00060 void add( unsigned int server, Message* msg );
00061
00063 const ServerMap& map() const { return m_map; }
00064
00066 unsigned int failures() const { return m_failures; }
00067
00069 unsigned int successes() const { return m_map.size() - m_failures; }
00070
00072 void fail() { if ( 0 != m_cb ) m_cb->fail(); }
00073
00074 private :
00075 ResponseCallback* m_cb;
00076 unsigned int m_failures;
00077 ServerMap m_map;
00078 };
00079
00080 }
00081
00082 #endif