2 * Insert Copyright if needed.
5 #ifndef WM_CONNECTION_HPP
6 #define WM_CONNECTION_HPP
9 #include <unordered_map>
20 SocketInfo(std::string screen_name, std::string ip, int wm_port, bool master_mode) : _screen_name(screen_name),
21 _ip(ip), _wm_port(wm_port), _master_mode(master_mode){}
22 std::string screenName() const { return _screen_name; }
23 std::string ip() const { return _ip; }
24 int wmPort() const { return _wm_port; }
25 bool masterMode() const { return _master_mode; }
26 int mySocket() const { return _my_socket; }
27 int connectedSocket() const { return _connected_socket; }
28 void setMySocket(int socket) { this->_my_socket = socket; }
29 void setConnectedSocket(int socket) { this->_connected_socket = socket; }
32 std::string _screen_name;
37 int _connected_socket = -1;
44 ~WMConnection() = default;
46 using ReceivedHandler = std::function<void(json_object* j_out)>;
55 void registerCallback(ReceivedHandler on_received);
56 int sendRequest(char const *req, char const *appid,
57 char const *drawing_name, char const *drawing_area);
58 bool isRemoteArea(const char* area);
59 bool isRemoteEcu(std::string appid);
60 bool isConnecting(std::string ecu_name);
61 bool isConnectionMode();
62 std::string parseMasterArea(const char* area);
63 bool isSyncDrawingForRemote(const char* role);
64 void startSyncDrawForRemote(const char* role);
65 void finishSyncDrawForRemote(const char* role);
67 int getConnectedSocket();
68 void setConnectedSocket(int connected_socket);
69 std::string getAreaToEcuName(const char* area);
70 std::string getSocketToEcuName(int socket);
71 std::string getMySocketToEcuName(int socket);
72 std::string getAppIdToEcuName(std::string appid);
73 std::string getIpToEcuName(std::string ip);
74 std::string getEcuName();
77 void setAppIdToEcuName(std::string appid, std::string ecu_name);
78 void setAppIdToReceivedEcuName(std::string appid);
79 void callOnReceivedHandler(json_object *j_out);
81 int connectToServer(std::string ecu_name);
82 int connectedToServer(int socket);
83 void connectionTimeLimit();
85 int serverAccept(int socket);
86 int receive(json_object** j_out, int *j_cnt, int socket);
90 std::string received_ecu_name;
91 ReceivedHandler onReceived;
92 std::string syndDrawingAppId;
95 std::string received_ecu;
103 std::unordered_map<std::string, SocketInfo> wm_socket;
104 std::unordered_map<std::string, std::string> appid2ecuName;
106 int initializeServer();
107 int initializeClient(std::string ecu_name);
108 int loadTimeoutConfigFile();
109 int loadConnectionConfigFile();
111 int send(json_object* j_in, std::string ecu_name);
113 uint64_t getNextTimerTime(uint64_t msec);
118 #endif // WM_CONNECTION_HPP