本文整理汇总了C++中Endpoint::poll方法的典型用法代码示例。如果您正苦于以下问题:C++ Endpoint::poll方法的具体用法?C++ Endpoint::poll怎么用?C++ Endpoint::poll使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Endpoint
的用法示例。
在下文中一共展示了Endpoint::poll方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runClient
void runClient(vector<string> uris)
{
size_t sent = 0, recv = 0, dropped = 0;
Endpoint client;
client.onNewConnection = [] (int fd) {
fprintf(stderr, "\ncli: new %d\n", fd);;
};
client.onLostConnection = [] (int fd) {
fprintf(stderr, "\ncli: lost %d\n", fd);;
};
client.onPayload = [&] (int, Payload&&) {
recv++;
};
client.onDroppedPayload = [&] (int, Payload&&) {
dropped++;
};
for (auto& uri : uris) client.connect(uri);
thread pollTh([&] { while (true) client.poll(100); });
Payload payload = pack(string(PayloadSize, 'a'));
auto sendFn = [&] {
while (true) {
client.broadcast(payload);
sent++;
}
};
thread sendTh(sendFn);
double start = wall();
size_t oldSent = 0, oldRecv = 0;
while (true) {
lockless::sleep(200);
string diffSent = getStats(sent - dropped, oldSent);
string diffRecv = getStats(recv, oldRecv);
string elapsed = fmtElapsed(wall() - start);
fprintf(stderr,
"\r%s> sent: %s, recv: %s",
elapsed.c_str(), diffSent.c_str(), diffRecv.c_str());
}
}