給gloox加上支援接收好友更新頭像的資訊

2021-06-13 06:23:07 字數 1591 閱讀 8185

專案需要,可能實現的有點麻煩,大家如果有好方法,請告訴我!

在gloox庫的基礎上,要實現的功能:

當好友頭像資訊修改後(vcard),本地立即去獲取好友頭像。

1、增加乙個標頭檔案:vcardupdatehandler.h  用來接收好友頭像變更訊息

class vcardupdatehandler

//有人更新vcard資訊

virtual void vcardupdatehash(const jid& jid , const std::string& hash) = 0;

};

2、增加乙個類vcardupdatepresence,用來過濾包 ;

class gloox_api vcardupdatepresence : public stanzaextension

// reimplemented from stanzaextension

virtual tag* tag() const;

// reimplemented from stanzaextension

virtual stanzaextension* clone() const

private:

jid m_fromjid;

std::string m_hash;

bool m_valid;

vcardupdatehandler* m_phandler;

};

3、在主要位置註冊handler:

pvcardupdatepresence_ = new vcardupdatepresence(new vcardupdatehandler);

pclient_->registerstanzaextension(pvcardupdatepresence_);

現在就可以再需要的地方,接收好友更新頭像的資訊了!

附註:vcardupdatepresence.cpp原始碼

vcardupdatepresence::vcardupdatepresence(vcardupdatehandler* phandler)

: stanzaextension( extvcardupdate ),m_valid(false),m_porgtag(null),m_phandler(phandler)

vcardupdatepresence::vcardupdatepresence( vcardupdatehandler* phandler , const tag* tag )

: stanzaextension( extvcardupdate ),m_valid(false),m_porgtag(null),m_phandler(phandler)

if( m_valid && m_phandler)}}

vcardupdatepresence::~vcardupdatepresence()

const std::string& vcardupdatepresence::filterstring() const

給數字加上註解

注釋 命名清晰 簡單,單獨的變數使用,例如 變數定義 int a 1 判斷 if a 1 這些情況下通常會利用巨集定義來代替這些幻數 魔數,例如 定義 define max 1 使用 a max if a max 陣列使用,例如 gui程式設計需要定義5個按鍵,class,pop,定義 button...

給postmessage加上callback方法

postmessage雙向通訊中,是不能使用 函式的。window.postmessage 這樣是不行的,js會提示function不會被轉殖。我猜啊因為postmessage是通過dom通訊,js物件會被json化 也就是說不能傳遞方法。不過,話說回來,有什麼不能的呢,大不了,把function ...

當給main加上synchronized

1。在乙個同步化的靜態方法執行之前,它會獲取與它的class 物件相關聯的乙個管程 monitor 鎖 jls 8.4.3.6 所以在上面的程式中,主線程會在建立第二個執行緒之前獲得與pingpong.class 相關聯的那個鎖。只要主線程 占有著這個鎖,第二個執行緒就不可能執行同步化的靜態方法。具...