Blob Blame Raw

#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&)
	{ }