MCPcopy
hub / github.com/coder/websocket / reader

Method reader

read.go:369–396  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

367}
368
369func (c *Conn) reader(ctx context.Context) (_ MessageType, _ io.Reader, err error) {
370 defer errd.Wrap(&err, "failed to get reader")
371
372 err = c.readMu.lock(ctx)
373 if err != nil {
374 return 0, nil, err
375 }
376 defer c.readMu.unlock()
377
378 if !c.msgReader.fin {
379 return 0, nil, errors.New("previous message not read to completion")
380 }
381
382 h, err := c.readLoop(ctx)
383 if err != nil {
384 return 0, nil, err
385 }
386
387 if h.opcode == opContinuation {
388 err := errors.New("received continuation frame without text or binary frame")
389 c.writeError(StatusProtocolError, err)
390 return 0, nil, err
391 }
392
393 c.msgReader.reset(ctx, h)
394
395 return MessageType(h.opcode), c.msgReader, nil
396}
397
398type msgReader struct {
399 c *Conn

Callers 1

ReaderMethod · 0.95

Calls 7

readLoopMethod · 0.95
writeErrorMethod · 0.95
WrapFunction · 0.92
lockMethod · 0.80
MessageTypeTypeAlias · 0.70
unlockMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected