Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

evaqun.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by yunfan                                          *
00003  *   yunfan_zg@163.com                                                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 #ifndef LIBEVAQUN_H
00021 #define LIBEVAQUN_H
00022 
00023 #include "evadefines.h" 
00024 #include "evapacket.h"
00025 #include "evafriend.h"
00026 #include <string>
00027 #include <list>
00028 #include <map>
00029 
00030 /*
00031      this file does all qun operations
00032 */
00033 
00034 class QunInfo {
00035 public:
00036         QunInfo();
00037         const int getQunID() const { return qunID; }
00038         const int getExtID() const { return externalID; }
00039         const unsigned char getType() const { return type;}
00040         const int getCreator() const { return creator; }
00041         const unsigned char getAuthType() const { return authType; }
00042         const short getUnknown1() const { return unknown1; }
00043         const unsigned int getCategory() const { return category; }
00044         const int getVersionID() const { return versionID; }
00045         const std::string getName() const { return name; }
00046         const short getUnknown2() const { return unknown2; }
00047         const std::string getDescription() const { return description; }
00048         const std::string getNotice() const { return notice; }
00049         
00050         void setQunID(const int id) { qunID = id; }
00051         void setExtID(const int id) { externalID = id; }
00052         void setType(const unsigned char t) { type = t;}
00053         void setCreator(const int qq) { creator = qq; }
00054         void setAuthType(const unsigned char type) { authType = type; }
00055         void setUnknown1(const short unknown) { unknown1 = unknown; }
00056         void setCategory(const unsigned  int cate) { category = cate; }
00057         void setVersionID(const int vID) { versionID = vID; }
00058         void setName(const std::string &n) { name = n; }
00059         void setUnknown2(const short unknown) { unknown2 = unknown; }
00060         void setDescription(const std::string &descrip) { description = descrip; }
00061         void setNotice(const std::string &n) { notice = n; }    
00062         
00063         QunInfo &operator=(const QunInfo &rhs);
00064         const bool operator==(const QunInfo &rhs);
00065         
00066         int readTempQunInfo(unsigned char *buf);
00067         int readQunInfo(unsigned char *buf);
00068         int readQunInfoFromSearchReply(unsigned char *buf);
00069 private:        
00070         // internal Qun ID used in QQ protocol
00071         int qunID;
00072         // if is permanent Qun, external ID, if temporary Qun, parent's Qun ID
00073         int externalID;
00074         // type of permanent or temporary Qun
00075         unsigned char type;
00076         int creator;
00077         unsigned char authType;
00078         short unknown1;
00079         unsigned int category;
00080         int versionID;
00081         std::string name;
00082         short unknown2;
00083         std::string description;
00084         std::string notice;
00085 };
00086 
00087 class QunPacket : public OutPacket {
00088 public:
00089         QunPacket() {};
00090         QunPacket(const char qunCmd);
00091         QunPacket(const char qunCmd, const int id);  
00092         QunPacket(const QunPacket &rhs);
00093         virtual ~QunPacket();
00094 
00095         OutPacket * copy() { return new QunPacket(*this);}
00096         QunPacket &operator=(const QunPacket &rhs);
00097         
00098         const char getQunCommand() const { return qunCommand; }
00099         const int getQunID() const { return qunID; }
00100         
00101         void setQunCommand(const char cmd) { qunCommand = cmd; }
00102         void setQunID(const int id) { qunID = id; }
00103         
00104 protected:
00105         char qunCommand;
00106         int qunID;
00107 };
00108 
00109 typedef struct QunMember{
00110 int qqNum;
00111 unsigned char groupIndex;
00112 unsigned char admin;// note: 1 means admin, 6 means shareholder, value 4 is unknown
00113 } QunMember;
00114 
00115 class QunReplyPacket : public InPacket {
00116 public:
00117         QunReplyPacket() {}
00118         QunReplyPacket(unsigned char *buf, int len) ;  
00119         QunReplyPacket(const QunReplyPacket &rhs);
00120         virtual ~QunReplyPacket();
00121         
00122         InPacket * copy() { return new QunReplyPacket(*this);}
00123         QunReplyPacket &operator=(const QunReplyPacket &rhs);
00124         
00125         const char getQunCommand() const { return qunCommand; }
00126         const char getReplyCode() const { return replyCode; }
00127         const int getQunID() const { return qunID; }
00128         const int getExtID() const {  return externalID; }
00129         const char getType() const { return type; }
00130         const int getParentQunID() const { return parentQunID; }
00131         const std::string getErrorMessage() const { return errorMessage; }
00132         
00133         const unsigned char getSearchType() const { return searchType; }
00134         const QunInfo &getQunInfo() const { return info; }
00135         const std::map<int, QunMember> &getMemberList() const { return memberList; }
00136         const std::list<QunInfo> &getQunInfoList() const { return qunInfoList; }
00137         const std::list<int> &getQQNumberList() const { return qunQQNumberList; }
00138         const std::list<FriendItem> &getMemberInfoList() const { return memberInfoList; }
00139         const unsigned char getJoinReply() const { return joinReply; }
00140         
00141         const bool isReplyOK() const;
00142         
00143         const int getTargetQQ() const { return targetQQ; }
00144         const unsigned char getOpCode() const { return opCode;}
00145         const unsigned int getQunVersionID() const { return versionID; }
00146         
00147         const std::string &getRealName() const { return realName; }
00148         const unsigned char getGender() const { return gender; }
00149         const std::string &getPhone() const { return phone; }
00150         const std::string &getEmail() const { return email; }
00151         const std::string &getMemo() const { return memo; }
00152 
00153         const int getCardVersion() const { return m_CardVersion; }
00154         const int getNextStartIndex() const { return m_NextStart; }
00155         const std::map<int, std::string> &getRealNames() const { return m_RealNameList; }
00156 protected:
00157         virtual void parseBody();
00158         
00159 private: 
00161         char qunCommand;
00162         // reply code, determine if request ok or not
00163         char replyCode;
00165         int qunID;
00167         int externalID;
00169         char type;
00171         int parentQunID;
00172         
00174         std::string errorMessage;
00175         
00176         unsigned char searchType;
00177         QunInfo info;
00181         std::list<QunInfo> qunInfoList;
00182         
00186         std::list<int> qunQQNumberList;
00187         
00189         std::map<int,QunMember> memberList;
00190         
00192         std::list<FriendItem> memberInfoList;
00194         unsigned char joinReply;
00195         
00196         int targetQQ; // for modify Qun card , requesting Qun card,  set/unset Admin, transfer
00197         unsigned char opCode; // set/unset Admin
00198         unsigned int versionID; // set/unset Admin, transfer
00199 
00201         int m_NextStart;  // next start index
00202         int m_CardVersion;
00203         std::map<int, std::string>m_RealNameList;
00204         
00206         std::string realName;
00207         unsigned char gender;
00208         std::string phone;
00209         std::string email;
00210         std::string memo;
00211         
00212         
00213         int parseSendIMReply(unsigned char *buf, int len);
00214         int parseSendTempQunIMReply(unsigned char *buf, int len);
00215         int parseCreateReply(unsigned char *buf, int len);
00216         int parseCreateTempQun(unsigned char *buf, int len);
00217         int parseActivateReply(unsigned char *buf, int len);
00218         int parseModifyMemberReply(unsigned char *buf, int len);
00219         int parseGetInfoReply(unsigned char *buf, int len);
00220         int parseExitReply(unsigned char *buf, int len);
00221         int parseGetMemberInfoReply(unsigned char *buf, int len);
00222         int parseGetOnlineMemberReply(unsigned char *buf, int len);
00223         int parseJoinReply(unsigned char *buf, int len);
00224         int parseJoinAuthReply(unsigned char *buf, int len);
00225         int parseModifyInfoReply(unsigned char *buf, int len);
00226         int parseSearchReply(unsigned char *buf, int len);
00227         int parseGetTempQunInfoReply(unsigned char *buf, int len);
00228         int parseExitTempQunReply(unsigned char *buf, int len);
00229         int parseGetTempQunMembers(unsigned char *buf, int len);
00230         int parseModifyQunCard(unsigned char *buf, int len);
00231         int parseRequestAllRealNames(unsigned char *buf, int len);
00232         int parseRequestQunCard(unsigned char *buf, int len);
00233         int parseQunAdminOperation(unsigned char *buf, int len);
00234         int parseQunTransfer(unsigned char *buf, int len);
00235 };
00236 
00237 class QunGetInfoPacket : public QunPacket {
00238 public:
00239         QunGetInfoPacket() {}
00240         QunGetInfoPacket(const int id);  
00241         QunGetInfoPacket(const QunGetInfoPacket &rhs);
00242         virtual ~QunGetInfoPacket();
00243 protected:
00244         virtual int putBody(unsigned char *buf);
00245 };
00246 
00247 class QunGetMemberInfoPacket : public QunPacket {
00248 public:
00249         QunGetMemberInfoPacket() {}
00250         QunGetMemberInfoPacket(const int id);
00251         QunGetMemberInfoPacket(const QunGetMemberInfoPacket &rhs);
00252         virtual ~QunGetMemberInfoPacket();
00253         
00254         QunGetMemberInfoPacket &operator=( const QunGetMemberInfoPacket &rhs);
00255         
00256         void addMember(const int id);
00257         
00258         const std::list<int> &getMemberList() const { return memberList; }
00259         void setMemberList(const std::list<int> list) { memberList = list; }
00260 protected:
00261         virtual int putBody(unsigned char *buf);
00262         
00263 private:
00264         std::list<int> memberList;
00265 };
00266 
00267 class QunGetOnlineMemberPacket : public QunPacket {
00268 public:
00269         QunGetOnlineMemberPacket() {}
00270         QunGetOnlineMemberPacket(const int id);  
00271         QunGetOnlineMemberPacket(const QunGetOnlineMemberPacket &rhs);
00272         virtual ~QunGetOnlineMemberPacket();
00273 protected:
00274         virtual int putBody(unsigned char *buf);
00275 };
00276 
00277 class QunActivatePacket : public QunPacket {
00278 public:
00279         QunActivatePacket() {}
00280         QunActivatePacket(const int id);  
00281         QunActivatePacket(const QunActivatePacket &rhs);
00282         virtual ~QunActivatePacket();
00283 protected:
00284         virtual int putBody(unsigned char *buf);
00285 };
00286 
00287 class QunAuthPacket : public QunPacket {
00288 public:
00289         QunAuthPacket() {}
00290         QunAuthPacket(const int id, int authType);  
00291         QunAuthPacket(const QunAuthPacket &rhs);
00292         virtual ~QunAuthPacket();
00293         
00294         const int getAuthType() const { return type; }
00295         const int getReceiver() const { return receiver; }
00296         const std::string getMessage() const { return message; }
00297         
00298         void setAuthType(const int t) { type = t; }
00299         void setReceiver(const int r) { receiver = r; }
00300         void setMessage(const std::string &msg) { message = msg; }
00301         
00302         QunAuthPacket &operator=(const QunAuthPacket &rhs);
00303 protected:
00304         virtual int putBody(unsigned char *buf);
00305 private:
00306         int type;
00307         int receiver;
00308         std::string message;
00309 };
00310 
00311 class QunSendIMPacket : public QunPacket {
00312 public:
00313         QunSendIMPacket() {}
00314         QunSendIMPacket(const int id);  
00315         QunSendIMPacket(const QunSendIMPacket &rhs);
00316         virtual ~QunSendIMPacket();
00317         OutPacket * copy() { return new QunSendIMPacket(*this);}
00318         QunSendIMPacket &operator=(const QunSendIMPacket &rhs);
00319         
00320         const std::string &getFontName() const { return fontName; }               // font setting
00321         void setFontName(std::string &fontName) { this->fontName = fontName; }
00322         const char getFontSize() const { return fontSize; }
00323         void setFontSize(char fontSize); 
00324         const short getEncoding() const { return encoding; }
00325         void setEncoding(short encoding) { this->encoding = encoding; }
00326 
00327         const bool isUnderline() const { return underline;}                      // U B I setting
00328         void setUnderline(bool underline) ;
00329         const bool isItalic() const { return italic; }
00330         void setItalic(bool italic);
00331         const bool isBold() const { return bold; };
00332         void setBold(bool bold);
00333         
00334         const char getBlue() const { return blue; }                         // color setting
00335         void setBlue(char blue) { this->blue = blue; }
00336         const char getGreen() const { return green; }
00337         void setGreen(char green)  {this->green = green; }
00338         const char getRed() const { return red; }
00339         void setRed(char red) { this->red = red; }
00340         
00341         /*
00342               the message is plain text, which means the smiley code is already
00343               replaced with plain text.  
00344         */
00345         const std::string &getMessage() const { return message; }              // message you want to send
00346         void setMessage(std::string message) { this->message = message; }   // and just put your plain text message here
00347 protected:
00348         virtual int putBody(unsigned char *buf);
00349         
00350         short encoding;
00351         std::string fontName;
00352         char red, green, blue;
00353         bool bold, italic, underline;
00354         unsigned char fontSize;
00355         unsigned char fontFlag; 
00356            
00357         std::string message; 
00358 };
00359 
00360 class QunSendIMExPacket : public QunSendIMPacket{
00361 public: 
00362         QunSendIMExPacket() {}
00363         QunSendIMExPacket(const int id);  
00364         QunSendIMExPacket(const QunSendIMExPacket &rhs);
00365         virtual ~QunSendIMExPacket() {};
00366         OutPacket * copy() { return new QunSendIMExPacket(*this);}
00367         QunSendIMExPacket &operator=(const QunSendIMExPacket &rhs);
00368         
00369         const unsigned char getNumFragments() const { return numFragments; }
00370         const unsigned char getSeqOfFragments() const { return seqFragments; }
00371         const short getMessageID() const { return messageID; }
00372         
00373         void setNumFragments(const unsigned char num) { numFragments = num; }
00374         void setSeqOfFragments( const unsigned char seq) { seqFragments = seq; }
00375         void setMessageID(const short id) { messageID = id; }
00376 
00377 protected:
00378         virtual int putBody(unsigned char *buf);
00379 private:
00380         unsigned char numFragments;
00381         unsigned char seqFragments;
00382         static short messageID;
00383 };
00384 
00385 class QunSearchPacket : public QunPacket {
00386 public:
00387         QunSearchPacket();
00388         QunSearchPacket(int type);  
00389         QunSearchPacket(const QunSearchPacket &rhs);
00390         virtual ~QunSearchPacket() {};
00391         
00392         const int getSearchType() const { return type; }
00393         const int getExtID() const { return externalID; }
00394         
00395         void setSearchType(const int t) { type = t; }
00396         void setExtID(const int id) { externalID = id; }
00397         
00398         QunSearchPacket &operator=(const QunSearchPacket &rhs);
00399 protected:
00400         virtual int putBody(unsigned char *buf);
00401 private:
00402         unsigned char type;
00403         int externalID;
00404 };
00405 
00406 
00407 class QunJoinPacket : public QunPacket {
00408 public:
00409         QunJoinPacket() {}
00410         QunJoinPacket(const int id);  
00411         QunJoinPacket(const QunJoinPacket &rhs);
00412         virtual ~QunJoinPacket();
00413 protected:
00414         virtual int putBody(unsigned char *buf);
00415 };
00416 
00417 class QunModifyPacket : public QunPacket {
00418 public:
00419         QunModifyPacket() {}
00420         QunModifyPacket(const QunInfo &inf);  
00421         QunModifyPacket(const QunModifyPacket &rhs);
00422         virtual ~QunModifyPacket(){};
00423         
00424         const QunInfo &getQunInfo() const { return info; }
00425         
00426         QunModifyPacket &operator=(const QunModifyPacket &rhs);
00427 protected:
00428         virtual int putBody(unsigned char *buf);
00429 private:
00430         QunInfo info;
00431 };
00432 
00433 class QunRequestCardPacket :  public QunPacket {
00434 public:
00435         QunRequestCardPacket() {}
00436         QunRequestCardPacket(const int qunID, const int qqID);  
00437         QunRequestCardPacket(const QunRequestCardPacket &rhs);
00438         virtual ~QunRequestCardPacket(){};
00439         
00440         const int getQQ() const { return qqNum; }
00441         QunRequestCardPacket &operator=(const QunRequestCardPacket &rhs);
00442 protected:
00443         virtual int putBody(unsigned char *buf);
00444 private:
00445         int qqNum;
00446 };
00447 
00448 class QunModifyCardPacket : public QunPacket {
00449 public:
00450         QunModifyCardPacket() {}
00451         QunModifyCardPacket(const int qunID, const int qqID);  
00452         QunModifyCardPacket(const QunModifyCardPacket &rhs);
00453         virtual ~QunModifyCardPacket(){};
00454         
00455         const int getQQ() const { return qqNum; }
00456         const std::string &getName() const { return name;}
00457         const unsigned char getGender() const { return gender; }
00458         const std::string &getPhone() const { return phone;}
00459         const std::string &getEmail() const { return email;}
00460         const std::string &getMemo() const { return memo;}
00461         
00462         void setQQ(const int qqID) { qqNum = qqID; }
00463         void setName(const std::string &n) { name = n; }
00464         void setGender(const unsigned char g) { gender = g; }
00465         void setPhone(const std::string &ph) { phone = ph; }
00466         void setEmail(const std::string &e) { email = e; }
00467         void setMemo(const std::string &m) { memo = m; }
00468         
00469         
00470         QunModifyCardPacket &operator=(const QunModifyCardPacket &rhs);
00471 protected:
00472         virtual int putBody(unsigned char *buf);
00473 private:
00474         int qqNum;
00475         std::string name;
00476         unsigned char gender;
00477         std::string phone;
00478         std::string email;
00479         std::string memo;
00480 };
00481 
00482 class QunAdminOpPacket : public QunPacket {
00483 public:
00484         QunAdminOpPacket() {}
00485         QunAdminOpPacket(const int id, const int qqID, const bool isSetAdmin);  
00486         QunAdminOpPacket(const QunAdminOpPacket &rhs);
00487         virtual ~QunAdminOpPacket() {};
00488         
00489         const int getQQ() const { return qqNum; }
00490         const unsigned char getActionCode() const { return action; }
00491         
00492         void setQQ(const int qq) { qqNum = qq; }
00493         void setActionCode( const unsigned char code) { action = code; }
00494         
00495         QunAdminOpPacket &operator=(const QunAdminOpPacket &rhs);
00496 protected:
00497         virtual int putBody(unsigned char *buf);
00498 private:
00499         int qqNum;
00500         unsigned char action;
00501 };
00502 
00503 class QunTransferPacket : public QunPacket {
00504 public:
00505         QunTransferPacket() {}
00506         QunTransferPacket(const int id, const int qqID);  
00507         QunTransferPacket(const QunTransferPacket &rhs);
00508         virtual ~QunTransferPacket() {};
00509         
00510         const int getQQ() const { return qqNum; }
00511         void setQQ(const int qq) { qqNum = qq; }
00512         
00513         QunTransferPacket &operator=(const QunTransferPacket &rhs);
00514 protected:
00515         virtual int putBody(unsigned char *buf);
00516 private:
00517         int qqNum;
00518 };
00519 
00520 
00521 class QunModifyMemberPacket : public QunPacket {
00522 public:
00523         QunModifyMemberPacket() {}
00524         QunModifyMemberPacket(const int id, const bool isAdd);  
00525         QunModifyMemberPacket(const QunModifyMemberPacket &rhs);
00526         virtual ~QunModifyMemberPacket() {};
00527         
00528         const std::list<int> &getMembers() const { return members; }
00529         const bool isAdd() const { return mIsAdd; }
00530         
00531         void setMembers(const std::list<int> list) { members=list; }
00532         void setAdd( const bool isAdd) { mIsAdd = isAdd; }
00533         
00534         QunModifyMemberPacket &operator=(const QunModifyMemberPacket &rhs);
00535 protected:
00536         virtual int putBody(unsigned char *buf);
00537 private:
00538         std::list<int> members;
00539         bool mIsAdd;
00540 };
00541 
00542 class QunExitPacket : public QunPacket {
00543 public:
00544         QunExitPacket() {}
00545         QunExitPacket(const int id);  
00546         QunExitPacket(const QunExitPacket &rhs);
00547         virtual ~QunExitPacket() {};
00548         
00549         QunExitPacket &operator=(const QunExitPacket &rhs);
00550 protected:
00551         virtual int putBody(unsigned char *buf);
00552 };
00553 
00554 class QunCreatePacket : public QunPacket {
00555 public:
00556         QunCreatePacket() {}
00557         QunCreatePacket(const std::string &name, const unsigned short category, 
00558                         const unsigned char auth = QQ_QUN_JOIN_NEED_AUTH);
00559         QunCreatePacket(const QunCreatePacket &rhs);
00560         
00561         void setNotice(const std::string &notice) { qunNotice = notice; }
00562         void setDescription(const std::string &desc) { qunDescription = desc; }
00563         void setMembers( const std::list<int> &members) { qunMembers = members; }
00564         
00565         const std::string & getName() const { return qunName; }
00566         const unsigned short getCategory() const { return qunCategory; }
00567         const unsigned char getAuth() const { return qunAuth; }
00568         
00569         const std::string & getNotice() const { return qunNotice; }
00570         const std::string & getDescription() const { return qunDescription; }
00571         const std::list<int> & getMembers() const { return qunMembers; }
00572         
00573         QunCreatePacket &operator=(const QunCreatePacket &rhs);
00574         
00575 protected:
00576         virtual int putBody(unsigned char *buf);
00577 private:
00578         unsigned char qunAuth;
00579         unsigned short qunCategory;
00580         std::string qunName;
00581         std::string qunNotice;
00582         std::string qunDescription;
00583         std::list<int> qunMembers;
00584 };
00585 
00586 class QunActivePacket : public QunPacket {
00587 public:
00588         QunActivePacket() {}
00589         QunActivePacket(const int id);  
00590         QunActivePacket(const QunActivePacket &rhs);
00591         virtual ~QunActivePacket() {};
00592         
00593         QunActivePacket &operator=(const QunActivePacket &rhs);
00594 protected:
00595         virtual int putBody(unsigned char *buf);        
00596 };
00597 
00598 class QunRequestAllRealNames : public QunPacket {
00599 public:
00600         QunRequestAllRealNames() {}
00601         QunRequestAllRealNames(const int id); 
00602         QunRequestAllRealNames(const QunRequestAllRealNames &rhs);
00603         virtual ~QunRequestAllRealNames() {};
00604 
00605         void setStartIndex(const int index) { m_StartIndex = index; }
00606         const int getStartIndex() const { return m_StartIndex; }
00607 
00608         QunRequestAllRealNames &operator=(const QunRequestAllRealNames &rhs);
00609 protected:
00610         virtual int putBody(unsigned char *buf);
00611 private:
00612         int m_StartIndex;
00613 };
00614 
00615 #endif

Generated on Mon May 15 20:48:41 2006 for libeva by  doxygen 1.4.4