⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gagmessage.hxx

📁 这是国外的resip协议栈
💻 HXX
字号:
#ifndef _GAG_MESSAGE_HXX#define _GAG_MESSAGE_HXX#include <iostream>#include "rutil/Data.hxx"#include "resip/stack/Uri.hxx"using namespace resip;using namespace std;class GagMessage{  public:    typedef enum    {      // GAIM <-> GAG      IM                 = 0x00,      PRESENCE           = 0x01,      HELLO              = 0x02,        // GAIM --> GAG      LOGIN              = 0x40,      LOGOUT             = 0x41,      ADD_BUDDY          = 0x42,      REMOVE_BUDDY       = 0x43,      SHUTDOWN           = 0x44,      // GAG --> GAIM      GAG_ERROR              = 0x80,      LOGIN_STATUS       = 0x81    } command_t;  public:    static GagMessage *getMessage(int in_fd);    bool isValid() {return valid;}    virtual ostream &serialize(ostream &os) const;    command_t getMessageType() {return messageType;}  protected: // methods    virtual void parse(int in_fd) = 0;    GagMessage(){valid = true;}    static bool parse(int , Data &);    static bool parse(int , Uri &);    static bool parse(int , bool &);    static bool parse(int , int &);    static void serialize(ostream &, const Data &);    static void serialize(ostream &, const Uri &);    static void serialize(ostream &, const bool &);    static void serialize(ostream &, const int &);  private: //methods    static ssize_t readAll(int, char*, size_t);  protected: // attributes    command_t messageType;    bool valid;  };class GagImMessage : public GagMessage{  public:    GagImMessage(const Uri &_from, const Uri &_to, const Data &_im) :      from(_from), to(_to), im(_im) {messageType = IM;}    GagImMessage(int in_fd) { messageType = IM; parse (in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    Uri *getFromPtr() {return &from;}    Uri *getToPtr() {return &to;}    Data *getImPtr() {return &im;}  private:    Uri from;    Uri to;    Data im;};class GagPresenceMessage : public GagMessage{  public:    GagPresenceMessage(const Uri &_aor, bool _available, const Data &_status):      aor(_aor), available(_available), status(_status)      { messageType=PRESENCE ;}    GagPresenceMessage(int in_fd) { messageType=PRESENCE; parse (in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    Uri *getAorPtr() {return &aor;}    bool getAvailable() {return available;}    Data *getStatusPtr() {return &status;}  private:    Uri aor;    bool available;    Data status;};class GagHelloMessage : public GagMessage{  public:    GagHelloMessage(bool _ok) : ok(_ok) { messageType=HELLO; }    GagHelloMessage(int in_fd) { messageType=HELLO; parse (in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    bool getOk() {return ok;}  private:    bool ok;};class GagLoginMessage : public GagMessage{  public:    GagLoginMessage(const Uri &_aor, Data &_userid, const Data &_password,                    const bool _register_with_service,                     const bool _publish_to_service):      aor(_aor), userid(_userid), password(_password),      register_with_service(_register_with_service),      publish_to_service(_publish_to_service)       { messageType=LOGIN; }    GagLoginMessage(int in_fd) { messageType=LOGIN; parse (in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    Uri *getAorPtr() {return &aor;}    Data *getUseridPtr() {return &userid;}    Data *getPasswordPtr() {return &password;}    bool getRegisterWithService() {return register_with_service;}    bool getPublishToService() {return publish_to_service;}  private:    Uri aor;    Data userid;    Data password;    bool register_with_service;    bool publish_to_service;};class GagLogoutMessage : public GagMessage{  public:    GagLogoutMessage(const Uri &_aor) : aor(_aor) {messageType=LOGOUT;}    GagLogoutMessage(int in_fd) {messageType=LOGOUT; parse(in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    Uri *getAorPtr() {return &aor;}  private:    Uri aor;};class GagAddBuddyMessage : public GagMessage{  public:    GagAddBuddyMessage(const Uri &_us, const Uri &_them)       : us(_us), them(_them) { messageType=ADD_BUDDY; }    GagAddBuddyMessage(int in_fd) { messageType=ADD_BUDDY; parse(in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    Uri *getUsPtr() {return &us;}    Uri *getThemPtr() {return &them;}  private:    Uri us;    Uri them;};class GagRemoveBuddyMessage : public GagMessage{  public:    GagRemoveBuddyMessage(const Uri &_us, const Uri &_them)       : us(_us), them(_them) { messageType=REMOVE_BUDDY; }    GagRemoveBuddyMessage(int in_fd)       { messageType=REMOVE_BUDDY; parse (in_fd); }    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    Uri *getUsPtr() {return &us;}    Uri *getThemPtr() {return &them;}  private:    Uri us;    Uri them;};class GagShutdownMessage : public GagMessage{  public:    GagShutdownMessage() {messageType = SHUTDOWN;}    GagShutdownMessage(int in_fd) {messageType = SHUTDOWN;}    virtual ostream &serialize(ostream &os) const {return os;}    virtual void parse(int in_fd) {return;}};class GagErrorMessage : public GagMessage{  public:    GagErrorMessage(const Data &_message) : message(_message)      {messageType= GAG_ERROR;}    GagErrorMessage(int in_fd) {messageType= GAG_ERROR; parse(in_fd);}    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);  private:    Data message;};class GagLoginStatusMessage : public GagMessage{  public:    GagLoginStatusMessage(bool _success, int _sipCode, const Data &_message)       : success (_success), sipCode (_sipCode), message(_message)       {messageType=LOGIN_STATUS;}    GagLoginStatusMessage(int in_fd) {messageType=LOGIN_STATUS; parse(in_fd);}    virtual ostream &serialize(ostream &os) const;    virtual void parse(int in_fd);    bool succeeded() {return success;}    int getSipCode() {return success;}    Data *getMessagePtr() {return &message;}  private:    bool success;    int sipCode;    Data message;};inlineostream &operator<< (ostream &os, const GagMessage &msg){  return msg.serialize(os);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -