#include "protocol.h"
#include "server.h"
#include "connection.h"
Server::Server():
socket() { }
Server::~Server()
{ }
void Server::open(Socket *socket) {
Lock lock(mutex);
close();
if (!socket) return;
this->socket = socket;
onOpen();
}
void Server::close(ErrorCode errorCode) {
Socket *socketCopy;
{
Lock lock(mutex);
if (!socket) return;
onClose(errorCode);
socketCopy = socket;
socket = nullptr;
}
socketCopy->finalize();
}
Protocol& Server::getProtocol() const
{ assert(socket); return socket->protocol; }
const Address& Server::getLocalAddress() const
{ assert(socket); return socket->address; }
void Server::onOpen()
{ }
void Server::onClose(ErrorCode)
{ }
Connection::Handle Server::onConnect(const Address&)
{ return nullptr; }
void Server::onDisconnect(const Connection::Handle&)
{ }