7.gloox 之 RosterManager

gloox 之 RosterManager服務器

此類實現了jabber:iq:roster名空間中的Jabber/XMPP花名冊操做異步

它繼承了   IqHandler, PresenceHandler,SubscriptionHandler  和 PrivateXMLHandler函數

詳細說明:
    此類實現了jabber:iq: roster名空間中的Jabber/XMPP花名冊操做。
    它管理着出席,訂閱的變動等等 。你能夠在任什麼時候間改動花名冊中的名冊條目項。這些改動必須經過調用synchronize()函數與服務器同步。
    注意:到達的花名冊中條目初始值可能會被其它資源重寫而改變。另外XEP-0083(花名冊的組管理)也在此處實現了。ui

構造與析構函數
RosterManager( ClientBase * parent )
構造一個新的RosterManager對象。
參數:   parent 一個用來通訊的ClientBase對象.net

~RosterManager() (虛函數)xml


成員函數對象


void handleSubscription( Stanza* stanza )
從新實現此函數, 當多個訂閱/一個訂閱請求到達時,應用獲得通知。
須實現SubscriptionHandler接口blog


void ackSubscriptionRequest( const JID & to, bool ack )
若是你被要求異步處理訂閱請求,你可使用此函數回覆一個訂閱請求
參數:
     to   被回覆的JID( 即贊成或拒絕 此JID的訂閱請求)
     ack  是否贊成/拒絕上述聯繫人的訂閱請求繼承

void subscribe (  const  JID&          jid,
                         const std::string& name="",
                         const StringList&  groups=StringList(),
                         const std::string& msg=""
)
使用此函數訂閱一個新的聯繫人。此聯繫人會被自動地加入花名冊(符合RFC 3921 的服務器 )。
參數:
       jid      要訂閱的聯繫人jid
       name  聯繫人的顯示名稱
       groups 聯繫人所屬的組列表
       msg    同訂閱請求一塊兒發送的文本接口


void unsubscribe( const JID&           jid,
                          const std::string& msg=""
)
使用此函數取消對一個聯繫人的訂閱。你將再也不收到此聯繫人的出席信息。


注意:
    remove()函數從花名冊中移除一個聯繫人而且取消了對此聯繫人的訂閱。

 

void  cancel(  const JID& jid,
                    const std::string& msg=""
)
使用此函數取消一個聯繫人對你出席的訂閱。聯繫人將不會再從你那裏收到出席信息。
參數:
      jid      聯繫人的JID
      msg   同取消請求一塊兒發送的文本內容。


注意:
      使用remove() 從花名冊中移除一個聯繫人而且取消對此聯繫人的訂閱。


void  remove( const JID& jid )
使用此函數從花名冊中除一個聯繫人,而且對於此聯繫人的訂閱也會被取消。
參數:  jid    聯繫人的JID


void add(  const JID & jid,
               const std::string& name,
               const StringList&  groups
)
使用此函數向花名冊中添加一個聯繫人。不會發送訂閱請求。
注意: 使用 unsubscribe()從花名冊中移除一個條目。
參數:
     jid     將要添加聯繫人的JID
     name  聯繫人外部顯示的名稱
     groups 聯繫人所屬的組列表(譯註:一個聯繫人,能夠屬於多個組)

 

const std::string& delimiter( ) const
使用此函數檢索嵌套花名冊組的分隔符(XEP-0083),返回組分隔符

 

void fill()
此函數用當前服務端的花名冊初始化應用的花名冊


RosterItem*  getRosterItem( const JID& jid )
經過此函數你能夠獲取指定JID的花名冊條目
參數:   jid   將要獲取的花名冊條目所屬的JID


bool  handleIq( Stanza* stanza ) (虛函數)
重寫此函數,當IQ節到達時,你將會獲得通知
參數:  stanza   完整節
返回值:  代表一個get 或set 類型的請求是否己經被處理。包含必須的result回覆。若是你返回了false,一個error將被髮送出去。
須實現 IqHandler接口


bool handleIqID( Stanza* stanza,
                        int         context
) (虛函數)
實現此函數,你能夠接收到指定id屬性值的IQ節的到達通知。你必須使用Client::trackID()跟蹤這些id。這對那些產生一個明確應答的那些id比較有用。
例如:名空間過濾器不能工做時的<iq type='result' id='reg'/>

參數:
      stanza   完整節。
      context  用來複原上下文的一個值。與ClientBase::trackID()儲存在一塊兒。
返回值:代表一個get 或set 類型的請求是否己經被處理。包含必須的result回覆。若是你返回了false,一個error將被髮送出去。
須實現 IqHandler接口


void handlePresence( Stanza* stanza )
重寫此函數你能夠在出席通知到達時進行一些更新操做。


void handlePrivateXML( const std::string& tag,
                                    Tag*                   xml
)
從新實現此函數,能夠接收早些時候調用PrivateXML::requestXML()函數請求的隱蔽的XML數據
參數:
     tag    標籤的數據包
     xml   隱蔽的xml數據。例如:<query>標籤的第一個子標籤。
須實現PrivateXMLHandler接口


void handlePrivateXMLResult( const std::string& uid,
                                            PrivateXMLResult  pxResult,
) (虛函數)
此函數被調用,用來通知一個store或request操做的結果(憑藉(利用)handlePrivateXML()函數,成功的請求被宣佈。)
參數:
      uid    請求的ID
      pxResult  操做的結果

須實現PrivateXMLHandler接口

 

void registerRosterListener( RosterListener*  rl,
                                         bool                  syncSubscribeReq = true
)
註冊一個RosterListener對象用來接收花名冊的更新信息。對應用的圖形界面來講,這比較有用,當咱們須要顯示一個對話框或用其它方式顯示的時候,不想被被阻塞,那麼咱們可使用異步的訂閱請求。若是咱們想當即應答一個請求,那麼就使用同步的方式。
參數:
       rl     負責接收花名冊更新的對象
       syncSubscribeReq   表示訂閱(取消)請求應該被異步(false)或同步(true)的處理。默認:同步。


void removeRosterListener( )
移除當前的RosterListener對象,花名冊的全部事件將不會在任何地方被接收。


Roster*  roster()
返回一個花名冊,實際是一個<JID,出席> map結構。


void setDelimiter(  const std::string& delimiter )
使用此函數設定組的分隔符(XEP-0083)
    

void synchronize( )
應用中的花名冊條目改動同步地反映到服務器

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/night_cat/archive/2009/06/21/4284536.aspx

相關文章
相關標籤/搜索