Documentation
¶
Index ¶
Constants ¶
const MaxPacketSize = 1200
MaxPacketSize is the UDP payload cap (spec §3.7, IPv6-safe 1200).
Variables ¶
var ( // ErrPacketTooLarge is returned when Send payload exceeds MaxPacketSize. ErrPacketTooLarge = errors.New("a2al/transport: packet exceeds MaxPacketSize") // ErrClosed is returned after the transport is closed. ErrClosed = errors.New("a2al/transport: closed") // ErrUnknownPeer is returned by MemTransport when the destination is not registered. ErrUnknownPeer = errors.New("a2al/transport: unknown mem peer") // ErrDuplicatePeer is returned when a MemTransport name is already bound. ErrDuplicatePeer = errors.New("a2al/transport: duplicate mem peer name") // ErrMemBufferFull is returned when the peer inbox is full (backpressure). ErrMemBufferFull = errors.New("a2al/transport: mem peer inbox full") )
Functions ¶
This section is empty.
Types ¶
type Addr ¶
type Addr struct {
Name string
}
Addr is a logical in-memory address (net.Addr, Network "mem").
type MemNetwork ¶
type MemNetwork struct {
// contains filtered or unexported fields
}
MemNetwork links MemTransport instances for process-local testing (spec §3.4).
func (*MemNetwork) NewTransport ¶
func (n *MemNetwork) NewTransport(name string) (*MemTransport, error)
NewTransport registers a peer name and returns a transport bound to it.
type MemTransport ¶
type MemTransport struct {
// contains filtered or unexported fields
}
MemTransport delivers packets via MemNetwork.
func (*MemTransport) Close ¶
func (t *MemTransport) Close() error
func (*MemTransport) LocalAddr ¶
func (t *MemTransport) LocalAddr() net.Addr
type MuxDHTTransport ¶
type MuxDHTTransport struct {
// contains filtered or unexported fields
}
func (*MuxDHTTransport) Close ¶
func (t *MuxDHTTransport) Close() error
func (*MuxDHTTransport) LocalAddr ¶
func (t *MuxDHTTransport) LocalAddr() net.Addr
type Transport ¶
type Transport interface {
Send(addr net.Addr, data []byte) error
Receive() ([]byte, net.Addr, error)
LocalAddr() net.Addr
Close() error
}
Transport is the DHT packet plane (spec §3.3).
type UDPMux ¶
type UDPMux struct {
// contains filtered or unexported fields
}
UDPMux demultiplexes one UDP socket between DHT (CBOR) and QUIC (RFC 9000).
Discrimination: all QUIC packets (long and short header) have the "Fixed Bit" (0x40) set per RFC 9000 §17. A2AL DHT messages are CBOR maps whose first byte falls in 0xa0-0xbf, where bit 6 is always clear. Checking `data[0]&0x40 != 0` is therefore a reliable, stateless discriminator — no peer tracking needed.
func (*UDPMux) DHTTransport ¶
func (m *UDPMux) DHTTransport() *MuxDHTTransport
DHTTransport returns the DHT packet plane.
func (*UDPMux) QUICPacketConn ¶
func (m *UDPMux) QUICPacketConn() net.PacketConn
QUICPacketConn returns a net.PacketConn that only sees QUIC datagrams.
func (*UDPMux) StartReadLoop ¶
func (m *UDPMux) StartReadLoop()
func (*UDPMux) WaitReadLoop ¶
func (m *UDPMux) WaitReadLoop()
WaitReadLoop blocks until the read loop exits (after Close).
type UDPTransport ¶
type UDPTransport struct {
// contains filtered or unexported fields
}
UDPTransport wraps a UDP socket with a max read size (spec §3.7).
func ListenUDP ¶
func ListenUDP(network, laddr string) (*UDPTransport, error)
ListenUDP listens on laddr (e.g. "udp4", ":0") and returns a UDPTransport.
func NewUDPTransport ¶
func NewUDPTransport(c *net.UDPConn) *UDPTransport
NewUDPTransport wraps an existing UDP connection.
func (*UDPTransport) Close ¶
func (t *UDPTransport) Close() error
func (*UDPTransport) LocalAddr ¶
func (t *UDPTransport) LocalAddr() net.Addr