mirror of
https://github.com/zhangpeihao/gortmp
synced 2025-09-26 20:01:11 +08:00
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
// Copyright 2013, zhangpeihao All rights reserved.
|
|
|
|
package gortmp
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/zhangpeihao/log"
|
|
)
|
|
|
|
// Message
|
|
//
|
|
// The different types of messages that are exchanged between the server
|
|
// and the client include audio messages for sending the audio data,
|
|
// video messages for sending video data, data messages for sending any
|
|
// user data, shared object messages, and command messages.
|
|
type Message struct {
|
|
ChunkStreamID uint32
|
|
Timestamp uint32
|
|
Size uint32
|
|
Type uint8
|
|
StreamID uint32
|
|
Buf *bytes.Buffer
|
|
IsInbound bool
|
|
AbsoluteTimestamp uint32
|
|
}
|
|
|
|
func NewMessage(csi uint32, t uint8, sid uint32, ts uint32, data []byte) *Message {
|
|
message := &Message{
|
|
ChunkStreamID: csi,
|
|
Type: t,
|
|
StreamID: sid,
|
|
Timestamp: ts,
|
|
AbsoluteTimestamp: ts,
|
|
Buf: new(bytes.Buffer),
|
|
}
|
|
if data != nil {
|
|
message.Buf.Write(data)
|
|
message.Size = uint32(len(data))
|
|
}
|
|
return message
|
|
}
|
|
|
|
func (message *Message) Dump(name string) {
|
|
logger.ModulePrintf(logHandler, log.LOG_LEVEL_DEBUG,
|
|
"Message(%s){CID: %d, Type: %d, Timestamp: %d, Size: %d, StreamID: %d, IsInbound: %t, AbsoluteTimestamp: %d}\n", name,
|
|
message.ChunkStreamID, message.Type, message.Timestamp, message.Size, message.StreamID, message.IsInbound, message.AbsoluteTimestamp)
|
|
}
|
|
|
|
// The length of remain data to read
|
|
func (message *Message) Remain() uint32 {
|
|
if message.Buf == nil {
|
|
return message.Size
|
|
}
|
|
return message.Size - uint32(message.Buf.Len())
|
|
}
|