Make the callback type the first argument to Waitable!().
This commit is contained in:
parent
964d72f3b5
commit
9d4e8086ff
3 changed files with 20 additions and 27 deletions
|
@ -53,10 +53,9 @@ NetworkAddress resolveHost(string host, ushort address_family, bool use_dns = tr
|
|||
enforce(use_dns, "Malformed IP address string.");
|
||||
NetworkAddress res;
|
||||
bool success = false;
|
||||
Waitable!(
|
||||
Waitable!(DNSLookupCallback,
|
||||
cb => eventDriver.dns.lookupHost(host, cb),
|
||||
(cb, id) => eventDriver.dns.cancelLookup(id),
|
||||
DNSLookupCallback,
|
||||
(DNSLookupID, DNSStatus status, scope RefAddress[] addrs) {
|
||||
if (status == DNSStatus.ok && addrs.length > 0) {
|
||||
try res = NetworkAddress(addrs[0]);
|
||||
|
@ -473,10 +472,9 @@ mixin(tracer);
|
|||
if (m_context.readBuffer.length > 0) return true;
|
||||
auto mode = timeout <= 0.seconds ? IOMode.immediate : IOMode.once;
|
||||
|
||||
Waitable!(
|
||||
Waitable!(IOCallback,
|
||||
cb => eventDriver.sockets.read(m_socket, m_context.readBuffer.peekDst(), mode, cb),
|
||||
cb => eventDriver.sockets.cancelRead(m_socket),
|
||||
IOCallback
|
||||
cb => eventDriver.sockets.cancelRead(m_socket)
|
||||
) waiter;
|
||||
|
||||
asyncAwaitAny!true(timeout, waiter);
|
||||
|
@ -718,10 +716,9 @@ struct UDPConnection {
|
|||
IOStatus status;
|
||||
size_t nbytes;
|
||||
|
||||
Waitable!(
|
||||
Waitable!(DatagramIOCallback,
|
||||
cb => eventDriver.sockets.send(m_socket, data, IOMode.once, addrc, cb),
|
||||
cb => eventDriver.sockets.cancelSend(m_socket),
|
||||
DatagramIOCallback,
|
||||
(DatagramSocketFD, IOStatus status_, size_t nbytes_, scope RefAddress addr)
|
||||
{
|
||||
status = status_;
|
||||
|
@ -755,10 +752,9 @@ struct UDPConnection {
|
|||
IOStatus status;
|
||||
size_t nbytes;
|
||||
|
||||
Waitable!(
|
||||
Waitable!(DatagramIOCallback,
|
||||
cb => eventDriver.sockets.receive(m_socket, buf, IOMode.once, cb),
|
||||
cb => eventDriver.sockets.cancelReceive(m_socket),
|
||||
DatagramIOCallback,
|
||||
(DatagramSocketFD, IOStatus status_, size_t nbytes_, scope RefAddress addr)
|
||||
{
|
||||
status = status_;
|
||||
|
|
|
@ -1091,10 +1091,9 @@ private struct ThreadLocalWaiter {
|
|||
target_timeout = now + timeout;
|
||||
}
|
||||
|
||||
Waitable!(
|
||||
Waitable!(typeof(Waiter.notifier),
|
||||
cb => w.wait(cb),
|
||||
cb => w.cancel(),
|
||||
typeof(Waiter.notifier)
|
||||
) waitable;
|
||||
|
||||
void removeWaiter()
|
||||
|
@ -1114,7 +1113,7 @@ private struct ThreadLocalWaiter {
|
|||
scope (failure) removeWaiter();
|
||||
|
||||
if (evt != EventID.invalid) {
|
||||
Waitable!(
|
||||
Waitable!(EventCallback,
|
||||
(cb) {
|
||||
eventDriver.events.wait(evt, cb);
|
||||
// check for exit codition *after* starting to wait for the event
|
||||
|
@ -1124,8 +1123,7 @@ private struct ThreadLocalWaiter {
|
|||
cb(evt);
|
||||
}
|
||||
},
|
||||
cb => eventDriver.events.cancelWait(evt, cb),
|
||||
EventCallback
|
||||
cb => eventDriver.events.cancelWait(evt, cb)
|
||||
) ewaitable;
|
||||
asyncAwaitAny!interruptible(timeout, waitable, ewaitable);
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue