/* EQ2Emulator: Everquest II Server Emulator Copyright (C) 2007 EQ2EMulator Development Team (http://www.eq2emulator.net) This file is part of EQ2Emulator. EQ2Emulator 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. EQ2Emulator 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 EQ2Emulator. If not, see . */ #ifndef IRC_SERVER_H_ #define IRC_SERVER_H_ #include "../client.h" #include "IRCChannel.h" #include "IRCMessage.h" //maximum host length for an irc server #define IRC_HOST_LEN_MAX 256 //maximum nick name on an irc server for the client #define IRC_NICK_LEN_MAX 32 class IRCServer { public: IRCServer(); IRCServer(int32 character_id, const char *host, short port, const char *nick); IRCServer(const char *host, short port, const char *nick); virtual ~IRCServer(); const char * GetHost() {return host;} short GetPort() {return port;} bool IsConnected() {return connected;} vector * GetChannels() {return &channels;} IRCChannel * GetChannel(const char *channel_name); IRCChannel * GetChannel(int32 channel_index); int Connect(); void Disconnect(); int JoinChannel(const char *channel_name); int LeaveChannel(const char *channel_name); int Say(const char *channel_name, const char *message); int Say(int32 channel_index, const char *message); bool Process(); private: int32 character_id; char host[IRC_HOST_LEN_MAX + 1]; //host (eg. irc.myircserver.com) short port; //port (default is typically 6667) char nick[IRC_NICK_LEN_MAX + 1]; int sockfd; //socket used to connect to the irc server vector channels; bool connected; void ProcessLine(Client *client, const char *line); void Send(IRCMessage *message); void HandlePing(); void Say(IRCChannel *channel, const char *message); bool m_globalServer; }; #endif