protocol7

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2025 License: BSD-2-Clause Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PackChunk

func PackChunk(msg messages7.NetMessage, connection *Session) []byte

Types

type Packet

type Packet struct {
	Header   PacketHeader
	Messages []messages7.NetMessage
}

func (*Packet) Pack

func (packet *Packet) Pack(connection *Session) []byte

TODO: return error if maxium packet size is exceeded

func (*Packet) Unpack

func (packet *Packet) Unpack(data []byte) (err error)

Only returns an error if there is invalid huffman compression applied Unknown messages will be unpacked as messages7.Unknown There is no validation no messages will be dropped

type PacketFlags

type PacketFlags struct {
	Connless    bool
	Compression bool
	Resend      bool
	Control     bool
}

func (*PacketFlags) Pack

func (flags *PacketFlags) Pack() []byte

func (*PacketFlags) Unpack

func (flags *PacketFlags) Unpack(packetHeaderRaw []byte) error

type PacketHeader

type PacketHeader struct {
	Flags     PacketFlags
	Ack       int
	NumChunks int
	Token     [4]byte

	// connless
	ResponseToken [4]byte
}

func (*PacketHeader) Pack

func (header *PacketHeader) Pack() []byte

func (*PacketHeader) Unpack

func (header *PacketHeader) Unpack(packet []byte) (err error)

type Session

type Session struct {
	ClientToken [4]byte
	ServerToken [4]byte

	// The amount of vital chunks received
	Ack int

	// The amount of vital chunks sent
	Sequence int

	// The amount of vital chunks acknowledged by the peer
	PeerAck int
}

teeworlds low level protocol keeping track of connection state resends and anti spoof tokens

func NewSession

func NewSession() Session

NewSession creates a new session with default values that can be used to request a new token from the server.

func (*Session) BuildResponse

func (connection *Session) BuildResponse() *Packet

TODO: should this be removed? All of this could be set in Packet.Pack()

func (*Session) CtrlToken

func (connection *Session) CtrlToken() *Packet

func (*Session) MsgStartInfo

func (client *Session) MsgStartInfo() *messages7.ClStartInfo

Jump to

Keyboard shortcuts

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