]> gitweb.ps.run Git - autorec/blobdiff - src/ws.h
Refactor into classes
[autorec] / src / ws.h
index 82d79767fdbf2a2ec6d212e5e12f40c8d0ba3348..ecc88b3b042c4db79be2d32143e852980ab49fe7 100644 (file)
--- a/src/ws.h
+++ b/src/ws.h
@@ -1,10 +1,3 @@
-// #define _WEBSOCKETPP_CPP11_INTERNAL_\r
-// #define ASIO_STANDALONE\r
-// #include <websocketpp/config/asio_no_tls_client.hpp>\r
-// #include <websocketpp/client.hpp>\r
-\r
-// using client = websocketpp::client<websocketpp::config::asio_client>;\r
-\r
 #include "mongoose.h"\r
 \r
 #include "json.hpp"\r
@@ -14,71 +7,13 @@ using json = nlohmann::json;
 \r
 namespace ws\r
 {\r
-  // client c;\r
-\r
-  // void on_message(websocketpp::connection_hdl hdl, client::message_ptr msg) {\r
-  //   auto j = json::parse(msg->get_payload());\r
-  //   int op = j["op"].get<int>();\r
-\r
-  //   if (op == 0) {\r
-  //     json response = { { "op", 1 },\r
-  //                       { "d", {\r
-  //                           { "rpcVersion", 1 },\r
-  //                         } } };\r
-  //     auto responseStr = response.dump();\r
-  //     websocketpp::lib::error_code ec;\r
-  //     c.send(hdl, responseStr, websocketpp::frame::opcode::TEXT, ec);\r
-  //     if (ec)\r
-  //       MessageBoxA(NULL, ec.message().c_str(), "error", MB_OK);\r
-  //   } else if (op == 2) {\r
-  //     MessageBoxA(NULL, "hura", "connected", MB_OK);\r
-  //   }\r
-  // }\r
-\r
-  // void init()\r
-  // {\r
-  //   c.set_access_channels(websocketpp::log::alevel::all);\r
-  //   c.clear_access_channels(websocketpp::log::alevel::frame_payload);\r
-  //   c.set_error_channels(websocketpp::log::elevel::all);\r
-\r
-  //   // Initialize ASIO\r
-  //   c.init_asio();\r
-\r
-  //   // Register our message handler\r
-  //   c.set_message_handler(&on_message);\r
-  // }\r
-\r
-  // void connect(std::string address)\r
-  // {\r
-  //   websocketpp::lib::error_code ec;\r
-  //   client::connection_ptr con = c.get_connection(address, ec);\r
-  //   if (ec) {\r
-  //       std::cout << "could not create connection because: " << ec.message() << std::endl;\r
-  //       return;\r
-  //   }\r
-\r
-  //   c.connect(con);\r
-  // }\r
-\r
-  // void update()\r
-  // {\r
-  //   c.run_one();\r
-  // }\r
-\r
-\r
-\r
-\r
-\r
   mg_mgr mgr;\r
   mg_connection *c = nullptr;\r
 \r
   bool done = false;\r
 \r
   static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {\r
-    if (ev == MG_EV_ERROR || ev == MG_EV_CLOSE) {\r
-      MessageBoxA(NULL, "", "Error", MB_OK);\r
-    } else if (ev == MG_EV_WS_OPEN) {\r
-      //mg_ws_send(c, "hello", 5, WEBSOCKET_OP_TEXT);\r
+    if (ev == MG_EV_WS_OPEN) {\r
     } else if (ev == MG_EV_WS_MSG) {\r
       struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;\r
       std::string jsonStr(wm->data.ptr, wm->data.len);\r
@@ -93,13 +28,7 @@ namespace ws
           }}\r
         };\r
         auto responseStr = response.dump();\r
-        MessageBoxA(NULL,\r
-          (std::string("is_client") + std::to_string(c->is_client) +\r
-          std::string(" is_accepted") + std::to_string(c->is_accepted) +\r
-          std::string(" is_readable") + std::to_string(c->is_readable) +\r
-          std::string(" is_writable") + std::to_string(c->is_writable)).c_str(),\r
-          "", MB_OK);\r
-        mg_ws_send(c, "{\"op\":1,\"d\":{\"rpcVersion\":1}}", 29, WEBSOCKET_OP_TEXT);\r
+        mg_ws_send(c, responseStr.c_str(), responseStr.size(), WEBSOCKET_OP_TEXT);\r
       }\r
       else if (op == 2)\r
       {\r
@@ -107,7 +36,12 @@ namespace ws
       }\r
     }\r
 \r
-    if (ev == MG_EV_ERROR || ev == MG_EV_CLOSE) {\r
+    if (ev == MG_EV_ERROR) {\r
+      MessageBoxA(NULL, "", "Error", MB_OK);\r
+      done = true;\r
+    }\r
+    if (ev == MG_EV_CLOSE) {\r
+      MessageBoxA(NULL, "", "Close", MB_OK);\r
       done = true;\r
     }\r
   }\r
@@ -126,18 +60,17 @@ namespace ws
   {\r
     if (c && !done)\r
       mg_mgr_poll(&mgr, 10);\r
-    else\r
-      MessageBoxA(NULL, "cant update", "Nio", MB_OK);\r
   }\r
 \r
-  void identify()\r
+  void sendRequest(std::string requestType)\r
   {\r
-        MessageBoxA(NULL,\r
-          (std::string("is_client") + std::to_string(c->is_client) +\r
-          std::string(" is_accepted") + std::to_string(c->is_accepted) +\r
-          std::string(" is_readable") + std::to_string(c->is_readable) +\r
-          std::string(" is_writable") + std::to_string(c->is_writable)).c_str(),\r
-          "", MB_OK);\r
-    mg_ws_send(c, "{\"op\":1,\"d\":{\"rpcVersion\":1}}", 29, WEBSOCKET_OP_TEXT);\r
+    json request = { { "op", 6 },\r
+                      { "d",\r
+                        {\r
+                          { "requestType", requestType },\r
+                          { "requestId", std::to_string(NULL).c_str() }\r
+                        } } };\r
+    auto requestStr = request.dump();\r
+    mg_ws_send(c, requestStr.c_str(), requestStr.size(), WEBSOCKET_OP_TEXT);\r
   }\r
 }
\ No newline at end of file