Skip to content

Commit e191122

Browse files
committed
feat: udp and tcp read_timeout
1 parent 43bf054 commit e191122

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/tcp_client.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class BridgeTCPClient : public Client {
3232

3333
BridgeClass* bridge;
3434
uint32_t connection_id{};
35+
uint32_t read_timeout = 0;
3536
RingBufferN<BufferSize> temp_buffer;
3637
struct k_mutex client_mutex{};
3738
bool _connected = false;
@@ -49,6 +50,12 @@ class BridgeTCPClient : public Client {
4950
return true;
5051
}
5152

53+
void setTimeout(const uint32_t ms) {
54+
k_mutex_lock(&client_mutex, K_FOREVER);
55+
read_timeout = ms;
56+
k_mutex_unlock(&client_mutex);
57+
}
58+
5259
int connect(IPAddress ip, uint16_t port) override {
5360
return connect(ip.toString().c_str(), port);
5461
}
@@ -198,7 +205,7 @@ class BridgeTCPClient : public Client {
198205
k_mutex_lock(&client_mutex, K_FOREVER);
199206

200207
MsgPack::arr_t<uint8_t> message;
201-
RpcResult async_rpc = bridge->call(TCP_READ_METHOD, connection_id, size);
208+
RpcResult async_rpc = bridge->call(TCP_READ_METHOD, connection_id, size, read_timeout);
202209

203210
const bool ret = async_rpc.result(message);
204211

src/udp_bridge.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class BridgeUDP final: public UDP {
3030

3131
BridgeClass* bridge;
3232
uint32_t connection_id{};
33+
uint32_t read_timeout = 0;
3334
RingBufferN<BufferSize> temp_buffer;
3435
struct k_mutex udp_mutex{};
3536
bool _connected = false;
@@ -67,6 +68,12 @@ class BridgeUDP final: public UDP {
6768
return ok? 1 : 0;
6869
}
6970

71+
void setTimeout(const uint32_t ms) {
72+
k_mutex_lock(&udp_mutex, K_FOREVER);
73+
read_timeout = ms;
74+
k_mutex_unlock(&udp_mutex);
75+
}
76+
7077
uint8_t beginMulticast(IPAddress ip, uint16_t port) override {
7178

7279
if (!init()) {
@@ -257,7 +264,7 @@ class BridgeUDP final: public UDP {
257264
k_mutex_lock(&udp_mutex, K_FOREVER);
258265

259266
MsgPack::arr_t<uint8_t> message;
260-
RpcResult async_res = bridge->call(UDP_READ_METHOD, connection_id, size);
267+
RpcResult async_res = bridge->call(UDP_READ_METHOD, connection_id, size, read_timeout);
261268
const bool ret = _connected && async_res.result(message);
262269

263270
if (ret) {

0 commit comments

Comments
 (0)