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