MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / makeReadTask

Function makeReadTask

pkg/console/internal/events/tasks.go:37–66  ·  view source on GitHub ↗
(
	conn *websocket.Conn, m eventsmux.Interface, rateLimit func() error, cancel func(error),
)

Source from the content-addressed store, hash-verified

35}
36
37func makeReadTask(
38 conn *websocket.Conn, m eventsmux.Interface, rateLimit func() error, cancel func(error),
39) func(context.Context) error {
40 return func(ctx context.Context) (err error) {
41 defer func() { cancel(err) }()
42 defer func() {
43 if closeErr := (websocket.CloseError{}); errors.As(err, &closeErr) {
44 log.FromContext(ctx).WithFields(log.Fields(
45 "code", closeErr.Code,
46 "reason", closeErr.Reason,
47 )).Debug("WebSocket closed")
48 err = io.EOF
49 }
50 }()
51 for {
52 var request protocol.RequestWrapper
53 if err := wsjson.Read(ctx, conn, &request); err != nil {
54 return err
55 }
56 if err := rateLimit(); err != nil {
57 return err
58 }
59 select {
60 case <-ctx.Done():
61 return ctx.Err()
62 case m.Requests() <- request.Contents:
63 }
64 }
65 }
66}
67
68func makeWriteTask(conn *websocket.Conn, m eventsmux.Interface, cancel func(error)) func(context.Context) error {
69 return func(ctx context.Context) (err error) {

Callers 1

handleEventsMethod · 0.85

Calls 9

FromContextFunction · 0.92
FieldsFunction · 0.92
DoneMethod · 0.80
DebugMethod · 0.65
WithFieldsMethod · 0.65
RequestsMethod · 0.65
AsMethod · 0.45
ReadMethod · 0.45
ErrMethod · 0.45

Tested by

no test coverage detected