Files
go-sam-go/datagram/DOC.md
eyedeekay a53acecb87 godoc
2025-05-29 19:44:45 -04:00

8.1 KiB

datagram

-- import "github.com/go-i2p/go-sam-go/datagram"

Usage

type Datagram

type Datagram struct {
	Data   []byte
	Source i2pkeys.I2PAddr
	Local  i2pkeys.I2PAddr
}

Datagram represents an I2P datagram message

type DatagramAddr

type DatagramAddr struct {
}

DatagramAddr implements net.Addr for I2P datagram addresses

func (*DatagramAddr) Network

func (a *DatagramAddr) Network() string

Network returns the network type

func (*DatagramAddr) String

func (a *DatagramAddr) String() string

String returns the string representation of the address

type DatagramConn

type DatagramConn struct {
}

DatagramConn implements net.PacketConn for I2P datagrams

func (*DatagramConn) Close

func (c *DatagramConn) Close() error

Close closes the datagram connection

func (*DatagramConn) LocalAddr

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

LocalAddr returns the local address

func (*DatagramConn) Read

func (c *DatagramConn) Read(b []byte) (n int, err error)

Read implements net.Conn by wrapping ReadFrom. It reads data into the provided byte slice and returns the number of bytes read. When reading, it also updates the remote address of the connection. Note: This is not a typical use case for datagrams, as they are connectionless. However, for compatibility with net.Conn, we implement it this way.

func (*DatagramConn) ReadFrom

func (c *DatagramConn) ReadFrom(p []byte) (n int, addr net.Addr, err error)

ReadFrom reads a datagram from the connection

func (*DatagramConn) RemoteAddr

func (c *DatagramConn) RemoteAddr() net.Addr

RemoteAddr returns the remote address of the connection. For datagram connections, this returns nil as there is no single remote address.

func (*DatagramConn) SetDeadline

func (c *DatagramConn) SetDeadline(t time.Time) error

SetDeadline sets the read and write deadlines

func (*DatagramConn) SetReadDeadline

func (c *DatagramConn) SetReadDeadline(t time.Time) error

SetReadDeadline sets the deadline for future ReadFrom calls

func (*DatagramConn) SetWriteDeadline

func (c *DatagramConn) SetWriteDeadline(t time.Time) error

SetWriteDeadline sets the deadline for future WriteTo calls

func (*DatagramConn) Write

func (c *DatagramConn) Write(b []byte) (n int, err error)

Write implements net.Conn by wrapping WriteTo. It writes data to the remote address and returns the number of bytes written. It uses the remote address set by the last Read operation. If no remote address is set, it returns an error. Note: This is not a typical use case for datagrams, as they are connectionless. However, for compatibility with net.Conn, we implement it this way.

func (*DatagramConn) WriteTo

func (c *DatagramConn) WriteTo(p []byte, addr net.Addr) (n int, err error)

WriteTo writes a datagram to the specified address

type DatagramListener

type DatagramListener struct {
}

DatagramListener implements net.DatagramListener for I2P datagram connections

func (*DatagramListener) Accept

func (l *DatagramListener) Accept() (net.Conn, error)

Accept waits for and returns the next packet connection to the listener

func (*DatagramListener) Addr

func (l *DatagramListener) Addr() net.Addr

Addr returns the listener's network address

func (*DatagramListener) Close

func (l *DatagramListener) Close() error

Close closes the packet listener

type DatagramReader

type DatagramReader struct {
}

DatagramReader handles incoming datagram reception

func (*DatagramReader) Close

func (r *DatagramReader) Close() error

func (*DatagramReader) ReceiveDatagram

func (r *DatagramReader) ReceiveDatagram() (*Datagram, error)

ReceiveDatagram receives a datagram from any source

type DatagramSession

type DatagramSession struct {
	*common.BaseSession
}

DatagramSession represents a datagram session that can send and receive datagrams

func NewDatagramSession

func NewDatagramSession(sam *common.SAM, id string, keys i2pkeys.I2PKeys, options []string) (*DatagramSession, error)

NewDatagramSession creates a new datagram session

func (*DatagramSession) Addr

func (s *DatagramSession) Addr() i2pkeys.I2PAddr

Addr returns the I2P address of this session

func (*DatagramSession) Close

func (s *DatagramSession) Close() error

Close closes the datagram session and all associated resources

func (*DatagramSession) Dial

func (ds *DatagramSession) Dial(destination string) (net.PacketConn, error)

Dial establishes a datagram connection to the specified destination

func (*DatagramSession) DialContext

func (ds *DatagramSession) DialContext(ctx context.Context, destination string) (net.PacketConn, error)

DialContext establishes a datagram connection with context support

func (*DatagramSession) DialI2P

func (ds *DatagramSession) DialI2P(addr i2pkeys.I2PAddr) (net.PacketConn, error)

DialI2P establishes a datagram connection to an I2P address

func (*DatagramSession) DialI2PContext

func (ds *DatagramSession) DialI2PContext(ctx context.Context, addr i2pkeys.I2PAddr) (net.PacketConn, error)

DialI2PContext establishes a datagram connection to an I2P address with context support

func (*DatagramSession) DialI2PTimeout

func (ds *DatagramSession) DialI2PTimeout(addr i2pkeys.I2PAddr, timeout time.Duration) (net.PacketConn, error)

DialI2PTimeout establishes a datagram connection to an I2P address with timeout

func (*DatagramSession) DialTimeout

func (ds *DatagramSession) DialTimeout(destination string, timeout time.Duration) (net.PacketConn, error)

DialTimeout establishes a datagram connection with a timeout

func (*DatagramSession) Listen

func (s *DatagramSession) Listen() (*DatagramListener, error)

func (*DatagramSession) NewReader

func (s *DatagramSession) NewReader() *DatagramReader

NewReader creates a DatagramReader for receiving datagrams

func (*DatagramSession) NewWriter

func (s *DatagramSession) NewWriter() *DatagramWriter

NewWriter creates a DatagramWriter for sending datagrams

func (*DatagramSession) PacketConn

func (s *DatagramSession) PacketConn() net.PacketConn

PacketConn returns a net.PacketConn interface for this session

func (*DatagramSession) ReceiveDatagram

func (s *DatagramSession) ReceiveDatagram() (*Datagram, error)

ReceiveDatagram receives a datagram from any source

func (*DatagramSession) SendDatagram

func (s *DatagramSession) SendDatagram(data []byte, dest i2pkeys.I2PAddr) error

SendDatagram sends a datagram to the specified destination

type DatagramWriter

type DatagramWriter struct {
}

DatagramWriter handles outgoing datagram transmission

func (*DatagramWriter) SendDatagram

func (w *DatagramWriter) SendDatagram(data []byte, dest i2pkeys.I2PAddr) error

SendDatagram sends a datagram to the specified destination

func (*DatagramWriter) SetTimeout

func (w *DatagramWriter) SetTimeout(timeout time.Duration) *DatagramWriter

SetTimeout sets the timeout for datagram operations

type SAM

type SAM struct {
	*common.SAM
}

SAM wraps common.SAM to provide datagram-specific functionality

func (*SAM) NewDatagramSession

func (s *SAM) NewDatagramSession(id string, keys i2pkeys.I2PKeys, options []string) (*DatagramSession, error)

NewDatagramSession creates a new datagram session with the SAM bridge

func (*SAM) NewDatagramSessionWithPorts

func (s *SAM) NewDatagramSessionWithPorts(id, fromPort, toPort string, keys i2pkeys.I2PKeys, options []string) (*DatagramSession, error)

NewDatagramSessionWithPorts creates a new datagram session with port specifications

func (*SAM) NewDatagramSessionWithSignature

func (s *SAM) NewDatagramSessionWithSignature(id string, keys i2pkeys.I2PKeys, options []string, sigType string) (*DatagramSession, error)

NewDatagramSessionWithSignature creates a new datagram session with custom signature type