10#include <Atlas/Objects/Operation.h>
11#include <Atlas/Objects/Encoder.h>
13#include <sigc++/slot.h>
17using namespace Atlas::Objects::Operation;
18using WFMath::TimeStamp;
22MetaQuery::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);
38MetaQuery::~MetaQuery() =
default;
40void MetaQuery::onConnect() {
47 _socket->getEncoder().streamObjectsMessage(gt);
50 _stamp = TimeStamp::now();
53 _queryNo = gt->getSerialno();
55 m_completeTimer.expires_from_now(std::chrono::seconds(10));
56 m_completeTimer.async_wait([&](boost::system::error_code ec) {
58 this->onQueryTimeout();
64void MetaQuery::dispatch() {
68long MetaQuery::getElapsed() {
69 return (TimeStamp::now() - _stamp).milliseconds();
72void MetaQuery::handleFailure(
const std::string& msg) {
73 _meta.queryFailure(
this, msg);
76void MetaQuery::handleTimeout(
const std::string&) {
77 _meta.queryTimeout(
this);
80void MetaQuery::onQueryTimeout() {
81 _meta.queryTimeout(
this);
84void MetaQuery::setComplete() {
87 m_completeTimer.cancel();
std::int64_t getNewSerialno()
operation serial number sequencing