File tree Expand file tree Collapse file tree 2 files changed +35
-8
lines changed
Expand file tree Collapse file tree 2 files changed +35
-8
lines changed Original file line number Diff line number Diff line change @@ -154,7 +154,24 @@ func (c *NettyClient) SetEventHandler(handler EventHandler) {
154154}
155155
156156func (c * NettyClient ) triggerEvent (eventType EventType , err error ) {
157- log .Printf ("Triggering event: %d, error: %v" , eventType , err )
157+ eventName := ""
158+ switch eventType {
159+ case EventConnected :
160+ eventName = "Connected"
161+ case EventDisconnected :
162+ eventName = "Disconnected"
163+ case EventConnectFailed :
164+ eventName = "ConnectFailed"
165+ default :
166+ eventName = fmt .Sprintf ("Unknown(%d)" , eventType )
167+ }
168+
169+ if err != nil {
170+ log .Printf ("Triggering event: %s, error: %v" , eventName , err )
171+ } else {
172+ log .Printf ("Triggering event: %s" , eventName )
173+ }
174+
158175 if c .eventHandler != nil {
159176 c .eventHandler (Event {
160177 Type : eventType ,
Original file line number Diff line number Diff line change @@ -19,6 +19,8 @@ package transport
1919
2020import (
2121 "fmt"
22+ "log"
23+ "time"
2224
2325 pb "hertzbeat.apache.org/hertzbeat-collector-go/api"
2426)
@@ -80,17 +82,25 @@ func NewGoOfflineProcessor(client *NettyClient) *GoOfflineProcessor {
8082}
8183
8284func (p * GoOfflineProcessor ) Process (msg * pb.Message ) (* pb.Message , error ) {
83- // Handle go offline message - shutdown the client
84- if p .client != nil {
85- // Stop heartbeat and close connection
86- p .client .Shutdown ()
87- }
88- return & pb.Message {
85+ // Handle go offline message - first return response, then shutdown
86+ // Create response first
87+ response := & pb.Message {
8988 Type : pb .MessageType_GO_OFFLINE ,
9089 Direction : pb .Direction_RESPONSE ,
9190 Identity : msg .Identity ,
9291 Msg : []byte ("offline ack" ),
93- }, nil
92+ }
93+
94+ // Schedule shutdown after a brief delay to allow response to be sent
95+ if p .client != nil {
96+ go func () {
97+ time .Sleep (100 * time .Millisecond ) // Brief delay to ensure response is sent
98+ log .Printf ("Shutting down client as requested by manager" )
99+ p .client .Shutdown ()
100+ }()
101+ }
102+
103+ return response , nil
94104}
95105
96106// GoCloseProcessor handles go close messages
You can’t perform that action at this time.
0 commit comments