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 isConnecting(std::string ecu_name);
60 bool isConnectionMode();
61 std::string parseMasterArea(const char* area);
62 bool isSyncDrawingForRemote(const char* role);
63 void startSyncDrawForRemote(const char* role);
64 void finishSyncDrawForRemote(const char* role);
66 int getConnectedSocket();
67 void setConnectedSocket(int connected_socket);
68 std::string getAreaToEcuName(const char* area);
69 std::string getSocketToEcuName(int socket);
70 std::string getMySocketToEcuName(int socket);
71 std::string getAppIdToEcuName(std::string appid);
72 std::string getIpToEcuName(std::string ip);
73 std::string getEcuName();
75 void setAppIdToEcuName(std::string appid, std::string ecu_name);
76 void setAppIdToReceivedEcuName(std::string appid);
77 void callOnReceivedHandler(json_object *j_out);
79 int connectToServer(std::string ecu_name);
80 int connectedToServer(int socket);
81 void connectionTimeLimit();
83 int serverAccept(int socket);
84 int receive(json_object** j_out, int *j_cnt, int socket);
88 std::string received_ecu_name;
89 ReceivedHandler onReceived;
90 std::string syndDrawingAppId;
93 std::string received_ecu;
101 std::unordered_map<std::string, SocketInfo> wm_socket;
102 std::unordered_map<std::string, std::string> appid2ecuName;
104 int initializeServer();
105 int initializeClient(std::string ecu_name);
106 int loadTimeoutConfigFile();
107 int loadConnectionConfigFile();
109 int send(json_object* j_in, std::string ecu_name);
111 uint64_t getNextTimerTime(uint64_t msec);
116 #endif // WM_CONNECTION_HPP