]> gitweb.ps.run Git - autorec/blobdiff - src/ws.h
Why didnt I commit these
[autorec] / src / ws.h
index 4bebc1fb22bb0481f33a27a0a0d3bc68dc76e01e..d3acb2763f99fe5753a005999dea650c562c2ba3 100644 (file)
--- a/src/ws.h
+++ b/src/ws.h
@@ -11,13 +11,16 @@ namespace ws
   mg_mgr mgr;\r
   mg_connection *c = nullptr;\r
 \r
-  bool done = false;\r
+  bool isConnected = false;\r
 \r
   std::function<void()> onConnect;\r
+  std::function<void()> onClose;\r
+  std::function<void()> onError;\r
 \r
   static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {\r
     if (ev == MG_EV_WS_OPEN) {\r
       puts("Open");\r
+      isConnected = true;\r
     } else if (ev == MG_EV_WS_MSG) {\r
       struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;\r
       printf("Msg: %.*s\n", (int)wm->data.len, wm->data.ptr);\r
@@ -45,11 +48,15 @@ namespace ws
 \r
     if (ev == MG_EV_ERROR) {\r
       printf("Error: %s\n", (char*)ev_data);\r
-      done = true;\r
+      isConnected = false;\r
+      if (onError)\r
+          onError();\r
     }\r
     if (ev == MG_EV_CLOSE) {\r
       puts("Close");\r
-      done = true;\r
+      isConnected = false;\r
+      if (onClose)\r
+        onClose();\r
     }\r
   }\r
 \r
@@ -65,7 +72,7 @@ namespace ws
 \r
   void update()\r
   {\r
-    if (c && !done)\r
+    if (c)\r
       mg_mgr_poll(&mgr, 10);\r
   }\r
 \r