Bind to a local address in order to receive packets sent there.
Initialize with the given AddressFamily, without binding to an address.
Called when a socket is writable.
Where to send packets to.
Get connection state.
The send buffers.
Whether the first item from this queue (if any) has been partially sent (and thus can't be canceled).
Called when a socket is readable.
Called when an error occurs on the socket.
Close a connection. If there is queued data waiting to be sent, wait until it is sent before disconnecting. The disconnect handler will be called immediately, even when not all data has been flushed yet.
Append data to the send buffer.
Cancel all queued Data packets with the given priority. Does not cancel any partially-sent Data.
Returns true if any queues have pending data.
Returns true if there are any queued Data which have not yet begun to be sent.
Returns the number of queued Data at the given priority.
Returns the number of queued bytes at the given priority.
Callback for when a connection has been established.
Callback for incoming data. Data will not be received unless this handler is set.
Callback for when a connection was closed.
Callback setter for when all queued data has been sent.
t { auto server = new UdpConnection(); server.bind("localhost", 0); auto client = new UdpConnection(); client.initialize(server.localAddress.addressFamily); string[] packets = ["Hello", "there"]; client.remoteAddress = server.localAddress; client.send({ DataVec data; foreach (packet; packets) data ~= Data(packet); return data; }()[]); server.handleReadData = (Data data) { assert(data.contents == packets[0]); packets = packets[1..$]; if (!packets.length) { server.close(); client.close(); } }; socketManager.loop(); assert(!packets.length
An asynchronous UDP stream. UDP does not have connections, so this class encapsulates a socket with a fixed destination (sendto) address, and optionally bound to a local address. Currently received packets' address is not exposed.