tcp_admin.h

Go to the documentation of this file.
00001 /* $Id: tcp_admin.h 21358 2010-11-30 13:38:46Z rubidium $ */
00002 
00003 /*
00004  * This file is part of OpenTTD.
00005  * OpenTTD 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, version 2.
00006  * OpenTTD 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.
00007  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
00008  */
00009 
00014 #ifndef NETWORK_CORE_TCP_ADMIN_H
00015 #define NETWORK_CORE_TCP_ADMIN_H
00016 
00017 #include "os_abstraction.h"
00018 #include "tcp.h"
00019 #include "../network_type.h"
00020 #include "../../core/pool_type.hpp"
00021 
00022 #ifdef ENABLE_NETWORK
00023 
00028 enum PacketAdminType {
00029   ADMIN_PACKET_ADMIN_JOIN,             
00030   ADMIN_PACKET_ADMIN_QUIT,             
00031   ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY, 
00032   ADMIN_PACKET_ADMIN_POLL,             
00033   ADMIN_PACKET_ADMIN_CHAT,             
00034   ADMIN_PACKET_ADMIN_RCON,             
00035 
00036   ADMIN_PACKET_SERVER_FULL = 100,      
00037   ADMIN_PACKET_SERVER_BANNED,          
00038   ADMIN_PACKET_SERVER_ERROR,           
00039   ADMIN_PACKET_SERVER_PROTOCOL,        
00040   ADMIN_PACKET_SERVER_WELCOME,         
00041   ADMIN_PACKET_SERVER_NEWGAME,         
00042   ADMIN_PACKET_SERVER_SHUTDOWN,        
00043 
00044   ADMIN_PACKET_SERVER_DATE,            
00045   ADMIN_PACKET_SERVER_CLIENT_JOIN,     
00046   ADMIN_PACKET_SERVER_CLIENT_INFO,     
00047   ADMIN_PACKET_SERVER_CLIENT_UPDATE,   
00048   ADMIN_PACKET_SERVER_CLIENT_QUIT,     
00049   ADMIN_PACKET_SERVER_CLIENT_ERROR,    
00050   ADMIN_PACKET_SERVER_COMPANY_NEW,     
00051   ADMIN_PACKET_SERVER_COMPANY_INFO,    
00052   ADMIN_PACKET_SERVER_COMPANY_UPDATE,  
00053   ADMIN_PACKET_SERVER_COMPANY_REMOVE,  
00054   ADMIN_PACKET_SERVER_COMPANY_ECONOMY, 
00055   ADMIN_PACKET_SERVER_COMPANY_STATS,   
00056   ADMIN_PACKET_SERVER_CHAT,            
00057   ADMIN_PACKET_SERVER_RCON,            
00058   ADMIN_PACKET_SERVER_CONSOLE,         
00059 
00060   INVALID_ADMIN_PACKET = 0xFF,         
00061 };
00062 
00064 enum AdminStatus {
00065   ADMIN_STATUS_INACTIVE,      
00066   ADMIN_STATUS_ACTIVE,        
00067   ADMIN_STATUS_END            
00068 };
00069 
00071 enum AdminUpdateType {
00072   ADMIN_UPDATE_DATE,            
00073   ADMIN_UPDATE_CLIENT_INFO,     
00074   ADMIN_UPDATE_COMPANY_INFO,    
00075   ADMIN_UPDATE_COMPANY_ECONOMY, 
00076   ADMIN_UPDATE_COMPANY_STATS,   
00077   ADMIN_UPDATE_CHAT,            
00078   ADMIN_UPDATE_CONSOLE,         
00079   ADMIN_UPDATE_END              
00080 };
00081 
00083 enum AdminUpdateFrequency {
00084   ADMIN_FREQUENCY_POLL      = 0x01, 
00085   ADMIN_FREQUENCY_DAILY     = 0x02, 
00086   ADMIN_FREQUENCY_WEEKLY    = 0x04, 
00087   ADMIN_FREQUENCY_MONTHLY   = 0x08, 
00088   ADMIN_FREQUENCY_QUARTERLY = 0x10, 
00089   ADMIN_FREQUENCY_ANUALLY   = 0x20, 
00090   ADMIN_FREQUENCY_AUTOMATIC = 0x40, 
00091 };
00092 DECLARE_ENUM_AS_BIT_SET(AdminUpdateFrequency)
00093 
00094 
00095 enum AdminCompanyRemoveReason {
00096   ADMIN_CRR_MANUAL,    
00097   ADMIN_CRR_AUTOCLEAN, 
00098   ADMIN_CRR_BANKRUPT   
00099 };
00100 
00101 #define DECLARE_ADMIN_RECEIVE_COMMAND(type) virtual NetworkRecvStatus NetworkPacketReceive_## type ##_command(Packet *p)
00102 #define DEF_ADMIN_RECEIVE_COMMAND(cls, type) NetworkRecvStatus cls ##NetworkAdminSocketHandler::NetworkPacketReceive_ ## type ## _command(Packet *p)
00103 
00105 class NetworkAdminSocketHandler : public NetworkTCPSocketHandler {
00106 protected:
00107   char admin_name[NETWORK_CLIENT_NAME_LENGTH];           
00108   char admin_version[NETWORK_REVISION_LENGTH];           
00109   AdminStatus status;                                    
00110 
00117   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_ADMIN_JOIN);
00118 
00122   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_ADMIN_QUIT);
00123 
00129   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY);
00130 
00138   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_ADMIN_POLL);
00139 
00147   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_ADMIN_CHAT);
00148 
00153   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_ADMIN_RCON);
00154 
00158   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_FULL);
00159 
00163   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_BANNED);
00164 
00169   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_ERROR);
00170 
00178   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_PROTOCOL);
00179 
00192   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_WELCOME);
00193 
00197   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_NEWGAME);
00198 
00202   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_SHUTDOWN);
00203 
00208   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_DATE);
00209 
00214   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CLIENT_JOIN);
00215 
00225   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CLIENT_INFO);
00226 
00233   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CLIENT_UPDATE);
00234 
00239   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CLIENT_QUIT);
00240 
00246   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CLIENT_ERROR);
00247 
00252   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_NEW);
00253 
00264   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_INFO);
00265 
00279   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_UPDATE);
00280 
00286   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_REMOVE);
00287 
00301   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY);
00302 
00317   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_STATS);
00318 
00327   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CHAT);
00328 
00334   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_RCON);
00335 
00341   DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_CONSOLE);
00342 
00343   NetworkRecvStatus HandlePacket(Packet *p);
00344 public:
00345   NetworkRecvStatus CloseConnection(bool error = true);
00346 
00347   NetworkAdminSocketHandler(SOCKET s);
00348   ~NetworkAdminSocketHandler();
00349 
00350   NetworkRecvStatus ReceivePackets();
00351 
00352   const char *ReceiveCommand(Packet *p, CommandPacket *cp);
00353   void SendCommand(Packet *p, const CommandPacket *cp);
00354 };
00355 
00356 #endif /* ENABLE_NETWORK */
00357 
00358 #endif /* NETWORK_CORE_TCP_ADMIN_H */

Generated on Thu Dec 23 23:41:26 2010 for OpenTTD by  doxygen 1.6.1