/* * 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/serversocket.h" #include "bu/config.h" #include "bu/sio.h" Bu::MultiServer::MultiServer() { } Bu::MultiServer::~MultiServer() { } void Bu::MultiServer::addProtocol( Bu::Protocol *(*proc)(), Bu::ServerSocket *pServer ) { addServerSocket( pServer ); int iFd; pServer->getFd( iFd ); hProtos.insert( iFd, proc ); } void Bu::MultiServer::onNewConnection( const Bu::ServerSocket *pSrv, Client *pClient, Bu::Socket * /*pSocket*/ ) { int iFd; if( pSrv->getFd( iFd ) ) { pClient->setProtocol( hProtos.get( iFd )() ); } } 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(); }