// ========================================================================== // OPERATOR() // ========================================================================== std::vector<token> routing_visitor::operator()(std::string const &text) { if (on_text_) { return on_text_(text); } else { return {}; } }
void TestHttpClient::DoCallback(struct mg_connection * conn, int event, void * data) { if (event == MG_EV_CONNECT) { const int err = *reinterpret_cast<int*>(data); if (err != 0) { fprintf(stderr, "connect() failed: %s\n", strerror(err)); } return; } if (event == MG_EV_WEBSOCKET_HANDSHAKE_DONE) { on_connected_(conn); return; } if (event == MG_EV_WEBSOCKET_FRAME) { const auto wm = reinterpret_cast<struct websocket_message*>(data); if ((wm->flags & WEBSOCKET_OP_TEXT) == WEBSOCKET_OP_TEXT) { const std::string text(wm->data, wm->data + wm->size); on_text_(conn, text); return; } if ((wm->flags & WEBSOCKET_OP_BINARY) == WEBSOCKET_OP_BINARY) { const std::vector<uint8_t> bytes(wm->data, wm->data + wm->size); on_binary_(conn, bytes); return; } } if (event == MG_EV_CLOSE) { if ((conn->flags & MG_F_IS_WEBSOCKET) == MG_F_IS_WEBSOCKET) { on_closed_(conn); } return; } }