00001 #include <skstream/skstream.h>
00002
00003 #ifndef ERIS_META_QUERY_H
00004 #define ERIS_META_QUERY_H
00005
00006 #include <Eris/BaseConnection.h>
00007 #include <Eris/Poll.h>
00008
00009 #include <wfmath/timestamp.h>
00010
00011 namespace Eris {
00012
00013 class Meta;
00014
00023 class MetaQuery : public BaseConnection
00024 {
00025 public:
00026 MetaQuery(Meta *svr, const std::string &host, unsigned int index);
00027 virtual ~MetaQuery();
00028
00030 long getQueryNo() const
00031 { return _queryNo; }
00032
00034 const std::string& getHost() const
00035 { return _host; }
00036
00037 unsigned int getServerIndex() const
00038 { return m_serverIndex; }
00039
00041 long getElapsed();
00042
00043 bool isReady(PollData &data) const
00044 {return data.isReady(_stream);}
00045
00046 bool isComplete() const
00047 { return m_complete; }
00048
00049 friend class Meta;
00050 protected:
00051 void setComplete();
00052
00054 virtual void onConnect();
00055 virtual void handleFailure(const std::string &msg);
00056 virtual void handleTimeout(const std::string& msg);
00057
00058 void onQueryTimeout();
00059
00060 const std::string _host;
00061 Meta* _meta;
00062
00063 long _queryNo;
00064 WFMath::TimeStamp _stamp;
00065 unsigned int m_serverIndex;
00066 bool m_complete;
00067 };
00068
00069
00070 }
00071
00072 #endif