MCPcopy Index your code
hub / github.com/coder/coder / reqLoop

Method reqLoop

tailnet/peer.go:124–145  ·  view source on GitHub ↗
(ctx context.Context, logger slog.Logger, handler func(context.Context, *peer, *proto.CoordinateRequest) error)

Source from the content-addressed store, hash-verified

122}
123
124func (p *peer) reqLoop(ctx context.Context, logger slog.Logger, handler func(context.Context, *peer, *proto.CoordinateRequest) error) error {
125 for {
126 select {
127 case <-ctx.Done():
128 logger.Debug(ctx, "peerReadLoop context done")
129 return ctx.Err()
130 case req, ok := <-p.reqs:
131 if !ok {
132 logger.Debug(ctx, "peerReadLoop channel closed")
133 return nil
134 }
135 logger.Debug(ctx, "peerReadLoop got request")
136 if err := handler(ctx, p, req); err != nil {
137 if xerrors.Is(err, ErrAlreadyRemoved) || xerrors.Is(err, ErrClosed) {
138 return nil
139 }
140 logger.Error(ctx, "peerReadLoop error handling request", slog.Error(err), slog.F("request", req))
141 return err
142 }
143 }
144 }
145}
146
147func (p *peer) htmlDebug() HTMLPeer {
148 node := "<nil>"

Callers 1

CoordinateMethod · 0.95

Calls 5

ErrMethod · 0.80
handlerFunction · 0.50
DoneMethod · 0.45
IsMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected