network

package
v0.0.0-...-ffd3a61 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrListenerClosed = errors.New("listener closed")
View Source
var ErrPortAlreadyInUse = errors.New("port already in use")
View Source
var ErrStreamClosed = errors.New("stream closed")

Functions

This section is empty.

Types

type ConnId

type ConnId struct {
	Hosts HostPair
	Ports PortPair
}

func (ConnId) Dest

func (id ConnId) Dest() netip.AddrPort

func (ConnId) Flip

func (id ConnId) Flip() ConnId

func (ConnId) Source

func (id ConnId) Source() netip.AddrPort

type Endpoint

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

func (*Endpoint) Addr

func (e *Endpoint) Addr() netip.Addr

func (*Endpoint) Send

func (e *Endpoint) Send(packet *Packet)

type HostPair

type HostPair struct {
	SourceHost, DestHost netip.Addr
}

func (HostPair) Flip

func (id HostPair) Flip() HostPair

type Listener

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

type Network

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

func NewNetwork

func NewNetwork() *Network

func (*Network) AttachStack

func (n *Network) AttachStack(addr netip.Addr, stack *Stack)

func (*Network) DetachStack

func (n *Network) DetachStack(stack *Stack)

func (*Network) NextIP

func (n *Network) NextIP() netip.Addr

func (*Network) Run

func (n *Network) Run()

func (*Network) SetConnected

func (n *Network) SetConnected(p HostPair, connected bool)

func (*Network) SetDelay

func (n *Network) SetDelay(p HostPair, delay time.Duration)

type Packet

type Packet struct {
	ConnId              ConnId
	Kind                PacketKind
	InBuffer, OutBuffer *circularBuffer
	Offset, Count       int
	ArrivalTime         timeIndex // used by delayQueue
}

type PacketKind

type PacketKind byte
const (
	PacketKindOpenStream   PacketKind = iota // uses InBuffer, OutBuffer
	PacketKindOpenedStream                   // uses nothing
	PacketKindStreamClose                    // uses nothing
	PacketKindStreamData                     // uses Offset, Count
	PacketKindStreamAck                      // uses Offset
	PacketKindStreamWindow                   // uses Count
)

type PortPair

type PortPair struct {
	SourcePort uint16
	DestPort   uint16
}

func (PortPair) Flip

func (id PortPair) Flip() PortPair

type Stack

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

func NewStack

func NewStack() *Stack

func (*Stack) Accept

func (n *Stack) Accept(listener *Listener) (*Stream, error)

func (*Stack) CloseListener

func (n *Stack) CloseListener(listener *Listener) error

func (*Stack) DeregisterListenerPoller

func (n *Stack) DeregisterListenerPoller(poller *syscallabi.PollDesc, listener *Listener)

func (*Stack) DeregisterStreamPoller

func (n *Stack) DeregisterStreamPoller(poller *syscallabi.PollDesc, stream *Stream)

func (*Stack) Endpoint

func (b *Stack) Endpoint() *Endpoint

func (*Stack) OpenListener

func (n *Stack) OpenListener(port uint16) (*Listener, error)

func (*Stack) OpenStream

func (n *Stack) OpenStream(addr netip.AddrPort) (*Stream, error)

func (*Stack) RegisterListenerPoller

func (n *Stack) RegisterListenerPoller(poller *syscallabi.PollDesc, listener *Listener)

func (*Stack) RegisterStreamPoller

func (n *Stack) RegisterStreamPoller(poller *syscallabi.PollDesc, stream *Stream)

func (*Stack) Shutdown

func (s *Stack) Shutdown(graceful bool)

func (*Stack) StreamClose

func (n *Stack) StreamClose(stream *Stream) error

func (*Stack) StreamRecv

func (n *Stack) StreamRecv(s *Stream, data syscallabi.ByteSliceView) (int, error)

func (*Stack) StreamSend

func (n *Stack) StreamSend(stream *Stream, data syscallabi.ByteSliceView) (int, error)

func (*Stack) StreamStatus

func (n *Stack) StreamStatus(stream *Stream) StreamStatus

type Stream

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

func NewStream

func NewStream(id ConnId, inBuffer, outBuffer *circularBuffer) *Stream

func (*Stream) ID

func (s *Stream) ID() ConnId

type StreamStatus

type StreamStatus struct {
	Open   bool
	Closed bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳