00001 /* 00002 * The Mana World Server 00003 * Copyright 2004 The Mana World Development Team 00004 * 00005 * This file is part of The Mana World. 00006 * 00007 * The Mana World is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 2 of the License, or 00010 * any later version. 00011 * 00012 * The Mana World is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with The Mana World; if not, write to the Free Software 00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 */ 00021 00022 #ifndef _TMWSERV_CONNECTIONHANDLER_H_ 00023 #define _TMWSERV_CONNECTIONHANDLER_H_ 00024 00025 #include <list> 00026 #include <enet/enet.h> 00027 00028 class MessageIn; 00029 class MessageOut; 00030 class NetComputer; 00031 00037 class ConnectionHandler 00038 { 00039 public: 00040 virtual ~ConnectionHandler() {} 00041 00045 bool startListen(enet_uint16 port); 00046 00050 void stopListen(); 00051 00059 virtual void process(enet_uint32 timeout = 0); 00060 00064 void flush(); 00065 00069 //void receivePacket(NetComputer *computer, Packet *packet); 00070 00074 void sendToEveryone(const MessageOut &msg); 00075 00079 unsigned int getClientNumber(); 00080 00081 private: 00082 ENetAddress address; 00083 ENetHost *host; 00085 protected: 00090 virtual NetComputer *computerConnected(ENetPeer *peer) = 0; 00091 00095 //virtual NetComputer *computerReconnected(ENetPeer *) = 0; 00096 00103 virtual void computerDisconnected(NetComputer *) = 0; 00104 00108 virtual void processMessage(NetComputer *, MessageIn &) = 0; 00109 00110 typedef std::list<NetComputer*> NetComputers; 00115 NetComputers clients; 00116 }; 00117 00118 #endif