@@ -55,73 +55,55 @@ class BridgeTCPClient : public Client {
5555
5656 int connect (const char *host, uint16_t port) override {
5757
58- if (_connected) return 0 ;
59-
60- String hostname = host;
61-
6258 k_mutex_lock (&client_mutex, K_FOREVER);
6359
64- const bool resp = bridge->call (TCP_CONNECT_METHOD, hostname, port).result (connection_id);
65-
66- if (!resp) {
67- _connected = false ;
68- k_mutex_unlock (&client_mutex);
69- return -1 ;
70- }
71- _connected = true ;
60+ String hostname = host;
61+ const bool ok = _connected || bridge->call (TCP_CONNECT_METHOD, hostname, port).result (connection_id);
62+ _connected = ok;
7263
7364 k_mutex_unlock (&client_mutex);
7465
75- return 0 ;
66+ return ok? 0 : - 1 ;
7667 }
7768
7869 int connectSSL (const char *host, uint16_t port, const char *ca_cert) {
7970
80- if (_connected) return 0 ;
71+ k_mutex_lock (&client_mutex, K_FOREVER) ;
8172
8273 String hostname = host;
8374 String ca_cert_str = ca_cert;
8475
85- k_mutex_lock (&client_mutex, K_FOREVER);
86-
87- const bool resp = bridge->call (TCP_CONNECT_SSL_METHOD, hostname, port, ca_cert_str).result (connection_id);
88-
89- if (!resp) {
90- _connected = false ;
91- k_mutex_unlock (&client_mutex);
92- return -1 ;
93- }
94- _connected = true ;
95-
76+ const bool ok = _connected || bridge->call (TCP_CONNECT_SSL_METHOD, hostname, port, ca_cert_str).result (connection_id);
77+ _connected = ok;
9678 k_mutex_unlock (&client_mutex);
97- return 0 ;
79+
80+ return ok? 0 : -1 ;
9881 }
9982
100- uint32_t getId () const {
101- return connection_id;
83+ uint32_t getId () {
84+ k_mutex_lock (&client_mutex, K_FOREVER);
85+ const uint32_t out = connection_id;
86+ k_mutex_unlock (&client_mutex);
87+ return out;
10288 }
10389
10490 size_t write (uint8_t c) override {
10591 return write (&c, 1 );
10692 }
10793
108- size_t write (const uint8_t *buf , size_t size) override {
94+ size_t write (const uint8_t *buffer , size_t size) override {
10995
110- if (!_connected ) return 0 ;
96+ if (!connected () ) return 0 ;
11197
11298 MsgPack::arr_t <uint8_t > payload;
11399
114100 for (size_t i = 0 ; i < size; ++i) {
115- payload.push_back (buf [i]);
101+ payload.push_back (buffer [i]);
116102 }
117103
118104 size_t written;
119- const bool ret = bridge->call (TCP_WRITE_METHOD, connection_id, payload).result (written);
120- if (ret) {
121- return written;
122- }
123-
124- return 0 ;
105+ const bool ok = bridge->call (TCP_WRITE_METHOD, connection_id, payload).result (written);
106+ return ok? written : 0 ;
125107 }
126108
127109 int available () override {
@@ -151,12 +133,12 @@ class BridgeTCPClient : public Client {
151133
152134 int peek () override {
153135 k_mutex_lock (&client_mutex, K_FOREVER);
136+ int out = -1 ;
154137 if (temp_buffer.available ()) {
155- k_mutex_unlock (&client_mutex);
156- return temp_buffer.peek ();
138+ out = temp_buffer.peek ();
157139 }
158140 k_mutex_unlock (&client_mutex);
159- return - 1 ;
141+ return out ;
160142 }
161143
162144 void flush () override {
@@ -170,37 +152,35 @@ class BridgeTCPClient : public Client {
170152 void stop () override {
171153 k_mutex_lock (&client_mutex, K_FOREVER);
172154 String msg;
173- const bool resp = bridge->call (TCP_CLOSE_METHOD, connection_id).result (msg);
174- if (resp) {
175- _connected = false ;
155+ if (_connected) {
156+ _connected = !bridge->call (TCP_CLOSE_METHOD, connection_id).result (msg);
176157 }
177158 k_mutex_unlock (&client_mutex);
178159 }
179160
180161 uint8_t connected () override {
181- if (_connected) return 1 ;
182- return 0 ;
162+ k_mutex_lock (&client_mutex, K_FOREVER);
163+ const uint8_t out = _connected? 1 : 0 ;
164+ k_mutex_unlock (&client_mutex);
165+ return out;
183166 }
184167
185168 operator bool () override {
186169 return available () || connected ();
187170 }
188171
189- // friend class BridgeTCPServer;
190-
191172 using Print::write;
192173
193174private:
194175 void _read (size_t size) {
195176
196- if (size == 0 || !_connected ) return ;
177+ if (size == 0 ) return ;
197178
198179 k_mutex_lock (&client_mutex, K_FOREVER);
199180
200181 MsgPack::arr_t <uint8_t > message;
201182 RpcResult async_rpc = bridge->call (TCP_READ_METHOD, connection_id, size);
202-
203- const bool ret = async_rpc.result (message);
183+ const bool ret = _connected && async_rpc.result (message);
204184
205185 if (ret) {
206186 for (size_t i = 0 ; i < message.size (); ++i) {
0 commit comments