Open No-SilverBullet opened 3 weeks ago
The changes made across multiple files in the repository involve enhancements and adjustments to the TCP client connection management, specifically regarding the reconnection logic. This includes renaming and reorganizing constants, updating the reconnection function to use new parameters, adding support for maximum reconnect attempts, refining error handling for setting deadlines, and adjusting configuration and initialization to support these new options.
File Path | Change Summary |
---|---|
transport/client.go |
Reorganized constants, updated reconnection logic, and refactored variables for clarity in reconnection attempts. |
transport/options.go |
Added maxReconnectAttempts field in ClientOptions , and introduced the WithReconnectAttempts option. |
transport/session.go |
Improved stop() method to separately handle and log errors for setting connection read and write deadlines. |
examples/echo/tcp-echo/client/app/config.go |
Added TcpMaxReconnectAttempts field to GettySessionParam . |
examples/echo/tcp-echo/client/app/main.go |
Updated initClient function to include getty.WithReconnectAttempts option based on new configuration. |
sequenceDiagram
participant Client as Client
participant Server as Server
participant Config as Config
participant Logger as Logger
Client->>Config: Load GettySessionParam
Config-->>Client: TcpMaxReconnectAttempts
Client->>Server: Connect
alt Successful Connection
Server-->>Client: Acknowledge
else Connection Fails
Client->>Logger: Log Connection Failed
loop MaxReconnectAttempts
Client->>Server: Reconnect Attempt
alt Connection Successful
Server-->>Client: Acknowledge
break
else Connection Fails
Client->>Logger: Log Failed Attempt
end
end
Server-->>Client: Max Attempts Reached
end
Client->>Logger: Log Final Status
In circuits of code, we strive and connect, Reaching out again when paths are wrecked. With constants anew and errors confined, TCP whispers, a dance so refined. Retry, reconnect, with grace we align, Ensuring the data flows, every time.
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
@AlexStocks 雨哥,看着 reconnect 那边的逻辑其实可以加个 issue,太多参数都是临时变量,不利于维护。其实变成 client 里面的参数会更好一点。
@AlexStocks 雨哥,看着 reconnect 那边的逻辑其实可以加个 issue,太多参数都是临时变量,不利于维护。其实变成 client 里面的参数会更好一点。
我把里面的一些变量调整为短变量申明的方式,这样看上去可能会好一点。然后除了maxReconnectAttempts(这个参数是client-side需要关心的参数,其他都不需要放到client里)
What this PR does:
rename the variables in TCP reconnect function and some default constants.
1.rename constant 'reconnectInterval' to defaultReconnectInterval and 'maxTimes' to defaultMaxReconnectAttempts, indicates that these two constants are the default settings.
2.rename vars in reConnect():
Which issue(s) this PR fixes: NONE
Special notes for your reviewer: NONE Does this PR introduce a user-facing change?:
Summary by CodeRabbit
New Features
Improvements