@@ -116,55 +116,62 @@ func (tb *TelemetryBuffer) StartServer() error {
116116 tb .connections = append (tb .connections , conn )
117117 tb .mutex .Unlock ()
118118 go func () {
119+ defer func () {
120+ var index int
121+ var value net.Conn
122+ var found bool
123+
124+ tb .mutex .Lock ()
125+ defer tb .mutex .Unlock ()
126+
127+ for index , value = range tb .connections {
128+ if value == conn {
129+ conn .Close ()
130+ found = true
131+ break
132+ }
133+ }
134+
135+ if found {
136+ tb .connections = remove (tb .connections , index )
137+ }
138+ }()
139+
119140 for {
120141 reportStr , err := read (conn )
121- if err == nil {
122- var tmp map [string ]interface {}
123- err = json .Unmarshal (reportStr , & tmp )
142+ if err != nil {
143+ return
144+ }
145+ var tmp map [string ]interface {}
146+ err = json .Unmarshal (reportStr , & tmp )
147+ if err != nil {
148+ if tb .logger != nil {
149+ tb .logger .Error ("StartServer: unmarshal error" , zap .Error (err ))
150+ } else {
151+ log .Logf ("StartServer: unmarshal error:%v" , err )
152+ }
153+ return
154+ }
155+ if _ , ok := tmp ["CniSucceeded" ]; ok {
156+ var cniReport CNIReport
157+ err = json .Unmarshal ([]byte (reportStr ), & cniReport )
124158 if err != nil {
125- if tb .logger != nil {
126- tb .logger .Error ("StartServer: unmarshal error" , zap .Error (err ))
127- } else {
128- log .Logf ("StartServer: unmarshal error:%v" , err )
129- }
130159 return
131160 }
132- if _ , ok := tmp ["CniSucceeded" ]; ok {
133- var cniReport CNIReport
134- json .Unmarshal ([]byte (reportStr ), & cniReport )
135- tb .data <- cniReport
136- } else if _ , ok := tmp ["Metric" ]; ok {
137- var aiMetric AIMetric
138- json .Unmarshal ([]byte (reportStr ), & aiMetric )
139- tb .data <- aiMetric
140- } else {
141- if tb .logger != nil {
142- tb .logger .Info ("StartServer: default" , zap .Any ("case" , tmp ))
143- } else {
144- log .Logf ("StartServer: default case:%+v..." , tmp )
145- }
161+ tb .data <- cniReport
162+ } else if _ , ok := tmp ["Metric" ]; ok {
163+ var aiMetric AIMetric
164+ err = json .Unmarshal ([]byte (reportStr ), & aiMetric )
165+ if err != nil {
166+ return
146167 }
168+ tb .data <- aiMetric
147169 } else {
148- var index int
149- var value net.Conn
150- var found bool
151-
152- tb .mutex .Lock ()
153- defer tb .mutex .Unlock ()
154-
155- for index , value = range tb .connections {
156- if value == conn {
157- conn .Close ()
158- found = true
159- break
160- }
161- }
162-
163- if found {
164- tb .connections = remove (tb .connections , index )
170+ if tb .logger != nil {
171+ tb .logger .Info ("StartServer: default" , zap .Any ("case" , tmp ))
172+ } else {
173+ log .Logf ("StartServer: default case:%+v..." , tmp )
165174 }
166-
167- return
168175 }
169176 }
170177 }()
0 commit comments