專案需要,可能實現的有點麻煩,大家如果有好方法,請告訴我!
在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 相關聯的那個鎖。只要主線程 占有著這個鎖,第二個執行緒就不可能執行同步化的靜態方法。具...