Implemented reuse server socket parameter
[delight/dlt-lib.git] / dlt / net.dlt
blob71d973ce4772a22e07e9c784fbb8aa309f426d7d
1 module dlt.net
3 import dlt.io: format
5 public import std.socket:
6         AddressFamily, SocketType, ProtocolType
7         SocketShutdown, SocketFlags, SocketOption, SocketOptionLevel
9 private import socket = std.socket
11 class Address:
12         in string address
13         AddressFamily addressFamily
15         this():
16                 addressFamily = AddressFamily.INET
18         this(AddressFamily af):
19                 addressFamily = af
21         override string toString():
22                 return address
24 class InternetHost:
25         string name
26         string[] aliases
27         Address[] addrList
29 interface Socket:
30         Address localAddress()
31         int getOption(SocketOptionLevel level, SocketOption option, void[] result)
32         void setOption(SocketOptionLevel level, SocketOption option, void[] value)
34         bool isAlive()
35         void shutdown(SocketShutdown how)
36         void close()
38 interface ClientSocket extends Socket:
39         Address remoteAddress()
40         int send(const(void)[] buf, SocketFlags flags = SocketFlags.NONE)
41         int receive(void[] buf, SocketFlags flags = SocketFlags.NONE)
43 interface ServerSocket extends Socket:
44         ClientSocket accept()
46 interface ServerSocketFactory:
47         ServerSocket create(const Address address,
48                              int backlog = 32,
49                              bool reuse = false)
51 interface ClientSocketFactory:
52         ClientSocket create(const Address address,
53                              SocketType type,
54                              ProtocolType protocol)
56 interface NameResolver:
57         const(InternetHost) getHostByName(string name)
58         const(InternetHost) getHostByAddr(string addr)
60 interface Network:
61         ServerSocketFactory server()
62         ClientSocketFactory client()
63         NameResolver resolver()
64         string hostname()