summaryrefslogtreecommitdiffstats
path: root/demo3/common/agl-service-windowmanager/src/wm_connection.hpp
blob: 9d3180fcda5c7875068d32d4b783faaab04d97c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 * Insert Copyright if needed.
 */

#ifndef WM_CONNECTION_HPP
#define WM_CONNECTION_HPP

#include <functional>

struct json_object;

namespace wm
{

class WMConnection
{
  public:
    WMConnection();
    ~WMConnection() = default;

    using ReceivedHandler = std::function<void(json_object* j_out)>;

    int initialize();
    void registerCallback(ReceivedHandler on_received);
    int sendRequest(char const *req, char const *appid,
                    char const *drawing_name, char const *drawing_area);
    bool isMasterMode();
    bool isMasterArea(const char* area);
    bool isConnecting();
    std::string parseMasterArea(const char* area);
    bool isSyncDrawingForRemote(const char* role);
    void startSyncDrawForRemote(const char* role);
    void finishSyncDrawForRemote(const char* role);
    int getMySocket();
    int getConnectedSocket();
    void setConnectedSocket(int connected_socket);
    std::string getEcuName();
    void callOnReceivedHandler(json_object *j_out);
    int connectToMaster();

    int receive(json_object** j_out);

  private:
    std::string mode;
    std::string ip;
    int port;
    int my_socket = -1;
    int connected_socket = -1;
    ReceivedHandler onReceived;
    std::string syndDrawingAppId;

    std::string ecu_name;

    int initializeMaster();
    int initializeSlave();
    int loadConnectionConfigFile();

    int send(json_object* j_in);
};

} // namespace wm

#endif // WM_CONNECTION_HPP