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