Fixed compile errors.

This commit is contained in:
Tristan B. Kildaire 2020-07-27 14:11:07 +02:00
parent e49f8fa9fd
commit c7398586ea
5 changed files with 44 additions and 5 deletions

View File

@ -1,12 +1,14 @@
{
"listeners" : {
"enabled" : [],
"ipv4" : {
"listener1" : {
"type" : "ipv4",
"domain" : "10.0.0.9:2222",
"address" : "0.0.0.0",
"port" : "6969"
},
"ipv6" : {
"listener2" : {
"type" : "ipv6",
"domain" : "10.0.0.9:2222",
"address" : "::",
"port" : "6969"

View File

@ -6,6 +6,7 @@ import std.file;
import std.json : JSONValue, parseJSON;
import std.conv : to;
import server.listener : ButterflyListener;
import server.listeners;
void main()
{
@ -40,5 +41,14 @@ private ButterflyListener[] constructListeners(JSONValue listenersBlock)
enabledListeners ~= listenerType.str();
}
foreach(string listener; enabledListeners)
{
writeln("Constructing listener \"" ~ listener ~ "\" ...");
writeln("Listener \"" ~ listener ~ "\"constructed");
}
return listeners;
}

View File

@ -2,21 +2,39 @@ module server.listener;
import core.thread : Thread;
import server.server : ButterflyServer;
import std.json : JSONValue;
public abstract class ButterflyListener : Thread
{
private ButterflyServer server;
private string listenerName;
private JSONValue config;
this()
this(string listenerName, JSONValue config)
{
super(&run);
this.listenerName = listenerName;
this.config = config;
}
public abstract void run();
public abstract void run()
{
}
public void setServer(ButterflyServer server)
{
this.server = server;
}
public string getName()
{
return listenerName;
}
public JSONValue getConfig()
{
return config;
}
}

View File

@ -3,21 +3,26 @@ module server.listeners;
import core.thread : Thread;
import server.listener : ButterflyListener;
import std.socket : Socket, Address, SocketType, ProtocolType;
import std.json : JSONValue;
public class IPv4Listener : ButterflyListener
{
private Socket serverSocket;
this(Address bindAddress)
this(string name, JSONValue config)
{
super(name, config);
Address bindAddress;
/**
* Instantiate a new Socket for the given Address
* `bindAddress` of which it will bind to.
*/
serverSocket = new Socket(bindAddress.addressFamily, SocketType.STREAM, ProtocolType.TCP);
serverSocket.bind(bindAddress);
}
public override void run()

View File

@ -4,6 +4,7 @@ import std.socket : Socket, Address, SocketType, ProtocolType;
import client.client : ButterflyClient;
import std.file : mkdir, exists, isDir;
import server.listener : ButterflyListener;
import std.stdio : writeln;
public final class ButterflyServer
{
@ -93,7 +94,10 @@ public final class ButterflyServer
/* Start the listeners */
foreach(ButterflyListener listener; listeners)
{
writeln("Starting listener \"" ~ listener.getName() ~"\" ...");
writeln("Listener is using configuration: "~listener.getConfig().toPrettyString());
listener.start();
writeln("Listener \"" ~ listener.getName() ~ "\" started");
}
}