7 #include "Metaserver.h"
8 #include "Connection.h"
10 #include <Atlas/Objects/Operation.h>
11 #include <Atlas/Objects/Encoder.h>
13 #include <sigc++/slot.h>
17 using namespace Atlas::Objects::Operation;
18 using WFMath::TimeStamp;
22 MetaQuery::MetaQuery(boost::asio::io_service& io_service,
23 Atlas::Bridge& bridge,
25 const std::string& host,
27 BaseConnection(io_service,
"eris-metaquery", host),
30 m_serverIndex(sindex),
32 m_completeTimer(io_service) {
34 connectRemote(host, 6767);
38 MetaQuery::~MetaQuery() =
default;
47 _socket->getEncoder().streamObjectsMessage(gt);
55 m_completeTimer.expires_from_now(std::chrono::seconds(10));
56 m_completeTimer.async_wait([&](boost::system::error_code ec) {
58 this->onQueryTimeout();
64 void MetaQuery::dispatch() {
69 return (TimeStamp::now() -
_stamp).milliseconds();
73 _meta.queryFailure(
this, msg);
76 void MetaQuery::handleTimeout(
const std::string&) {
77 _meta.queryTimeout(
this);
80 void MetaQuery::onQueryTimeout() {
81 _meta.queryTimeout(
this);
84 void MetaQuery::setComplete() {
87 m_completeTimer.cancel();