Skip to content

ConnectedUDPSocket[optional UDP: ConnectedUDPBackend ref]

[Source]

A UDP socket connected to a single peer: bind, connect, send datagrams, receive datagrams, and close. The peer is fixed at creation and the kernel filters incoming datagrams by source address.

A ConnectedUDPSocketActor owns one and delegates to it.

Create with ConnectedUDPSocket(auth, host, port, peer_host, peer_port, enclosing, ler), using ConnectedUDPSocket.none() as the field initializer before that. See the package documentation for the full lifecycle.

class ref ConnectedUDPSocket[optional UDP: ConnectedUDPBackend ref]

Constructors

create

[Source]

Bind a UDP socket to host:port and connect it to peer_host:peer_port. Port "0" for the local side lets the OS assign an ephemeral port.

new ref create(
  auth: UDPAuth val,
  host: String val,
  port: String val,
  peer_host: String val,
  peer_port: String val,
  enclosing: ConnectedUDPSocketActor[UDP] ref,
  ler: ConnectedUDPLifecycleEventReceiver[UDP] ref,
  read_buffer_size: ReadBufferSize = DefaultReadBufferSize(),
  ip_version: IPVersion = DualStack,
  max_datagrams_per_turn: USize val = 256)
: ConnectedUDPSocket[UDP] ref^

Parameters

Returns


none

[Source]

Placeholder for field initialization before the real constructor runs.

new ref none()
: ConnectedUDPSocket[UDP] ref^

Returns


Public Functions

send

[Source]

Send one datagram to the connected peer. Returns UDPSendOk when the datagram was handed to the OS. UDP sends are synchronous and all-or-nothing: the entire datagram goes out or nothing does.

fun ref send(
  data: ByteSeq)
: UDPSendResult

Parameters

Returns


close

[Source]

Close the socket. No graceful shutdown: the fd is closed immediately.

fun ref close()
: None val

Returns


local_address

[Source]

Return the local IP address the socket is bound to.

fun ref local_address()
: NetAddress val

Returns


remote_address

[Source]

Return the remote peer address the socket is connected to.

fun ref remote_address()
: NetAddress val

Returns


read_again

[Source]

Re-enter the read loop. Called internally after yielding or exhausting the per-turn budget; applications do not call this directly.

fun ref read_again()
: None val

Returns


is_open

[Source]

True when the socket is connected and has not been closed.

fun box is_open()
: Bool val

Returns


is_closed

[Source]

True when the socket has been closed.

fun box is_closed()
: Bool val

Returns


get_so_rcvbuf

[Source]

Get the OS receive buffer size for this socket. Returns (errno, value). On success errno is 0.

fun box get_so_rcvbuf()
: (U32 val , U32 val)

Returns


set_so_rcvbuf

[Source]

Set the OS receive buffer size for this socket. Returns 0 on success, or a non-zero errno.

fun box set_so_rcvbuf(
  bufsize: U32 val)
: U32 val

Parameters

  • bufsize: U32 val

Returns


get_so_sndbuf

[Source]

Get the OS send buffer size for this socket. Returns (errno, value). On success errno is 0.

fun box get_so_sndbuf()
: (U32 val , U32 val)

Returns


set_so_sndbuf

[Source]

Set the OS send buffer size for this socket. Returns 0 on success, or a non-zero errno.

fun box set_so_sndbuf(
  bufsize: U32 val)
: U32 val

Parameters

  • bufsize: U32 val

Returns


getsockopt

[Source]

General interface to getsockopt(2). Returns (0, data) on success or (errno, undefined) on failure. Returns (1, empty) when the socket is not open.

fun box getsockopt(
  level: I32 val,
  option_name: I32 val,
  option_max_size: USize val = 4)
: (U32 val , Array[U8 val] iso^)

Parameters

  • level: I32 val
  • option_name: I32 val
  • option_max_size: USize val = 4

Returns


getsockopt_u32

[Source]

Wrapper for getsockopt(2) where the kernel returns a C uint32_t. Returns (0, value) on success or (errno, undefined) on failure. Returns (1, 0) when the socket is not open.

fun box getsockopt_u32(
  level: I32 val,
  option_name: I32 val)
: (U32 val , U32 val)

Parameters

  • level: I32 val
  • option_name: I32 val

Returns


setsockopt

[Source]

General interface to setsockopt(2). Returns 0 on success, or a non-zero errno. Returns non-zero when the socket is not open.

fun box setsockopt(
  level: I32 val,
  option_name: I32 val,
  option: Array[U8 val] ref)
: U32 val

Parameters

Returns


setsockopt_u32

[Source]

Wrapper for setsockopt(2) where the kernel expects a C uint32_t. Returns 0 on success, or a non-zero errno. Returns non-zero when the socket is not open.

fun box setsockopt_u32(
  level: I32 val,
  option_name: I32 val,
  option: U32 val)
: U32 val

Parameters

  • level: I32 val
  • option_name: I32 val
  • option: U32 val

Returns