74 lines
1.5 KiB
D
74 lines
1.5 KiB
D
module listeners.types;
|
|
|
|
import listeners.listener;
|
|
import server.server;
|
|
|
|
import std.socket : Socket, Address, AddressFamily, SocketType;
|
|
|
|
public final class UNIXListener : BesterListener
|
|
{
|
|
this(BesterServer besterServer, Address address)
|
|
{
|
|
super(besterServer);
|
|
setServerSocket(setupUNIXSocket(address));
|
|
}
|
|
|
|
private Socket setupUNIXSocket(Address address)
|
|
{
|
|
Socket unixSocket = new Socket(AddressFamily.UNIX, SocketType.STREAM);
|
|
unixSocket.bind(address);
|
|
return unixSocket;
|
|
}
|
|
|
|
override public string toString()
|
|
{
|
|
string address = "unix://"~super.address.toAddrString();
|
|
return address;
|
|
}
|
|
}
|
|
|
|
public final class TCP4Listener : BesterListener
|
|
{
|
|
this(BesterServer besterServer, Address address)
|
|
{
|
|
super(besterServer);
|
|
setServerSocket(setupTCP4Socket(address));
|
|
}
|
|
|
|
private Socket setupTCP4Socket(Address address)
|
|
{
|
|
Socket tcp4Socket = new Socket(AddressFamily.INET, SocketType.STREAM);
|
|
tcp4Socket.bind(address);
|
|
return tcp4Socket;
|
|
}
|
|
|
|
override public string toString()
|
|
{
|
|
string address = "tcp4://"~super.address.toAddrString();
|
|
return address;
|
|
}
|
|
}
|
|
|
|
public final class TCP6Listener : BesterListener
|
|
{
|
|
this(BesterServer besterServer, Address address)
|
|
{
|
|
super(besterServer);
|
|
setServerSocket(setupTCP6Socket(address));
|
|
}
|
|
|
|
private Socket setupTCP6Socket(Address address)
|
|
{
|
|
Socket tcp6Socket = new Socket(AddressFamily.INET6, SocketType.STREAM);
|
|
tcp6Socket.bind(address);
|
|
return tcp6Socket;
|
|
}
|
|
|
|
override public string toString()
|
|
{
|
|
string address = "tcp6://"~super.address.toAddrString();
|
|
return address;
|
|
}
|
|
}
|
|
|