Application code clean-up
[staging/windowmanager.git] / AFBClient.h
index 6947629..5b8bb6d 100644 (file)
@@ -3,36 +3,48 @@
 
 #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);
+    int requestSurface(const char *label);
     void activateSurface(const char *label);
     void deactivateSurface(const char *label);
     void endDraw(const char *label);
+    int dispatch(uint64_t timeout);
+
+    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);
 
 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