Add DNS API and update Libasync stub.
This commit is contained in:
parent
c6dec730d8
commit
2518a6c301
|
@ -12,6 +12,7 @@ interface EventDriver {
|
|||
@property EventDriverEvents events();
|
||||
@property EventDriverSignals signals();
|
||||
@property EventDriverSockets sockets();
|
||||
@property EventDriverDNS dns();
|
||||
@property EventDriverFiles files();
|
||||
@property EventDriverWatchers watchers();
|
||||
|
||||
|
@ -106,6 +107,12 @@ interface EventDriverSockets {
|
|||
void releaseRef(SocketFD descriptor);
|
||||
}
|
||||
|
||||
interface EventDriverDNS {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
DNSLookupID lookupHost(string name, DNSLookupCallback on_lookup_finished);
|
||||
void cancelLookup(DNSLookupID handle);
|
||||
}
|
||||
|
||||
interface EventDriverFiles {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
FileFD open(string path, FileOpenMode mode);
|
||||
|
@ -202,6 +209,7 @@ alias ConnectCallback = void delegate(StreamSocketFD, ConnectStatus);
|
|||
alias AcceptCallback = void delegate(StreamListenSocketFD, StreamSocketFD);
|
||||
alias IOCallback = void delegate(StreamSocketFD, IOStatus, size_t);
|
||||
alias DatagramIOCallback = void delegate(DatagramSocketFD, IOStatus, size_t, scope Address);
|
||||
alias DNSLookupCallback = void delegate(DNSLookupID, scope Address[] results);
|
||||
alias FileIOCallback = void delegate(FileFD, IOStatus, size_t);
|
||||
alias EventCallback = void delegate(EventID);
|
||||
alias SignalCallback = void delegate(int);
|
||||
|
@ -315,3 +323,4 @@ alias EventID = Handle!("Event", FD);
|
|||
alias TimerID = Handle!("Timer", int);
|
||||
alias WatcherID = Handle!("Watcher", int);
|
||||
alias EventWaitID = Handle!("EventWait", int);
|
||||
alias DNSLookupID = Handle!("DNS", int);
|
||||
|
|
|
@ -14,6 +14,7 @@ final class LibasyncEventDriver : EventDriver {
|
|||
LibasyncEventDriverCore m_core;
|
||||
LibasyncEventDriverFiles m_files;
|
||||
LibasyncEventDriverSockets m_sockets;
|
||||
LibasyncEventDriverDNS m_dns;
|
||||
LibasyncEventDriverTimers m_timers;
|
||||
LibasyncEventDriverEvents m_events;
|
||||
LibasyncEventDriverSignals m_signals;
|
||||
|
@ -25,6 +26,7 @@ final class LibasyncEventDriver : EventDriver {
|
|||
m_core = new LibasyncEventDriverCore();
|
||||
m_files = new LibasyncEventDriverFiles();
|
||||
m_sockets = new LibasyncEventDriverSockets();
|
||||
m_dns = new LibasyncEventDriverDNS();
|
||||
m_timers = new LibasyncEventDriverTimers();
|
||||
m_events = new LibasyncEventDriverEvents();
|
||||
m_signals = new LibasyncEventDriverSignals();
|
||||
|
@ -34,19 +36,20 @@ final class LibasyncEventDriver : EventDriver {
|
|||
override @property LibasyncEventDriverCore core() { return m_core; }
|
||||
override @property LibasyncEventDriverFiles files() { return m_files; }
|
||||
override @property LibasyncEventDriverSockets sockets() { return m_sockets; }
|
||||
override @property LibasyncEventDriverDNS dns() { return m_dns; }
|
||||
override @property LibasyncEventDriverTimers timers() { return m_timers; }
|
||||
override @property LibasyncEventDriverEvents events() { return m_events; }
|
||||
override @property LibasyncEventDriverSignals signals() { return m_signals; }
|
||||
override @property LibasyncEventDriverWatchers watchers() { return m_watchers; }
|
||||
}
|
||||
|
||||
final class LibasyncEventDriverCore : EventDriverCore {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
override void dispose()
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
}
|
||||
|
||||
final class LibasyncEventDriverCore : EventDriverCore {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
override size_t waiterCount()
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
|
@ -130,6 +133,31 @@ final class LibasyncEventDriverSockets : EventDriverSockets {
|
|||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override DatagramSocketFD createDatagramSocket(scope Address bind_address, scope Address target_address)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void receive(DatagramSocketFD socket, ubyte[] buffer, IOMode mode, DatagramIOCallback on_receive_finish)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void cancelReceive(DatagramSocketFD socket)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void send(DatagramSocketFD socket, const(ubyte)[] buffer, IOMode mode, DatagramIOCallback on_send_finish, Address target_address = null)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void cancelSend(DatagramSocketFD socket)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void addRef(SocketFD descriptor)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
|
@ -141,6 +169,21 @@ final class LibasyncEventDriverSockets : EventDriverSockets {
|
|||
}
|
||||
}
|
||||
|
||||
final class LibasyncEventDriverDNS : EventDriverDNS {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
|
||||
DNSLookupID lookupHost(string name, DNSLookupCallback on_lookup_finished)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
void cancelLookup(DNSLookupID handle)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final class LibasyncEventDriverFiles : EventDriverFiles {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
override FileFD open(string path, FileOpenMode mode)
|
||||
|
@ -153,12 +196,22 @@ final class LibasyncEventDriverFiles : EventDriverFiles {
|
|||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void write(FileFD file, ulong offset, ubyte[] buffer, IOCallback on_write_finish)
|
||||
override void close(FileFD file)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void read(FileFD file, ulong offset, ubyte[] buffer, IOCallback on_read_finish)
|
||||
override ulong getSize(FileFD file)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void write(FileFD file, ulong offset, const(ubyte)[] buffer, FileIOCallback on_write_finish)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void read(FileFD file, ulong offset, ubyte[] buffer, FileIOCallback on_read_finish)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
|
|
@ -46,6 +46,7 @@ final class PosixEventDriver(Loop : PosixEventLoop) : EventDriver {
|
|||
alias SignalsDriver = PosixEventDriverSignals!Loop;
|
||||
alias TimerDriver = LoopTimeoutTimerDriver;
|
||||
alias SocketsDriver = PosixEventDriverSockets!Loop;
|
||||
alias DNSDriver = EventDriverDNS_GAI!(EventsDriver, SignalsDriver);
|
||||
alias FileDriver = ThreadedFileEventDriver!EventsDriver;
|
||||
alias WatcherDriver = PosixEventDriverWatchers!Loop;
|
||||
|
||||
|
@ -55,6 +56,7 @@ final class PosixEventDriver(Loop : PosixEventLoop) : EventDriver {
|
|||
SignalsDriver m_signals;
|
||||
LoopTimeoutTimerDriver m_timers;
|
||||
SocketsDriver m_sockets;
|
||||
DNSDriver m_dns;
|
||||
FileDriver m_files;
|
||||
WatcherDriver m_watchers;
|
||||
}
|
||||
|
@ -67,6 +69,7 @@ final class PosixEventDriver(Loop : PosixEventLoop) : EventDriver {
|
|||
m_timers = new TimerDriver;
|
||||
m_core = new CoreDriver(m_loop, m_timers);
|
||||
m_sockets = new SocketsDriver(m_loop);
|
||||
m_dns = new DNSDriver(m_events, m_signals);
|
||||
m_files = new FileDriver(m_events);
|
||||
m_watchers = new WatcherDriver(m_loop);
|
||||
}
|
||||
|
@ -77,6 +80,7 @@ final class PosixEventDriver(Loop : PosixEventLoop) : EventDriver {
|
|||
final override @property SignalsDriver signals() { return m_signals; }
|
||||
final override @property TimerDriver timers() { return m_timers; }
|
||||
final override @property SocketsDriver sockets() { return m_sockets; }
|
||||
final override @property DNSDriver dns() { return m_dns; }
|
||||
final override @property FileDriver files() { return m_files; }
|
||||
final override @property WatcherDriver watchers() { return m_watchers; }
|
||||
|
||||
|
@ -747,6 +751,25 @@ final class PosixEventDriverSockets(Loop : PosixEventLoop) : EventDriverSockets
|
|||
}
|
||||
|
||||
|
||||
/// getaddrinfo_a based asynchronous lookups
|
||||
final class EventDriverDNS_GAI(Events : EventDriverEvents, Signals : EventDriverSignals) : EventDriverDNS {
|
||||
this(Events events, Signals signals)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
override DNSLookupID lookupHost(string name, DNSLookupCallback on_lookup_finished)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
|
||||
override void cancelLookup(DNSLookupID handle)
|
||||
{
|
||||
assert(false, "TODO!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final class PosixEventDriverEvents(Loop : PosixEventLoop) : EventDriverEvents {
|
||||
@safe: /*@nogc:*/ nothrow:
|
||||
private Loop m_loop;
|
||||
|
|
Loading…
Reference in a new issue