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()); } }