#include #include #include #include #include #include class mycallbackObj : public stasher::managedserverstatuscallbackObj { public: mycallbackObj() {} ~mycallbackObj() {} void connection_update(stasher::req_stat_t status) override { std::cout << ("Connection update: " + x::tostring(status) + "\n") << std::flush; } void serverinfo(const stasher::userhelo &serverinfo) override { std::cout << "Connected to " << serverinfo.nodename << " (cluster " << serverinfo.clustername << ")" << std::endl; std::cout << "Maximum " << serverinfo.limits.maxobjects << " objects, " << x::fmtsize(serverinfo.limits.maxobjectsize) << " aggregate object size, per transaction." << std::endl << "Maximum " << serverinfo.limits.maxsubs << " concurrent subscriptions." << std::endl; } void state(const stasher::clusterstate &state) override { std::cout << "Current master: " << state.master << std::endl; for (auto &node:state.nodes) { std::cout << " Peer: " << node << std::endl; } std::cout << "Quorum: full=" << x::tostring(state.full) << ", majority=" << x::tostring(state.majority) << std::endl; } }; void managedserverstatussubscriber() { stasher::client client=stasher::client::base::connect(); auto manager=stasher::manager::create(L"", "10 seconds"); std::cout << "Subscribing to server status, press ENTER to stop" << std::endl; auto subscriber=x::ref::create(); x::ref mcguffin=manager-> manage_serverstatusupdates(client, subscriber); std::string dummy; std::getline(std::cin, dummy); } int main() { try { managedserverstatussubscriber(); } catch (const x::exception &e) { std::cerr << e << std::endl; exit(1); } return 0; }