00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
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
00071 int qunID;
00072
00073 int externalID;
00074
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;
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
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;
00197 unsigned char opCode;
00198 unsigned int versionID;
00199
00201 int m_NextStart;
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; }
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;}
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; }
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
00343
00344
00345 const std::string &getMessage() const { return message; }
00346 void setMessage(std::string message) { this->message = message; }
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 ¬ice) { 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