/*************************************************************************** io_internet.h - description ------------------- begin : Thu Aug 16 2001 copyright : (C) 2003 by Troy Corbin Jr. email : tcorbin@users.sourceforge.net ***************************************************************************/ /*************************************************************************** * * * 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 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef IO_INTERNET_H #define IO_INTERNET_H /* Local */ #include "definitions.h" #include "io_base.h" #include "match_param.h" #include "command.h" /* Tabs */ #include "tabmanager.h" #include "console.h" #include "challenge_graph.h" #include "tab_seeklist.h" class TDESocket; class TDEProcess; class resource; class core; class dlg_login; class dlg_challenge; #include /** *@author Troy Corbin Jr / Alexander Wels. */ struct MatchRecord { int knightsID; int serverID; bool observing; bool examining; bool finished; }; const int READ_BUFFER_SIZE = 64 * 1024; /* 64k is max ip packet size */ const int LOGIN_STAGE_NAME = 1; const int LOGIN_STAGE_PASSWORD = 2; const int LOGIN_STAGE_LOGGED_IN = 3; const unsigned int NORMAL_MODE = 1; const unsigned int UPDATE_SOUGHT_MODE = 2; const unsigned int NEW_GAME_MODE = 3; const unsigned int OBSERVE_GAME_MODE = 4; const unsigned int CHALLENGE_MODE = 5; const unsigned int PARSE_MOVE_LIST_MODE = 6; const unsigned int PARSE12_MODE_NEW = 1; const unsigned int PARSE12_MODE_MOVE = 2; typedef TQMap TabMap; class io_internet : public io_base { TQ_OBJECT public: io_internet(TQWidget *parent = NULL, resource *Rsrc = NULL); ~io_internet(); public slots: virtual void recvCMD(const Command& command); void readCommand(TDESocket *); void sendUserName(void); void sendPassword(void); void send(const TQString&); void nullifyChallenge( void ); void acceptChallenge( void ); void declineChallenge( void ); void processSeekTimer( void ); void connectToServer( void ); void selfDestruct( void ); void setUserInfo(TQString userName, TQString passWord); signals: virtual void sendCMD(const Command& command); void setLastPrivateSource( const TQString& ); void setLastChannelSource( const TQString& ); protected: void parseLine(TQString command); void parseLoginData(TQString command); void writeToConsole(TQString text, TQString tag); void updateSoughtList(TQString text); void parseStyle12(TQString line, const unsigned int mode); void sendUserSettings(void); void parseMoveList(TQString data); void sendEndOfGameCommand(TQString line); private: dlg_login *loginDlg; dlg_challenge *challenge; /* These are used to handle the automagic seek command */ TQTimer *seekTimer; /* These are used for the connection & logon */ TQFile *Log; TDESocket *socket; TDEProcess *myTimeseal; struct serverResource *myServer; int loginStage; unsigned int parseMode; TQString lastTag; int ficsMoveListNumber; TQString lineBuffer; bool connected; TQString userName; TQString passWord; /* communication with the server */ TQStringList command_list; /* this is a temp buffer while waiting for the movelist */ bool waiting_for_move_list; TQMap fics_ids; TQMap fics_to_knights; /* maps fics id's to knights id's */ TabMap myTabList; /* maintains the list of the tabs currently owned by this io_internet */ TQValueList myCommandBuffer; /* this is a buffer for all the commands io_internet received while not connected to a server */ }; #endif