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

Method writeFramePayload

write.go:375–409  ·  view source on GitHub ↗
(p []byte)

Source from the content-addressed store, hash-verified

373}
374
375func (c *Conn) writeFramePayload(p []byte) (n int, err error) {
376 defer errd.Wrap(&err, "failed to write frame payload")
377
378 if !c.writeHeader.masked {
379 return c.bw.Write(p)
380 }
381
382 maskKey := c.writeHeader.maskKey
383 for len(p) > 0 {
384 // If the buffer is full, we need to flush.
385 if c.bw.Available() == 0 {
386 err = c.bw.Flush()
387 if err != nil {
388 return n, err
389 }
390 }
391
392 // Start of next write in the buffer.
393 i := c.bw.Buffered()
394
395 j := min(len(p), c.bw.Available())
396
397 _, err := c.bw.Write(p[:j])
398 if err != nil {
399 return n, err
400 }
401
402 maskKey = mask(c.writeBuf[i:c.bw.Buffered()], maskKey)
403
404 p = p[j:]
405 n += j
406 }
407
408 return n, nil
409}
410
411// extractBufioWriterBuf grabs the []byte backing a *bufio.Writer
412// and returns it.

Callers 1

writeFrameMethod · 0.95

Calls 3

WrapFunction · 0.92
maskFunction · 0.70
WriteMethod · 0.45

Tested by

no test coverage detected