123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- #ifndef __PJSUA2_PRESENCE_HPP__
- #define __PJSUA2_PRESENCE_HPP__
- #include <pjsua2/persistent.hpp>
- #include <pjsua2/siptypes.hpp>
- namespace pj
- {
- using std::string;
- using std::vector;
- struct PresenceStatus
- {
-
- pjsua_buddy_status status;
-
- string statusText;
-
-
- pjrpid_activity activity;
-
- string note;
-
- string rpidId;
- public:
-
- PresenceStatus();
- };
- struct BuddyConfig : public PersistentObject
- {
-
- string uri;
-
- bool subscribe;
- public:
-
- virtual void readObject(const ContainerNode &node) PJSUA2_THROW(Error);
-
- virtual void writeObject(ContainerNode &node) const PJSUA2_THROW(Error);
- };
- struct BuddyInfo
- {
-
- string uri;
-
- string contact;
-
- bool presMonitorEnabled;
-
- pjsip_evsub_state subState;
-
- string subStateName;
-
- pjsip_status_code subTermCode;
-
- string subTermReason;
-
- PresenceStatus presStatus;
- public:
-
- BuddyInfo()
- : presMonitorEnabled(true),
- subState(PJSIP_EVSUB_STATE_UNKNOWN),
- subTermCode(PJSIP_SC_NULL)
- {}
-
-
- void fromPj(const pjsua_buddy_info &pbi);
- };
- struct OnBuddyEvSubStateParam
- {
-
- SipEvent e;
- };
- class Buddy
- {
- public:
-
- Buddy();
-
-
- virtual ~Buddy();
-
-
- void create(Account &acc, const BuddyConfig &cfg) PJSUA2_THROW(Error);
-
-
- bool isValid() const;
-
- int getId() const;
-
- BuddyInfo getInfo() const PJSUA2_THROW(Error);
-
- void subscribePresence(bool subscribe) PJSUA2_THROW(Error);
-
-
- void updatePresence(void) PJSUA2_THROW(Error);
-
-
- void sendInstantMessage(const SendInstantMessageParam &prm)
- PJSUA2_THROW(Error);
-
- void sendTypingIndication(const SendTypingIndicationParam &prm)
- PJSUA2_THROW(Error);
- public:
-
-
-
- virtual void onBuddyState()
- {}
-
- virtual void onBuddyEvSubState(OnBuddyEvSubStateParam &prm)
- { PJ_UNUSED_ARG(prm); }
-
- private:
-
- pjsua_buddy_id id;
- private:
- friend class Endpoint;
- friend class Account;
-
- Buddy(pjsua_buddy_id buddy_id);
- Buddy *getOriginalInstance();
- };
- typedef std::vector<Buddy*> BuddyVector;
- typedef std::vector<Buddy> BuddyVector2;
- }
- #endif
|