dnetd/source/dnetd/listeners/listeners.d

43 lines
846 B
D

/**
* Module for listeners
*
* These include the base listener class responsible
* for managing a connection with peers and some
* concrete classes implementing this for various
* network protocols
*/
module dnetd.listeners.listeners;
import dnetd.server : Server;
import dnetd.exceptions : GeneralException;
import std.exception;
import core.thread : Thread;
public abstract class Listener : Thread
{
private Server server;
this(Server server)
{
super(&serviceLoop);
this.server = server;
}
/**
* The connection accepting loop of which
* is provided as the "worker" function to
* the thread
*/
public abstract void serviceLoop();
}
public abstract class ListenerException : GeneralException
{
/* TODO: Potentially remove `listener` */
this(Listener listener, string msg)
{
/* TODO: Set message here */
super(msg);
}
}