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 namespace Eris { 00009 00010 class Meta; 00011 00020 class MetaQuery : public BaseConnection 00021 { 00022 public: 00023 MetaQuery(Meta *svr, const std::string &host); 00024 virtual ~MetaQuery(); 00025 00026 SOCKET_TYPE getSocket(); 00027 00029 long getQueryNo() const 00030 { return _queryNo; } 00031 00033 const std::string& getHost() const 00034 { return _host; } 00035 00037 long getElapsed(); 00038 00040 bool isComplete() const 00041 { return _complete; } 00042 00043 bool isReady(PollData &data) const 00044 {return data.isReady(_stream);} 00045 00046 friend class Meta; 00047 protected: 00049 virtual void onConnect(); 00050 virtual void handleFailure(const std::string &msg); 00051 00052 virtual void bindTimeout(Timeout &t, Status sc); 00053 00055 void setComplete(); 00056 00057 const std::string _host; 00058 Meta* _meta; 00059 00060 long _queryNo; 00061 Time::Stamp _stamp; 00062 bool _complete; 00063 }; 00064 00065 00066 } // of namespace 00067 00068 #endif