00001 #ifndef ERIS_META_QUERY_H
00002 #define ERIS_META_QUERY_H
00003
00004 #include <Eris/BaseConnection.h>
00005 #include <Eris/Timestamp.h>
00006 #include <Eris/Poll.h>
00007
00008 #include <skstream/skstream.h>
00009
00010 namespace Eris {
00011
00012 class Meta;
00013
00022 class MetaQuery : public BaseConnection
00023 {
00024 public:
00025 MetaQuery(Meta *svr, const std::string &host);
00026 virtual ~MetaQuery();
00027
00028 SOCKET_TYPE getSocket();
00029
00031 long getQueryNo() const
00032 { return _queryNo; }
00033
00035 const std::string& getHost() const
00036 { return _host; }
00037
00039 long getElapsed();
00040
00042 bool isComplete() const
00043 { return _complete; }
00044
00045 bool isReady(PollData &data) const
00046 {return data.isReady(_stream);}
00047
00048 friend class Meta;
00049 protected:
00051 virtual void onConnect();
00052 virtual void handleFailure(const std::string &msg);
00053
00054 virtual void bindTimeout(Timeout &t, Status sc);
00055
00057 void setComplete();
00058
00059 const std::string _host;
00060 Meta* _meta;
00061
00062 long _queryNo;
00063 Time::Stamp _stamp;
00064 bool _complete;
00065 };
00066
00067
00068 }
00069
00070 #endif