MCPcopy
hub / github.com/gorilla/websocket / Read

Method Read

conn.go:1038–1083  ·  view source on GitHub ↗
(b []byte)

Source from the content-addressed store, hash-verified

1036type messageReader struct{ c *Conn }
1037
1038func (r *messageReader) Read(b []byte) (int, error) {
1039 c := r.c
1040 if c.messageReader != r {
1041 return 0, io.EOF
1042 }
1043
1044 for c.readErr == nil {
1045
1046 if c.readRemaining > 0 {
1047 if int64(len(b)) > c.readRemaining {
1048 b = b[:c.readRemaining]
1049 }
1050 n, err := c.br.Read(b)
1051 c.readErr = hideTempErr(err)
1052 if c.isServer {
1053 c.readMaskPos = maskBytes(c.readMaskKey, c.readMaskPos, b[:n])
1054 }
1055 rem := c.readRemaining
1056 rem -= int64(n)
1057 c.setReadRemaining(rem)
1058 if c.readRemaining > 0 && c.readErr == io.EOF {
1059 c.readErr = errUnexpectedEOF
1060 }
1061 return n, c.readErr
1062 }
1063
1064 if c.readFinal {
1065 c.messageReader = nil
1066 return 0, io.EOF
1067 }
1068
1069 frameType, err := c.advanceFrame()
1070 switch {
1071 case err != nil:
1072 c.readErr = hideTempErr(err)
1073 case frameType == TextMessage || frameType == BinaryMessage:
1074 c.readErr = errors.New("websocket: internal error, unexpected text or binary in Reader")
1075 }
1076 }
1077
1078 err := c.readErr
1079 if err == io.EOF && c.messageReader == r {
1080 err = errUnexpectedEOF
1081 }
1082 return 0, err
1083}
1084
1085func (r *messageReader) Close() error {
1086 return nil

Callers 1

ReadFromMethod · 0.45

Calls 4

hideTempErrFunction · 0.85
setReadRemainingMethod · 0.80
advanceFrameMethod · 0.80
maskBytesFunction · 0.70

Tested by

no test coverage detected