protocol

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const MaxPayloadSize = 8 * 1024 * 1024

MaxPayloadSize is the maximum allowed payload length (8 MiB, per Murmur). ReadPacket rejects larger payloads to prevent memory exhaustion.

View Source
const TCPHeaderSize = 6

TCPHeaderSize is the size of the Mumble TCP packet header (type + length).

Variables

View Source
var (
	ErrUnknownMessageType = errors.New("protocol: unknown message type")
	ErrUDPTunnelPayload   = errors.New("protocol: UDPTunnel has raw payload, use ReadPacket")
)
View Source
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

type Message = messages.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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL