@@ -11,10 +11,6 @@ import (
11
11
"sync/atomic"
12
12
13
13
"github.com/segmentio/encoding/json"
14
-
15
- "go.lsp.dev/pkg/event"
16
- "go.lsp.dev/pkg/event/label"
17
- "go.lsp.dev/pkg/event/tag"
18
14
)
19
15
20
16
// Conn is the common interface to jsonrpc clients and servers.
@@ -95,17 +91,6 @@ func (c *conn) Call(ctx context.Context, method string, params, result interface
95
91
return id , fmt .Errorf ("marshaling call parameters: %w" , err )
96
92
}
97
93
98
- ctx , done := event .Start (ctx , method ,
99
- tag .Method .Of (method ),
100
- tag .RPCDirection .Of (tag .Outbound ),
101
- tag .RPCID .Of (fmt .Sprintf ("%q" , id )),
102
- )
103
- defer func () {
104
- recordStatus (ctx , err )
105
- done ()
106
- }()
107
- event .Metric (ctx , tag .Started .Of (1 ))
108
-
109
94
// We have to add ourselves to the pending map before we send, otherwise we
110
95
// are racing the response. Also add a buffer to rchan, so that if we get a
111
96
// wire response between the time this call is cancelled and id is deleted
@@ -123,8 +108,7 @@ func (c *conn) Call(ctx context.Context, method string, params, result interface
123
108
}()
124
109
125
110
// now we are ready to send
126
- n , err := c .write (ctx , call )
127
- event .Metric (ctx , tag .SentBytes .Of (n ))
111
+ _ , err = c .write (ctx , call )
128
112
if err != nil {
129
113
// sending failed, we will never get a response, so don't leave it pending
130
114
return id , err
@@ -162,28 +146,13 @@ func (c *conn) Notify(ctx context.Context, method string, params interface{}) (e
162
146
return fmt .Errorf ("marshaling notify parameters: %w" , err )
163
147
}
164
148
165
- ctx , done := event .Start (ctx , method ,
166
- tag .Method .Of (method ),
167
- tag .RPCDirection .Of (tag .Outbound ),
168
- )
169
- defer func () {
170
- recordStatus (ctx , err )
171
- done ()
172
- }()
173
-
174
- event .Metric (ctx , tag .Started .Of (1 ))
175
- n , err := c .write (ctx , notify )
176
- event .Metric (ctx , tag .SentBytes .Of (n ))
149
+ _ , err = c .write (ctx , notify )
177
150
178
151
return err
179
152
}
180
153
181
154
func (c * conn ) replier (req Message , spanDone func ()) Replier {
182
155
return func (ctx context.Context , result interface {}, err error ) error {
183
- defer func () {
184
- recordStatus (ctx , err )
185
- spanDone ()
186
- }()
187
156
call , ok := req .(* Call )
188
157
if ! ok {
189
158
// request was a notify, no need to respond
@@ -195,8 +164,7 @@ func (c *conn) replier(req Message, spanDone func()) Replier {
195
164
return err
196
165
}
197
166
198
- n , err := c .write (ctx , response )
199
- event .Metric (ctx , tag .SentBytes .Of (n ))
167
+ _ , err = c .write (ctx , response )
200
168
if err != nil {
201
169
// TODO(iancottrell): if a stream write fails, we really need to shut down the whole stream
202
170
return err
@@ -226,7 +194,7 @@ func (c *conn) run(ctx context.Context, handler Handler) {
226
194
227
195
for {
228
196
// get the next message
229
- msg , n , err := c .stream .Read (ctx )
197
+ msg , _ , err := c .stream .Read (ctx )
230
198
if err != nil {
231
199
// The stream failed, we cannot continue.
232
200
c .fail (err )
@@ -235,27 +203,7 @@ func (c *conn) run(ctx context.Context, handler Handler) {
235
203
236
204
switch msg := msg .(type ) {
237
205
case Request :
238
- labels := []label.Label {
239
- tag .Method .Of (msg .Method ()),
240
- tag .RPCDirection .Of (tag .Inbound ),
241
- {}, // reserved for ID if present
242
- }
243
- if call , ok := msg .(* Call ); ok {
244
- labels [len (labels )- 1 ] = tag .RPCID .Of (fmt .Sprintf ("%q" , call .ID ()))
245
- } else {
246
- labels = labels [:len (labels )- 1 ]
247
- }
248
-
249
- reqCtx , spanDone := event .Start (ctx , msg .Method (), labels ... )
250
- event .Metric (reqCtx ,
251
- tag .Started .Of (1 ),
252
- tag .ReceivedBytes .Of (n ),
253
- )
254
-
255
- if err := handler (reqCtx , c .replier (msg , spanDone ), msg ); err != nil {
256
- // delivery failed, not much we can do
257
- event .Error (reqCtx , "jsonrpc2 message delivery failed" , err )
258
- }
206
+ handler (ctx , c .replier (msg , func () {}), msg )
259
207
260
208
case * Response :
261
209
// If method is not set, this should be a response, in which case we must
@@ -293,12 +241,3 @@ func (c *conn) fail(err error) {
293
241
c .err .Store (err )
294
242
c .stream .Close ()
295
243
}
296
-
297
- // recordStatus records the status code based on the error.
298
- func recordStatus (ctx context.Context , err error ) {
299
- if err != nil {
300
- event .Label (ctx , tag .StatusCode .Of ("ERROR" ))
301
- } else {
302
- event .Label (ctx , tag .StatusCode .Of ("OK" ))
303
- }
304
- }
0 commit comments