Trying to fix the link with wsj1
[staging/windowmanager.git] / AFBClient.h
index 6947629..3961baf 100644 (file)
@@ -4,35 +4,50 @@
 #include <systemd/sd-event.h>
 
 #ifdef AFB
+extern "C"
+{
 #include <json-c/json.h>
 
 #include "afb-wsj1.h"
 #include "afb-ws-client.h"
+}
 #endif
 
 class AFBClient
 {
+    explicit AFBClient();
+    AFBClient(const AFBClient& that) = delete;
+    virtual~AFBClient();
+
 public:
-    AFBClient();
+    static AFBClient &instance()
+    {
+        static AFBClient obj;
+        return obj;
+    }
+
     bool init();
     void requestSurface(const char *label);
     void activateSurface(const char *label);
     void deactivateSurface(const char *label);
     void endDraw(const char *label);
 
+    static void onCall(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg);
+    static void onEvent(void *closure, const char *event, struct afb_wsj1_msg *msg);
+    static void onHangup(void *closure, struct afb_wsj1 *wsj1);
+    static void onReply(void *closure, struct afb_wsj1_msg *msg);
+    static void onRequestSurfaceReply(void *closure, struct afb_wsj1_msg *msg);
+
 private:
     void call(const char *api, const char *verb, const char *object);
-    void emitSignalOrCall(const char *api, const char *verb, const char *object);
     void event(const char *event, const char *object);
-    void onCall(void *closure, struct afb_wsj1 *wsj1);
-    void onEvent(void *closure, const char *event, struct afb_wsj1_msg *msg);
-    void onHangup(void *closure, struct afb_wsj1 *wsj1);
-    void onReply(void *closure, struct afb_wsj1_msg *msg);
 
     struct afb_wsj1 *wsj1;
+    struct afb_wsj1_itf itf;
+
     sd_event *loop;
-    const char *wmURI = "ws://localhost:1700/api?wm";
-    const char *wmAPI = "winman";
+    static const char *wmURI;
+    static const char *wmAPI;
 };
 
 #endif // AFBCLIENT_H