Skip to content

Commit 099d353

Browse files
committed
1.12.23
fix: 修复使用StdioStream相关的示例没有initialize()的问题; feat: 给TcpClient添加设置断连超时策略函数
1 parent af5db6e commit 099d353

File tree

11 files changed

+23
-1
lines changed

11 files changed

+23
-1
lines changed

examples/main/03_nc_client_and_echo_server/nc_client/app.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ bool App::onInit(const tbox::Json &cfg)
5555
if (!client_->initialize(SockAddr::FromString(js_server.get<std::string>())))
5656
return false;
5757

58+
stdio_->initialize();
59+
5860
client_->bind(stdio_);
5961
stdio_->bind(client_);
6062
return true;

examples/network/tcp_acceptor/tcp_nc_server/tcp_nc_server.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ int main(int argc, char **argv)
6262
SetScopeExitAction([sp_loop] { delete sp_loop; });
6363

6464
StdioStream stdio(sp_loop);
65+
stdio.initialize();
6566
stdio.enable();
6667

6768
set<TcpConnection*> conns;

examples/network/tcp_client/tcp_hex_client/tcp_hex_client.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ int main(int argc, char **argv)
6161
SetScopeExitAction([sp_loop] { delete sp_loop; });
6262

6363
StdioStream stdio(sp_loop);
64+
stdio.initialize();
6465
stdio.enable();
6566

6667
TcpClient client(sp_loop);

examples/network/tcp_client/tcp_nc_client/tcp_nc_client.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,15 @@ int main(int argc, char **argv)
6161
SetScopeExitAction([sp_loop] { delete sp_loop; });
6262

6363
StdioStream stdio(sp_loop);
64+
stdio.initialize();
6465
stdio.enable();
6566

6667
TcpClient client(sp_loop);
6768
client.initialize(bind_addr);
69+
//! 设置重新延时策略,如不设置则固定延后1秒
70+
client.setReconnectDelayCalcFunc(
71+
[](int fail_time) { return 1 << std::min(6, fail_time - 1); }
72+
);
6873
client.start();
6974

7075
client.bind(&stdio); //!< client绑定stdio

examples/network/tcp_connector/tcp_nc_client/tcp_nc_client.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ int main(int argc, char **argv)
6262
SetScopeExitAction([sp_loop] { delete sp_loop; });
6363

6464
StdioStream stdio(sp_loop);
65+
stdio.initialize();
6566
stdio.enable();
6667

6768
TcpConnection *sp_curr = nullptr;

examples/network/tcp_server/tcp_nc_server/tcp_nc_server.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ int main(int argc, char **argv)
6060
SetScopeExitAction([sp_loop] { delete sp_loop; });
6161

6262
StdioStream stdio(sp_loop);
63+
stdio.initialize();
6364
stdio.enable();
6465

6566
TcpServer server(sp_loop);

examples/network/uart/uart_tool/uart_tool.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ int main(int argc, char **argv)
5454
return 0;
5555
}
5656

57+
sp_stdio->initialize();
58+
5759
//! 将终端与串口绑定到一起
5860
sp_stdio->bind(sp_uart);
5961
sp_uart->bind(sp_stdio);

examples/run/nc_client/nc_client.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ bool App::onInit(const tbox::Json &cfg)
5555
if (!client_->initialize(SockAddr::FromString(js_server.get<std::string>())))
5656
return false;
5757

58+
stdio_->initialize();
59+
5860
client_->bind(stdio_);
5961
stdio_->bind(client_);
6062
return true;

modules/network/tcp_client.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ void TcpClient::setAutoReconnect(bool enable)
9999
d_->reconnect_enabled = enable;
100100
}
101101

102+
void TcpClient::setReconnectDelayCalcFunc(const ReconnectDelayCalc &func)
103+
{
104+
d_->sp_connector->setReconnectDelayCalcFunc(func);
105+
}
106+
102107
bool TcpClient::start()
103108
{
104109
if (d_->state != State::kInited) {

modules/network/tcp_client.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class TcpClient : public ByteStream {
4747

4848
using ConnectedCallback = std::function<void()>;
4949
using DisconnectedCallback = std::function<void()>;
50+
using ReconnectDelayCalc = std::function<int(int)>;
5051

5152
//!< 状态
5253
enum class State {
@@ -61,6 +62,7 @@ class TcpClient : public ByteStream {
6162
void setConnectedCallback(const ConnectedCallback &cb);
6263
void setDisconnectedCallback(const DisconnectedCallback &cb);
6364
void setAutoReconnect(bool enable);
65+
void setReconnectDelayCalcFunc(const ReconnectDelayCalc &func);
6466

6567
bool start(); //!< 开始连接服务端
6668
void stop(); //!< 如果没有连接则成,则停止连接;否则断开连接

0 commit comments

Comments
 (0)