/** * \file * * \author Georg Hopp * * \copyright * Copyright © 2014 Georg Hopp * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "trbase.h" #include "trio.h" #include "trevent.h" #include "tr/server.h" #include "tr/comm_manager.h" #include "tr/comm_manager_poll.h" #include "tr/comm_manager_epoll.h" #include "tr/connector.h" #include "tr/io_handler.h" #include "tr/protocol_handler.h" static int serverCtor(void * _this, va_list * params) { TR_Server this = _this; #if 1 this->comm_manager = (TR_CommManager)TR_new(TR_CommManagerEpoll); #else this->comm_manager = (TR_CommManager)TR_new(TR_CommManagerPoll); #endif this->dispatcher = TR_new(TR_EventDispatcher, TR_EVD_SERVER, NULL); this->connector = TR_new(TR_Connector); this->io_handler = TR_new(TR_IoHandler); this->protocol_handler = TR_new(TR_ProtocolHandler); TR_eventDispatcherRegisterHandler( this->dispatcher, (TR_EventHandler)this->comm_manager); TR_eventDispatcherRegisterHandler( this->dispatcher, (TR_EventHandler)this->connector); TR_eventDispatcherRegisterHandler( this->dispatcher, (TR_EventHandler)this->io_handler); TR_eventDispatcherRegisterHandler( this->dispatcher, (TR_EventHandler)this->protocol_handler); return 0; } static void serverDtor(void * _this) { TR_Server this = _this; TR_delete(this->protocol_handler); TR_delete(this->io_handler); TR_delete(this->connector); TR_delete(this->dispatcher); TR_delete(this->comm_manager); } TR_INIT_IFACE(TR_Class, serverCtor, serverDtor, NULL); TR_CREATE_CLASS(TR_Server, NULL, NULL, TR_IF(TR_Class)); // vim: set ts=4 sw=4: