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