Example #1
0
// ==========================================================================
// OPERATOR()
// ==========================================================================
std::vector<token> routing_visitor::operator()(std::string const &text)
{
    if (on_text_)
    {
        return on_text_(text);
    }
    else
    {
        return {};
    }
}
Example #2
0
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;
  }
}