青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

libjingle翻譯之《Important Concepts(重要概念)之Signals (信號)》

轉(zhuǎn)載自:http://blog.csdn.net/night_cat/article/details/3495530

Important Concepts(重要概念)

你應該理解libjingle中以下的重要概念:

 Signals                                          (信號)

 Threads and Messages                     (線程、消息)

 Naming Conventions                        (命名約定)

 SSL Support                                    SSL 支持)

 Connections                                    (鏈接)

 Transports, Channels, and Connections (傳輸、通道、鏈接)

 Candidates                                     (協(xié)商)

 Data Packets                                   (數(shù)據(jù)包)

 

 

Signals   (信號)

libjingle 使用sigslot 促進對象間的通信。sigslot是一種framework,它可以把呼叫方(calling member)和任意類實現(xiàn)的接收函數(shù)很容易地關(guān)聯(lián)起來,工作方式就像這樣:

1、  發(fā)出呼叫的類聲明一個數(shù)據(jù)成員(被稱作信號),聲明方式使用一種很像模板的語法。這個信號數(shù)據(jù)成員定義了和接收函數(shù)一致的參數(shù)。(注:這個接收函數(shù)當然是屬于某個類了)

2、  類中的接收函數(shù)在實現(xiàn)時,它的參數(shù)必須與它關(guān)聯(lián)的信號的參數(shù)相同,這里的參數(shù)相同是指數(shù)量相同,類型相同和次序相同。這個接收函數(shù)有時被稱作receiverslot(注意:接收函數(shù)可以與信號數(shù)據(jù)成員同屬一個類)。接收函數(shù)不能有返回值(可以是void)。它必須繼承自sigslot::has_slots<>

3、  通過呼叫信號數(shù)據(jù)成員的connect函數(shù),使信號數(shù)據(jù)成員與接收函數(shù)關(guān)聯(lián)起來,呼叫時傳遞兩個參數(shù):一個是接收函數(shù)所在類的對象指針,另一個是類中的接收函數(shù)的地址。

4、  呼叫方使用信號成員就像是調(diào)用它自己的函數(shù)一樣,傳遞給與信號成員聲明時一致的參數(shù)就可以了。如果調(diào)用信號成員成功,則所有與此信號成員關(guān)聯(lián)的任意類中的接收函數(shù)都會被調(diào)用。

我們可以把任意數(shù)量的信號成員與一個接收函數(shù)關(guān)系起來。libjingle有時就是把多個信號成員與一個接收函數(shù)關(guān)聯(lián)起來,達到統(tǒng)一處理消息之目的。相反,一些類對象聲明一個信號對象,是為了從一個“信號點”廣播消息(“信號點”語意上講就是一個信號成員對象,此對象關(guān)聯(lián)了眾多的接收函數(shù),當此信號成員被調(diào)用時,這些接收函數(shù)都能接收到消息,即這些接收函數(shù)都被調(diào)用)。當對象(包括信號成員所在對象和傳遞給connect函數(shù)的接收函數(shù)所屬類對象)被銷毀時,sigslot庫會小心處理取消關(guān)聯(lián)和引用關(guān)系。

下面的代碼示范了sigslot庫的使用方法:

 

// Class that sends the notification.

class Sender {

// The signal declaration.

// The &apos;2&apos; in the name indicates the number of parameters. Parameter //types

// are declared in the template parameter list.

sigslot::signal2<string message, std::time_t time> SignalDanger;

// When anyone calls Panic(), we will send the SignalDanger signal.

void Panic(){

SignalDanger("Help!", std::time(0));

}

// Listening class. It must inherit sigslot.

class Receiver : public sigslot::has_slots<>{

// Receiver registers to get SignalDanger signals.

// When SignalDanger is sent, it is caught by OnDanger().

// Second parameter gives address of the listener function class definition.

// First parameter points to instance of this class to receive notifications.

Receiver(Sender sender){

sender->SignalDanger.connect(this, &Receiver.OnDanger);

}

// When anyone calls Panic(), Receiver::OnDanger gets the message.

// Notice that the number and type of parameters match

// those in Sender::SignalDanger, and that it doesn&apos;t return a value.

void Receiver::OnDanger(string message, std::time_t time){

if(message == "Help!")

{

// Call the police

...

}

}

...

}

 

Sender 類聲明了一個信號數(shù)據(jù)成員:

sigslot::signal2<string message, std::time_t time> SignalDanger;

       語句中的“<string message, std::time_t time>”聲明了可以與此信號成員關(guān)聯(lián)的接收函數(shù)的參數(shù)形式,必須是 void functionName( string,std::time_t )形式。

       Sender類的成員數(shù)void Panic()實現(xiàn)中可以看到,使用信號成員的形式就像是在調(diào)用一個與信號成員同名的函數(shù)SignalDanger("Help!", std::time(0));,參數(shù)類型就是聲明信號成員時指定的參數(shù)。

 

Receiver類繼承自sigslot::has_slots<>,它的成員函數(shù)就具有了成為“接收函數(shù)”的“潛質(zhì)”。

       Receiver的構(gòu)造函數(shù)可以看出,當Receiver對象創(chuàng)建時,必須向它指定一個信號類(即聲明了信號成員的類)對象作為構(gòu)建造函數(shù)的參數(shù),當然此信號類必須有Receiver定義的操作用到的信號成員的樣式。

       一旦Receiver類對象被創(chuàng)建,Sender類中的信號成員就與Receiver類中的OnDanger()函數(shù)關(guān)聯(lián)起來了,只要Sender對象的Panic()被調(diào)用,Receiver類對象的OnDanger()就被調(diào)用,即接收到來自Sender對象的消息,從而進行處理。

:

 

Sender sender;

Receiver  receiver(sender);

如果 運行:

sender.Panic();

receiver.OnDanger();

被自動調(diào)用,在此函數(shù)的內(nèi)部就可以處理來自sender的消息。

實現(xiàn)了信號類與接收類之間的松偶合性。

 

libjingle庫中的一些類,發(fā)送信號給接收函數(shù)(即listeners 監(jiān)聽者,可理解為某個類的接收函數(shù)),用來傳遞一些重要事件。比如:當你發(fā)出或收到一個鏈接嘗試時,Call::SignalSessionState就會發(fā)出通知信號。在應用程序中應該有接收函數(shù)與這些信號關(guān)聯(lián)起來,并且做出適當?shù)男袨椤?/span>

 

按照libjingle中的約定,在聲明信號數(shù)據(jù)成員時,名字被冠以“Signal”字符,比如:SignalStateChange,SignalSessionState,SignalSessionCreate

與這些信號關(guān)聯(lián)的函數(shù)名被冠以“On,比如:OnPortDestropyed(),OnOutgoingMessage(),OnSendPacket();

 

關(guān)于 sigslot庫的更多內(nèi)容,請查看sigslot文檔。

 

若有錯誤,請您指正,thanks!




posted on 2013-09-01 16:30 楊粼波 閱讀(454) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线播放视频| 欧美日韩一区在线观看视频| 久久蜜桃精品| 玉米视频成人免费看| 免费黄网站欧美| 亚洲欧洲视频在线| 一区二区日韩免费看| 国产精品久久久久久久久免费| 亚洲天堂久久| 久久―日本道色综合久久| 在线高清一区| 欧美日韩一区三区四区| 亚洲免费影视第一页| 久久综合九色综合久99| 亚洲精品视频在线观看网站| 欧美亚洲成人网| 久久久久久久一区二区| 亚洲国产日韩欧美在线99| 亚洲一区二区视频在线观看| 国产婷婷色一区二区三区在线 | 一色屋精品视频免费看| 欧美mv日韩mv国产网站app| 一区二区三区国产盗摄| 久久久久网站| 一区二区三欧美| 激情久久五月天| 欧美日韩精品在线观看| 欧美一级成年大片在线观看| 亚洲成人自拍视频| 欧美亚洲日本网站| 亚洲人成网站999久久久综合| 欧美午夜无遮挡| 久久网站热最新地址| 亚洲午夜在线观看视频在线| 欧美二区不卡| 欧美一区二区视频97| 日韩视频免费在线| 狠狠做深爱婷婷久久综合一区| 欧美人与性动交a欧美精品| 香蕉久久一区二区不卡无毒影院| 欧美激情在线免费观看| 久久精品一二三区| 一区二区三区国产精华| 在线看片欧美| 国产一区二区三区四区三区四| 欧美日韩国产一区二区三区地区| 久久久久久久综合狠狠综合| 亚洲资源av| 99精品国产在热久久| 欧美国产日本韩| 久久综合网络一区二区| 午夜欧美不卡精品aaaaa| 亚洲最新色图| 最新亚洲一区| 亚洲电影第三页| 伊人久久大香线蕉av超碰演员| 国产精品日本欧美一区二区三区| 欧美高清一区| 欧美 日韩 国产一区二区在线视频 | 亚洲国产另类久久久精品极度 | 亚洲第一在线综合在线| 久久九九国产| 欧美在线视频一区| 亚洲自拍偷拍网址| 亚洲视频综合| 99在线精品观看| 99伊人成综合| 日韩视频一区二区在线观看 | 欧美三级午夜理伦三级中视频| 欧美18av| 欧美激情视频一区二区三区免费 | 亚洲一卡二卡三卡四卡五卡| 99国产精品| 99精品国产在热久久下载| 亚洲免费成人av电影| 亚洲美女视频在线观看| 亚洲美女在线国产| 日韩一区二区电影网| 9l国产精品久久久久麻豆| 一本色道久久精品| 国产精品99久久不卡二区| 正在播放亚洲一区| 亚洲一区制服诱惑| 午夜一区不卡| 久久蜜桃资源一区二区老牛| 嫩草伊人久久精品少妇av杨幂| 玖玖玖国产精品| 欧美精品一区二区三| 国产精品高潮视频| 国产毛片一区| 好吊妞**欧美| 亚洲人成亚洲人成在线观看图片 | 久久另类ts人妖一区二区| 久久九九精品| 亚洲福利视频二区| 日韩写真视频在线观看| 亚洲一区观看| 久久激情一区| 欧美激情精品久久久久久大尺度| 欧美日韩视频| 国产亚洲精品bv在线观看| 永久免费毛片在线播放不卡| 亚洲精品久久久蜜桃| 亚洲欧美激情精品一区二区| 久久精品亚洲精品国产欧美kt∨| 老司机一区二区三区| 亚洲激情欧美激情| 亚洲尤物视频网| 免费在线亚洲欧美| 国产精品麻豆成人av电影艾秋| 国产在线国偷精品产拍免费yy| 91久久精品美女| 欧美一二三视频| 女人香蕉久久**毛片精品| 亚洲精品男同| 久久aⅴ国产紧身牛仔裤| 欧美成人性网| 国产亚洲永久域名| 亚洲伦理久久| 久久精品一区二区三区不卡牛牛 | 欧美性jizz18性欧美| 一区二区在线看| 亚洲免费视频成人| 老司机精品福利视频| 一区二区三区欧美在线| 久久综合九色九九| 国产精品视频yy9299一区| 亚洲欧洲日本一区二区三区| 午夜精品久久久久久久蜜桃app | 欧美性jizz18性欧美| 亚洲成人在线网| 欧美一区二区三区精品| 91久久在线播放| 久久久久成人精品| 国产精品视频一二| 日韩视频第一页| 欧美成人第一页| 香港成人在线视频| 国产精品a久久久久| 亚洲黄一区二区| 免费一级欧美片在线观看| 亚洲网址在线| 欧美日韩在线免费| 亚洲经典视频在线观看| 久久久久国产一区二区| 亚洲香蕉伊综合在人在线视看| 欧美成人午夜激情在线| 亚洲高清不卡一区| 久久久久久黄| 小辣椒精品导航| 国产精品一区二区久久久久| 亚洲一区中文| 日韩亚洲不卡在线| 欧美精品18+| 亚洲免费高清视频| 亚洲夫妻自拍| 免费在线视频一区| 亚洲激情黄色| 亚洲大黄网站| 欧美va亚洲va香蕉在线| 亚洲电影有码| 欧美黄污视频| 欧美成人一区二区三区| 亚洲国产综合在线| 亚洲国产一区二区视频| 欧美国产视频在线| 日韩亚洲国产精品| 亚洲精品字幕| 欧美性色综合| 久久岛国电影| 久久婷婷一区| 亚洲精品视频在线观看网站| 亚洲二区在线视频| 欧美日韩国产成人在线91| 一区二区高清视频| 亚洲图片欧美午夜| 国产亚洲精品bv在线观看| 久久久久久久久一区二区| 欧美专区中文字幕| 亚洲国产欧美久久| 亚洲第一在线综合网站| 欧美日韩精品在线视频| 午夜一区二区三区不卡视频| 午夜一区二区三区不卡视频| 今天的高清视频免费播放成人| 免费av成人在线| 欧美交受高潮1| 午夜欧美精品| 久久综合九色99| 亚洲调教视频在线观看| 亚洲在线观看视频| 黄色亚洲在线| 亚洲精品黄色| 国产欧美日韩专区发布| 欧美/亚洲一区| 欧美午夜在线视频| 久久一本综合频道| 欧美激情精品久久久| 午夜精品久久久久久久男人的天堂 | 欧美激情一区二区三区在线视频|