Documentation
¶
Index ¶
Constants ¶
const MaxPayloadSize = 8 * 1024 * 1024
MaxPayloadSize is the maximum allowed payload length (8 MiB, per Murmur). ReadPacket rejects larger payloads to prevent memory exhaustion.
const TCPHeaderSize = 6
TCPHeaderSize is the size of the Mumble TCP packet header (type + length).
Variables ¶
var ( ErrUnknownMessageType = errors.New("protocol: unknown message type") ErrUDPTunnelPayload = errors.New("protocol: UDPTunnel has raw payload, use ReadPacket") )
var ErrPayloadTooLarge = errors.New("protocol: payload exceeds maximum size")
ErrPayloadTooLarge is returned by ReadPacket when payload exceeds MaxPayloadSize.
Functions ¶
func WriteMessage ¶
func WriteMessage(w io.Writer, msgType MessageType, msg Message) error
WriteMessage marshals the message and writes it as a typed packet.
func WritePacket ¶
func WritePacket(w io.Writer, msgType MessageType, payload []byte) error
WritePacket writes a typed packet with 6-byte header (big-endian uint16 type, uint32 length) plus payload.
Types ¶
type HandlerTable ¶
type HandlerTable []MessageHandler
HandlerTable is an array-indexed dispatch table for message types. Index by uint16(msgType). Nil entries are no-ops.
func NewHandlerTable ¶
func NewHandlerTable() HandlerTable
NewHandlerTable returns a pre-sized handler table with length MessageCount.
func (HandlerTable) Dispatch ¶
func (t HandlerTable) Dispatch(msgType MessageType, payload []byte, ctx interface{}) error
Dispatch calls the handler for the given message type if one is registered.
type Message ¶
Message is an alias for the messages package interface.
func ReadMessage ¶
func ReadMessage(msgType MessageType, payload []byte) (Message, error)
ReadMessage unmarshals the payload into the appropriate message type.
type MessageHandler ¶
type MessageHandler func(msgType MessageType, payload []byte, ctx interface{}) error
MessageHandler is a function that handles a single message type. It receives the message type, raw payload, and a context (e.g., connection). Use protocol.ReadMessage to unmarshal into native message types.
type MessageType ¶
type MessageType uint16
MessageType is the 16-bit Mumble control message type ID. See docs/protocol/control-messages.md for the full catalog.
const ( MessageVersion MessageType = 0 MessageUDPTunnel MessageType = 1 MessageAuthenticate MessageType = 2 MessagePing MessageType = 3 MessageReject MessageType = 4 MessageServerSync MessageType = 5 MessageChannelRemove MessageType = 6 MessageChannelState MessageType = 7 MessageUserRemove MessageType = 8 MessageUserState MessageType = 9 MessageBanList MessageType = 10 MessageTextMessage MessageType = 11 MessagePermissionDenied MessageType = 12 MessageACL MessageType = 13 MessageQueryUsers MessageType = 14 MessageCryptSetup MessageType = 15 MessageContextActionModify MessageType = 16 MessageContextAction MessageType = 17 MessageUserList MessageType = 18 MessageVoiceTarget MessageType = 19 MessagePermissionQuery MessageType = 20 MessageCodecVersion MessageType = 21 MessageUserStats MessageType = 22 MessageRequestBlob MessageType = 23 MessageServerConfig MessageType = 24 MessageSuggestConfig MessageType = 25 MessagePluginDataTransmission MessageType = 26 // MessageCount is the number of control message types (0-26). // Use for pre-sized handler tables. MessageCount = 27 )
func ReadPacket ¶
func ReadPacket(r io.Reader) (MessageType, []byte, error)
ReadPacket reads the 6-byte header and returns message type, payload, and error.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package messages provides native Go structs for Mumble protocol messages.
|
Package messages provides native Go structs for Mumble protocol messages. |
|
Package wire provides hand-written protobuf wire-format encoding for Mumble protocol messages.
|
Package wire provides hand-written protobuf wire-format encoding for Mumble protocol messages. |