#include <ctime>
#include <iostream>
const std::string realm = "cppwamp.demo.time";
const std::string address = "localhost";
const short port = 12345u;
{
template <typename TConverter>
void convert(TConverter& conv, std::tm& t)
{
conv ("sec", t.tm_sec)
("min", t.tm_min)
("hour", t.tm_hour)
("mday", t.tm_mday)
("mon", t.tm_mon)
("year", t.tm_year)
("wday", t.tm_wday)
("yday", t.tm_yday)
("isdst", t.tm_isdst);
}
}
class TimeClient : public std::enable_shared_from_this<TimeClient>
{
public:
{
return std::shared_ptr<TimeClient>(new TimeClient(session));
}
void start()
{
auto self = shared_from_this();
{
join();
});
}
private:
: session_(session)
{}
static void onTimeTick(std::tm time)
{
std::cout << "The current time is: " << std::asctime(&time) << "\n";
}
void join()
{
auto self = shared_from_this();
session_->join(
{
getTime();
});
}
void getTime()
{
auto self = shared_from_this();
session_->call(
{
auto time = result.value()[0].to<std::tm>();
std::cout << "The current time is: " << std::asctime(&time) << "\n";
subscribe();
});
}
void subscribe()
{
session_->subscribe(
wamp::simpleEvent<std::tm>(&TimeClient::onTimeTick),
{
});
}
};
int main()
{
auto tcp = connector<Json>(ioctx,
TcpHost(address, port));
auto client = TimeClient::create(session);
client->start();
ioctx.run();
return 0;
}