besterd/source/listeners/types.d

74 lines
1.5 KiB
D
Raw Normal View History

2020-04-24 17:48:22 +02:00
module listeners.types;
import listeners.listener;
import server.server;
2020-04-20 19:39:30 +02:00
import std.socket : Socket, Address, AddressFamily, SocketType;
public final class UNIXListener : BesterListener
{
2020-04-20 19:39:30 +02:00
this(BesterServer besterServer, Address address)
{
super(besterServer);
2020-04-20 19:39:30 +02:00
setServerSocket(setupUNIXSocket(address));
}
2020-04-20 19:39:30 +02:00
private Socket setupUNIXSocket(Address address)
{
2020-04-20 19:39:30 +02:00
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;
}
2020-04-20 18:51:40 +02:00
}
public final class TCP4Listener : BesterListener
2020-04-20 18:51:40 +02:00
{
2020-04-20 19:39:30 +02:00
this(BesterServer besterServer, Address address)
2020-04-20 18:51:40 +02:00
{
super(besterServer);
2020-04-20 19:39:30 +02:00
setServerSocket(setupTCP4Socket(address));
2020-04-20 18:51:40 +02:00
}
2020-04-20 19:39:30 +02:00
private Socket setupTCP4Socket(Address address)
2020-04-20 18:51:40 +02:00
{
2020-04-20 19:39:30 +02:00
Socket tcp4Socket = new Socket(AddressFamily.INET, SocketType.STREAM);
tcp4Socket.bind(address);
return tcp4Socket;
2020-04-20 18:51:40 +02:00
}
override public string toString()
{
string address = "tcp4://"~super.address.toAddrString();
return address;
}
2020-04-20 18:51:40 +02:00
}
public final class TCP6Listener : BesterListener
2020-04-20 18:51:40 +02:00
{
2020-04-20 19:39:30 +02:00
this(BesterServer besterServer, Address address)
2020-04-20 18:51:40 +02:00
{
super(besterServer);
2020-04-20 19:39:30 +02:00
setServerSocket(setupTCP6Socket(address));
2020-04-20 18:51:40 +02:00
}
2020-04-20 19:39:30 +02:00
private Socket setupTCP6Socket(Address address)
2020-04-20 18:51:40 +02:00
{
2020-04-20 19:39:30 +02:00
Socket tcp6Socket = new Socket(AddressFamily.INET6, SocketType.STREAM);
tcp6Socket.bind(address);
return tcp6Socket;
2020-04-20 18:51:40 +02:00
}
override public string toString()
{
string address = "tcp6://"~super.address.toAddrString();
return address;
}
2020-04-20 18:51:40 +02:00
}