/* * Copyright (C) 2007-2019 Xagasoft, All rights reserved. * * This file is part of the libbu++ library and is released under the * terms of the license contained in the file LICENSE. */ #include "bu/multiserver.h" #include "bu/protocol.h" #include "bu/client.h" #include "bu/config.h" #include "bu/sio.h" Bu::MultiServer::MultiServer() { } Bu::MultiServer::~MultiServer() { } void Bu::MultiServer::addProtocol( Bu::Protocol *(*proc)(), int iPort, int nPoolSize ) { hProtos[iPort] = proc; addPort( iPort, nPoolSize ); } void Bu::MultiServer::addProtocol( Protocol *(*proc)(), const String &sAddr, int iPort, int nPoolSize ) { hProtos[iPort] = proc; addPort( sAddr, iPort, nPoolSize ); } void Bu::MultiServer::onNewConnection( Bu::Client *pClient, int nPort ) { pClient->setProtocol( hProtos.get( nPort )() ); } void Bu::MultiServer::onClosedConnection( Bu::Client *pClient ) { Bu::Protocol *pProto = pClient->getProtocol(); pClient->clearProtocol(); delete pProto; } void Bu::MultiServer::shutdown() { Bu::Server::shutdown(); } void Bu::MultiServer::tick() { Bu::Server::tick(); }