type

SocketConfig

const class SocketConfig : Obj

Configuration options for TCP and UDP sockets. All socket types accept a socket configuration which will be used to configure the socket when it is created.

A system-wide default socket configuration can be obtained with SocketConfig.cur. You can change the system default by using SocketConfig.setCur.

See TcpSocket.make, TcpListener.make, UdpSocket.make, MulticastSocket.make

constructors

make

Create and configure the socket options.

fields

acceptTimeout

Controls how long a TcpListener.accept will block before throwing an IOErr timeout exception.

broadcast

SO_BROADCAST socket option

connectTimeout

Controls the default timeout used by TcpSocket.connect.

inBufferSize

The size in bytes for the sys::InStream buffer.

keepAlive

SO_KEEPALIVE option

keystore

The KeyStore to use when creating secure sockets.

linger

SO_LINGER controls the linger time or set to null to disable linger.

noDelay

TCP_NODELAY socket option specifies that send not be delayed to merge packets (Nagle's algorthm).

outBufferSize

The size in bytes for the sys::OutStream buffer.

receiveBufferSize

SO_RCVBUF option for the size in bytes of the IP stack buffers.

receiveTimeout

SO_TIMEOUT controls the amount of time a socket will block on a read call before throwing an IOErr timeout exception.

reuseAddr

SO_REUSEADDR is used to control the time wait state of a closed socket.

sendBufferSize

SO_SNDBUF option for the size in bytes of the IP stack buffers.

trafficClass

The type-of-class byte in the IP packet header.

truststore

The KeyStore to use for obtaining trusted certificates when creating secure sockets.

methods

copy

Create a copy of this configuration and then apply any overrides from the it-block.

cur

Get the current, default socket configuration

setCur

Set a new default socket configuration.

setTimeouts

Convenience to create a copy of this socket configuration and set the connect and receive timeouts to the given duration.

Slot Details

acceptTimeout

const Duration? acceptTimeout := null

Controls how long a TcpListener.accept will block before throwing an IOErr timeout exception. null is used to indicate infinite timeout.

broadcast

const Bool broadcast := false

SO_BROADCAST socket option

connectTimeout

const Duration? connectTimeout := 1min

Controls the default timeout used by TcpSocket.connect. A null value indicates a system default timeout (usually wait forever).

copy

virtual This copy(|This| f)

Create a copy of this configuration and then apply any overrides from the it-block.

cur

static SocketConfig cur()

Get the current, default socket configuration

inBufferSize

const Int? inBufferSize := 4096

The size in bytes for the sys::InStream buffer. A value of 0 or null disables input stream buffing.

keepAlive

const Bool keepAlive := false

SO_KEEPALIVE option

keystore

const KeyStore? keystore := null

The KeyStore to use when creating secure sockets. If null, the runtime default will be used.

linger

const Duration? linger := null

SO_LINGER controls the linger time or set to null to disable linger.

make

new make(|This|? f := null)

Create and configure the socket options.

noDelay

const Bool noDelay := true

TCP_NODELAY socket option specifies that send not be delayed to merge packets (Nagle's algorthm).

outBufferSize

const Int? outBufferSize := 4096

The size in bytes for the sys::OutStream buffer. A value of 0 or null disables output stream buffing.

receiveBufferSize

const Int receiveBufferSize := 65536

SO_RCVBUF option for the size in bytes of the IP stack buffers.

receiveTimeout

const Duration? receiveTimeout := 1min

SO_TIMEOUT controls the amount of time a socket will block on a read call before throwing an IOErr timeout exception. null is used to indicate an infinite timeout.

reuseAddr

const Bool reuseAddr := false

SO_REUSEADDR is used to control the time wait state of a closed socket.

sendBufferSize

const Int sendBufferSize := 65536

SO_SNDBUF option for the size in bytes of the IP stack buffers.

setCur

static Void setCur(SocketConfig cfg)

Set a new default socket configuration. This configuration will only apply to new sockets created after this is called. This method may only be called once to change the default socket configuration.

setTimeouts

This setTimeouts(Duration? connectTimeout, Duration? receiveTimeout := connectTimeout)

Convenience to create a copy of this socket configuration and set the connect and receive timeouts to the given duration. Setting to null indicates infinite timeouts.

trafficClass

const Int trafficClass := 0

The type-of-class byte in the IP packet header.

For IPv4 this value is detailed in RFC 1349 as the following bitset:

  • IPTOS_LOWCOST (0x02)
  • IPTOS_RELIABILITY (0x04)
  • IPTOS_THROUGHPUT (0x08)
  • IPTOS_LOWDELAY (0x10)

For IPv6 this is the value placed into the sin6_flowinfo header field.

truststore

const KeyStore? truststore := null

The KeyStore to use for obtaining trusted certificates when creating secure sockets. If null, the runtime default will be used.