enet

package module
v0.0.0-...-373a939 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Deinitialize

func Deinitialize()

Deinitialize enet

func Initialize

func Initialize()

Initialize enet

func LinkedVersion

func LinkedVersion() string

LinkedVersion returns the linked version of enet currently being used. Returns MAJOR.MINOR.PATCH as a string.

Types

type Address

type Address interface {
	SetHostAny()
	SetHost(ip string)
	SetPort(port uint16)

	String() string
	GetPort() uint16
}

Address specifies a portable internet address structure.

func NewAddress

func NewAddress(ip string, port uint16) Address

NewAddress creates a new address

func NewListenAddress

func NewListenAddress(port uint16) Address

NewListenAddress makes a new address ready for listening on ENET_HOST_ANY

type Event

type Event interface {
	ReadEvent() EventRecv
	GetType() EventType
	GetPeer() Peer
	GetChannelID() uint8
	GetData() uint32
	GetPacket() Packet
}

Event as returned by Host.Service()

type EventRecv

type EventRecv struct {
	Peer      Peer
	ConnectID uint32
	Packet    Packet
	Read      []byte
}

type EventType

type EventType int

EventType is a type of event

const (
	// EventNone means that no event occurred within the specified time limit
	EventNone EventType = iota

	// EventConnect means that a connection request initiated by Host.Connect has completed
	// The peer field contains the peer which successfully connected
	EventConnect

	// EventDisconnect means that a peer has disconnected. This event is generated on a
	// successful completion of a disconnect initiated by Peer.Disconnect, if a peer has
	// timed out, or if a connection request intialized by Host.Connect has timed out. The
	// peer field contains the peer which disconnected. The data field contains user supplied
	// data describing the disconnection, or 0, if none is available.
	EventDisconnect

	// EventReceive means that a packet has been received from a peer. The peer field
	// specifies the peer which sent the packet. The channelID field specifies the channel
	// number upon which the packet was received. The packet field contains the packet that
	// was received; this packet must be destroyed with Packet.Destroy after use.
	EventReceive
)

type Host

type Host interface {
	Destroy()
	Service(timeout uint32) Event
	GetServiceTime() uint32

	Connect(addr Address, channelCount int, data uint32) (Peer, error)

	CompressWithRangeCoder() error
	BroadcastBytes(data []byte, channel uint8, flags PacketFlags) error
	BroadcastPacket(packet Packet, channel uint8) error
	BroadcastString(str string, channel uint8, flags PacketFlags) error
}

Host for communicating with peers

func NewHost

func NewHost(addr Address, peerCount, channelLimit uint64, incomingBandwidth, outgoingBandwidth uint32) (Host, error)

NewHost creats a host for communicating to peers

type Packet

type Packet interface {
	Destroy()
	ReadData() []byte
	GetData() []byte
	GetFlags() PacketFlags
}

Packet may be sent to or received from a peer

func NewPacket

func NewPacket(data []byte, flags PacketFlags) (Packet, error)

NewPacket creates a new packet to send to peers

type PacketFlags

type PacketFlags uint32

PacketFlags are bit constants

const (
	// PacketFlagReliable packets must be received by the target peer and resend attempts
	// should be made until the packet is delivered
	PacketFlagReliable PacketFlags = C.ENET_PACKET_FLAG_RELIABLE

	// PacketFlagUnsequenced packets will not be sequenced with other packets not supported
	// for reliable packets
	PacketFlagUnsequenced PacketFlags = C.ENET_PACKET_FLAG_UNSEQUENCED

	// PacketFlagNoAllocate packets will not allocate data, and user must supply it instead
	PacketFlagNoAllocate PacketFlags = C.ENET_PACKET_FLAG_NO_ALLOCATE

	// PacketFlagUnreliableFragment packets will be fragmented using unreliable (instead of
	// reliable) sends if it exceeds the MTU
	PacketFlagUnreliableFragment PacketFlags = C.ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT

	// PacketFlagSent specifies whether the packet has been sent from all queues it has been
	// entered into
	PacketFlagSent PacketFlags = C.ENET_PACKET_FLAG_SENT
)

type Peer

type Peer interface {
	GetAddress() Address
	GetConnectId() uint
	GetIncomingPeerId() uint16
	GetIncomingSessionId() uint8

	Disconnect(data uint32)
	DisconnectNow(data uint32)
	DisconnectLater(data uint32)

	SendBytes(data []byte, channel uint8, flags PacketFlags) error
	SendString(str string, channel uint8, flags PacketFlags) error
	SendPacket(packet Packet, channel uint8) error
	RelayPacket(packet Packet, channel uint8, flags PacketFlags) error

	// SetData sets an arbitrary value against a peer. This is useful to attach some
	// application-specific data for future use, such as an identifier.
	//
	// http://enet.bespin.org/structENetPeer.html#a1873959810db7ac7a02da90469ee384e
	//
	// Note that due to the way the enet library works, if using this you are
	// responsible for clearing this data when the peer is finished with.
	// SetData(nil) will free underlying memory and avoid any leaks.
	//
	// See http://enet.bespin.org/Tutorial.html#ManageHost for an example of this
	// in the underlying library.
	SetData(data []byte)

	// GetData returns an application-specific value that's been set
	// against this peer. This returns nil if no data has been set.
	//
	// http://enet.bespin.org/structENetPeer.html#a1873959810db7ac7a02da90469ee384e
	GetData() []byte

	//rtt
	GetRoundTripTime() uint32
	GetLastRoundTripTime() uint32
	GetLowestRoundTripTime() uint32
	GetRoundTripTimeVariance() uint32
	GetLastRoundTripTimeVariance() uint32
	GetHighestRoundTripTimeVariance() uint32
}

Peer is a peer which data packets may be sent or received from

Jump to

Keyboard shortcuts

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