MCPcopy
hub / github.com/q191201771/lal / ChunkAndWrite

Method ChunkAndWrite

pkg/rtmp/message_packer.go:55–75  ·  view source on GitHub ↗
(writer io.Writer, csid int, typeid uint8, streamid int)

Source from the content-addressed store, hash-verified

53}
54
55func (packer *MessagePacker) ChunkAndWrite(writer io.Writer, csid int, typeid uint8, streamid int) error {
56 bodyLen := packer.b.Len() - 12
57
58 if bodyLen <= LocalChunkSize {
59 // 如果一个chunk就够放(大部分信令都是这种情况),我们直接在buffer前面预留的空间写入chunk header内容,避免造成拷贝
60 writeSingleChunkHeader(packer.b.Bytes(), csid, bodyLen, typeid, streamid)
61 _, err := packer.b.WriteTo(writer)
62 return err
63 }
64
65 var h base.RtmpHeader
66 h.Csid = csid
67 h.MsgLen = uint32(bodyLen)
68 h.MsgTypeId = typeid
69 h.MsgStreamId = streamid
70 h.TimestampAbs = 0
71 chunks := Message2Chunks(packer.b.Bytes()[12:], &h)
72 packer.b.Reset()
73 _, err := writer.Write(chunks)
74 return err
75}
76
77func (packer *MessagePacker) writeProtocolControlMessage(writer io.Writer, typeid uint8, val int) error {
78 packer.b.ModWritePos(12)

Callers 15

writePeerBandwidthMethod · 0.95
writeConnectMethod · 0.95
writeConnectResultMethod · 0.95
writeCreateStreamMethod · 0.95
writePlayMethod · 0.95
writePublishMethod · 0.95
writeOnStatusPublishMethod · 0.95
writeOnStatusPlayMethod · 0.95
writeStreamIsRecordedMethod · 0.95
writeStreamBeginMethod · 0.95

Calls 7

writeSingleChunkHeaderFunction · 0.85
Message2ChunksFunction · 0.85
BytesMethod · 0.80
WriteToMethod · 0.80
LenMethod · 0.65
ResetMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected