icqprotocol.h

00001 // -*- C++ -*- 00002 #ifndef __ENGINE_H 00003 #define __ENGINE_H 00004 00005 #include "gm/protocol.h" 00006 #include "gm/basenetwork.h" 00007 00008 #include <stdarg.h> 00009 #include <stdio.h> 00010 00011 #include <string> 00012 #include <list> 00013 00014 namespace GNUMessenger { 00015 00016 #define ICQ_SETSTATUS_ONLINE 0x00030000 00017 #define ICQ_SETSTATUS_AWAY 0x00030001 00018 #define ICQ_SETSTATUS_NA 0x00030005 00019 #define ICQ_SETSTATUS_OCCUPIED 0x00030011 00020 #define ICQ_SETSTATUS_DND 0x00030013 00021 #define ICQ_SETSTATUS_INVISIBLE 0x00030100 00022 #define ICQ_PROTO_ID 0x0001 00023 00025 class Packet; 00027 class FSPacket; 00028 00029 00036 class IcqProtocol : public Protocol 00037 { 00038 public: 00039 IcqProtocol(const XMLNode &,ProtocolManager *manager); 00040 virtual ~IcqProtocol(); 00041 00042 const int protocolId() {return ICQ_PROTO_ID;} 00043 const string screenName() {return "";} 00044 00045 virtual void login(); 00046 virtual void logout(); 00047 00048 // virtual void icq_setStatus(uint32 status = ICQ_SETSTATUS_ONLINE); 00049 virtual bool sendMessage(const Contact &recipient, const string &message); 00050 virtual void addContact(const Contact &contact); 00051 virtual void delContact(const Contact &contact); 00052 virtual void newUser(const string& userName, const VBuffer& password) {} 00053 00054 virtual void handleData(Network *net) {} 00055 virtual void handleData(Network *net,const string& data); 00056 virtual void connectedToServer(Network *net); 00057 virtual void connectionError(Network *net,int error); 00058 virtual void reset() {} 00059 00060 private: 00061 /*enum e_state { DISCONNECTING, CONNECTING, 00062 BUSY, E_ERROR, IDLE, OFFLINE };*/ 00063 00064 enum IState { AUTHORIZER, BOS }; 00065 enum IcqErrors { E_Authorizer = ICQ_PROTO_ID * 65536 }; 00066 00067 int parsePacket(const Packet &p); 00068 int parseFnac(const Packet &p); 00069 int parseFnacGen(const FSPacket &p); 00070 int parseFnacLoc(const FSPacket &p); 00071 int parseFnacBud(const FSPacket &p); 00072 int parseFnacMsg(const FSPacket &p); 00073 int parseFnacBos(const FSPacket &p); 00074 int parseFnacIcq(const FSPacket &p); 00075 00076 void packetError(const Packet *p, const char *fmt, ...); 00077 //uint32 _status; 00078 //state_e _state; 00079 IState _istate; 00080 //string _uin; 00081 //string _pass; 00082 VBuffer _cookie; 00083 int _seq; 00084 VBuffer _recvbuf; 00085 //ContactList _contacts; 00086 //list<string> _contacts; 00087 Network *m_net; 00088 }; 00089 00090 } // !GNUMessenger 00091 00092 #endif

Generated on Tue Oct 5 14:41:47 2004 for GNU Messenger by doxygen 1.3.8