udpconn

package
v0.0.0-...-7551c24 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxStreams     = 128
	ServerStreamID = SID(0)
	MaxStreamID    = SID(MaxStreams - 1)
)
View Source
const (
	Unreliable = PacketFlags(0)
	Reliable   = PacketFlags(1 << iota)
)
View Source
const (
	DefaultPort = 18590
)

Variables

This section is empty.

Functions

func NewPipe

func NewPipe(log *slog.Logger, buf int) (srv *PipeConn, cli *PipeConn)

Types

type Conn

type Conn struct {
	// contains filtered or unexported fields
}

func (*Conn) Ack

func (p *Conn) Ack() error

func (*Conn) CancelReliable

func (p *Conn) CancelReliable(pid PID)

func (*Conn) DeleteQueue

func (p *Conn) DeleteQueue(fnc func(id QueueID, msgs []netmsg.Message) bool)

func (*Conn) EncodeState

func (p *Conn) EncodeState() *netmsg.State

func (*Conn) Encrypt

func (p *Conn) Encrypt(key byte)

func (*Conn) OnMessage

func (p *Conn) OnMessage(fnc OnMessageFunc)

func (*Conn) Port

func (p *Conn) Port() *Port

func (*Conn) QueueReliable

func (p *Conn) QueueReliable(sid SID, opts Options, msgs ...netmsg.Message) PID

func (*Conn) QueuedFor

func (p *Conn) QueuedFor(sid SID, ops ...netmsg.Op) int

func (*Conn) RemoteAddr

func (p *Conn) RemoteAddr() netip.AddrPort

func (*Conn) Reset

func (p *Conn) Reset()

func (*Conn) ResetFor

func (p *Conn) ResetFor(sid SID)

func (*Conn) SendQueue

func (p *Conn) SendQueue() error

func (*Conn) SendReliable

func (p *Conn) SendReliable(ctx context.Context, sid SID, msgs ...netmsg.Message) error

func (*Conn) SendUnreliable

func (p *Conn) SendUnreliable(sid SID, msgs ...netmsg.Message) error

func (*Conn) Stream

func (p *Conn) Stream(sid SID) Stream

func (*Conn) ViewQueue

func (p *Conn) ViewQueue(fnc func(id QueueID, m netmsg.Message))
type Header struct {
	SID   SID
	Seq   Seq
	Flags PacketFlags
}

func (*Header) Decode

func (h *Header) Decode(b [2]byte)

func (Header) Encode

func (h Header) Encode() [2]byte

type OnMessageFunc

type OnMessageFunc func(s Stream, m netmsg.Message, flags PacketFlags) bool

type Options

type Options struct {
	Context   context.Context
	Deadline  time.Time
	OnDone    func()
	OnTimeout func()
}

type PID

type PID uintptr

PID is a packet ID.

type PacketConn

type PacketConn interface {
	LocalAddr() net.Addr
	WriteToUDPAddrPort(b []byte, addr netip.AddrPort) (int, error)
	ReadFromUDPAddrPort(b []byte) (int, netip.AddrPort, error)
	Close() error
}

type PacketFlags

type PacketFlags byte

func (PacketFlags) Has

func (f PacketFlags) Has(f2 PacketFlags) bool

type PipeConn

type PipeConn struct {
	Log   *slog.Logger
	Addr  netip.AddrPort
	Port  *Port
	Drop  func(data []byte) bool
	Debug bool
	// contains filtered or unexported fields
}

func (*PipeConn) Close

func (c *PipeConn) Close() error

func (*PipeConn) LocalAddr

func (c *PipeConn) LocalAddr() net.Addr

func (*PipeConn) ReadFromUDPAddrPort

func (c *PipeConn) ReadFromUDPAddrPort(data []byte) (int, netip.AddrPort, error)

func (*PipeConn) WriteToUDPAddrPort

func (c *PipeConn) WriteToUDPAddrPort(data []byte, addr netip.AddrPort) (int, error)

type Port

type Port struct {
	OnConn func(c *Conn) bool
	// contains filtered or unexported fields
}

func NewPort

func NewPort(log *slog.Logger, conn PacketConn, opts netmsg.Options) *Port

func (*Port) BroadcastMsg

func (p *Port) BroadcastMsg(port int, m netmsg.Message) error

func (*Port) Close

func (p *Port) Close()

func (*Port) Conn

func (p *Port) Conn(addr netip.AddrPort) *Conn

func (*Port) LocalAddr

func (p *Port) LocalAddr() netip.AddrPort

func (*Port) OnMessage

func (p *Port) OnMessage(fnc OnMessageFunc)

func (*Port) Reset

func (p *Port) Reset()

func (*Port) Start

func (p *Port) Start()

func (*Port) WriteMsg

func (p *Port) WriteMsg(addr netip.AddrPort, xor byte, hdr Header, enc *netmsg.State, msgs ...netmsg.Message) error

type QueueID

type QueueID struct {
	Stream SID
	Packet PID
}

type SID

type SID byte

SID is a stream ID.

type Seq

type Seq byte

func (Seq) Before

func (v Seq) Before(v2 Seq) bool

type Stream

type Stream struct {
	// contains filtered or unexported fields
}

func (Stream) Addr

func (p Stream) Addr() netip.AddrPort

func (Stream) CancelReliable

func (p Stream) CancelReliable(id PID)

func (Stream) Conn

func (p Stream) Conn() *Conn

func (Stream) OnMessage

func (p Stream) OnMessage(fnc OnMessageFunc)

func (Stream) QueueReliable

func (p Stream) QueueReliable(opts Options, msgs ...netmsg.Message) PID

func (Stream) Reset

func (p Stream) Reset()

func (Stream) SID

func (p Stream) SID() SID

func (Stream) SendQueue

func (p Stream) SendQueue() error

func (Stream) SendReliable

func (p Stream) SendReliable(ctx context.Context, msgs ...netmsg.Message) error

func (Stream) SendUnreliable

func (p Stream) SendUnreliable(msgs ...netmsg.Message) error

func (Stream) Valid

func (p Stream) Valid() bool

Jump to

Keyboard shortcuts

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