Error
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆分類
《并發(fā)的藝術(shù)》(1)
agg(2)
android(2)
boost(3)
boost::asio(8)
boost::iostream(3)
C/C++技巧(9)
CEGUI
chromium(1)
cmake 莫糾結(jié)(2)
cocos2d-x(10)
cpp 1x and boost(1)
Duilib(3)
emacs學(xué)的不容易(1)
facebook: thrift(1)
gtest(1)
iocp(2)
java(2)
jsp(1)
linux(3)
lock free(1)
lua(3)
mysql(1)
OpenSsl(1)
oracle
python其實(shí)是shell(1)
QT(7)
SOUI源碼分析
SQL(2)
websocket(1)
why programs fail - 系統(tǒng)優(yōu)化調(diào)試指南(2)
win32 gui(2)
從零開始寫棋牌游戲平臺(tái)(60)
代碼片段分享(2)
調(diào)試技術(shù)(1)
理解stl(2)
論壇大戰(zhàn)(1)
沒(méi)事瞎測(cè)測(cè)(1)
面試小算法(2)
面向模式的軟件體系結(jié)構(gòu)(1)
如何提煉代碼
網(wǎng)狐棋牌源碼分析(5)
為什么用boost(2)
學(xué)習(xí)、工作日志(1)
隨筆檔案
2017年10月 (1)
2017年7月 (1)
2017年6月 (2)
2017年5月 (1)
2017年4月 (5)
2017年3月 (6)
2017年1月 (1)
2016年12月 (9)
2016年10月 (1)
2016年7月 (2)
2016年3月 (3)
2016年2月 (1)
2015年11月 (1)
2015年9月 (3)
2015年8月 (5)
2015年7月 (2)
2015年6月 (4)
2015年5月 (6)
2015年4月 (7)
2015年3月 (5)
2015年2月 (1)
2015年1月 (8)
2014年12月 (4)
2014年11月 (4)
2014年10月 (6)
2014年9月 (3)
2014年8月 (3)
2014年7月 (1)
2014年6月 (4)
2014年5月 (2)
2014年4月 (3)
2014年3月 (2)
2014年2月 (9)
2014年1月 (17)
2013年12月 (7)
2013年10月 (6)
2013年8月 (3)
2013年7月 (4)
2013年5月 (1)
2013年4月 (10)
2013年3月 (12)
2013年2月 (4)
2012年12月 (4)
2012年11月 (8)
2012年10月 (7)
2012年9月 (3)
2012年8月 (2)
2012年7月 (5)
2012年6月 (5)
2011年9月 (1)
2011年7月 (1)
2011年5月 (1)
文章分類
about boost(3)
cmake 亂談(2)
cygwin(3)
DirectUI - UIlib分析
FFMPEG的坑(1)
git(1)
google(1)
HGE 也來(lái)玩玩(1)
linux(3)
linux學(xué)習(xí)筆記
MySql(1)
oracle(1)
P2P(1)
socket(1)
stl陷阱與技巧(5)
SVN(1)
VC路上的坑(11)
windows 使用技巧(1)
WTL 征程(1)
XML(1)
高性能話題(1)
網(wǎng)狐棋牌源碼分析(13)
無(wú)鎖算法(1)
一步一個(gè)腳印學(xué)QT(6)
文章檔案
2014年3月 (1)
2013年3月 (1)
2013年2月 (8)
2013年1月 (5)
2012年12月 (4)
2012年11月 (5)
2012年6月 (1)
2012年3月 (2)
2012年2月 (1)
2012年1月 (2)
2011年12月 (6)
2011年11月 (2)
2011年10月 (1)
2011年9月 (2)
2011年8月 (1)
2011年7月 (7)
2011年6月 (10)
2011年5月 (2)
相冊(cè)
網(wǎng)狐棋牌源碼分析
搜索
最新評(píng)論
1.?re: Qt5 CMAKE編譯簡(jiǎn)記
樓主樓主 這里有只菜鳥有問(wèn)題
去哪里設(shè)置CMAKE_PREFIX_PATH到qtbase目錄啊??
--amber
2.?re: minidump吐出來(lái)的dump文件為空,文件大小為0[未登錄](méi)
@網(wǎng)友
duilib的Dump對(duì)象里邊有一個(gè)臨界區(qū)對(duì)象,有幾個(gè)函數(shù)是被保護(hù)起來(lái)的。注釋掉就好了。
--enic
3.?re: minidump吐出來(lái)的dump文件為空,文件大小為0
去掉多線程保護(hù)是什么意思?怎么去掉?
--網(wǎng)友
4.?re: cocos2dx-quick 01
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--Enic
5.?re: 星座物語(yǔ)客戶端分析---01物品編輯器
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--Enic
閱讀排行榜
1.?Qt5 CMAKE編譯簡(jiǎn)記(22227)
2.?centos編譯安裝git最新版本(12405)
3.?轉(zhuǎn) C++11與Unicode及使用標(biāo)準(zhǔn)庫(kù)進(jìn)行UTF-8、UTF-16、UCS2、UCS4/UTF-32編碼轉(zhuǎn)換 utf8轉(zhuǎn)utf16 utf16轉(zhuǎn)utf8(10948)
4.?cmake 導(dǎo)入鏈接庫(kù)(8358)
5.?Duilib在MFC中使用(8282)
評(píng)論排行榜
1.?gtest編譯出錯(cuò): 編譯時(shí),error C2977 "std::tuple" too many template arguments問(wèn)題的解決辦法(3)
2.?(轉(zhuǎn))C宏技巧匯總(2)
3.?C++ 11 新語(yǔ)法:只讀遍歷(2)
4.?C++多重繼承時(shí),用基類指針delete有坑(2)
5.?lua的編碼風(fēng)格很爽啊(2)
CQueueServiceEvent初步分析
相關(guān)UML:
代碼分析:
首先CQueueServiceEvent這個(gè)名字很有誘惑,,,你感覺他是一個(gè)事件,其實(shí)不是。它實(shí)際的功能應(yīng)該是一個(gè)帶打包功能的事件隊(duì)列,,,或者說(shuō)是一個(gè)像指定的類似EventQueue的東東中投遞事件。從接口上看,這個(gè)東東能投遞TimerEvent DataBaseEvent SocketAcceptEvent SocketReadEvent SocketCloseEvent
應(yīng)為它本身持有一個(gè)CQueueService指針,所以本身并不負(fù)責(zé)數(shù)據(jù)管理,只負(fù)責(zé)打包并添加到CQueueService實(shí)例中去。
先看定時(shí)器事件:
1
//
定時(shí)器事件
2
bool
PostTimerEvent(WORD wTimerID, WPARAM wBindParam)
3
{
4
//
效驗(yàn)參數(shù)
5
ASSERT(m_pIQueueService
!=
NULL);
6
if
(m_pIQueueService
==
NULL)
return
false
;
7
8
//
緩沖鎖定
9
CThreadLockHandle BufferLockHandle(
&
m_BufferLock);
10
11
//
投遞消息
12
NTY_TimerEvent
*
pTimerEvent
=
(NTY_TimerEvent
*
)m_cbBuffer;
13
pTimerEvent
->
wTimerID
=
wTimerID;
14
pTimerEvent
->
wBindParam
=
wBindParam;
15
m_pIQueueService
->
AddToQueue(EVENT_TIMER,m_cbBuffer,
sizeof
(NTY_TimerEvent));
16
17
return
true
;
18
}
嗯哼,代碼質(zhì)量很高哈,,,
入口都有斷言在debug階段幫助暴露錯(cuò)誤,斷言之后還有if語(yǔ)句再次判斷,這樣即使release版本錯(cuò)誤也不會(huì)被漏掉,,,
關(guān)于事件的封裝,在這里其實(shí)已經(jīng)分層了,,,
這里是第一層:
1
struct
tagDataHead
2
{
3
WORD wDataSize;
//
數(shù)據(jù)大小
4
WORD wIdentifier;
//
類型標(biāo)識(shí)
5
DWORD dwInsertTime;
//
插入時(shí)間
6
}
;
這一層實(shí)際上是由CDataStorage負(fù)責(zé)打包管理,在CQueueServiceEvent執(zhí)行PostTimerEvent操作的時(shí)候會(huì)在內(nèi)部調(diào)用CQueueService的add最終調(diào)用到CDataStrorage的Add來(lái)打包數(shù)據(jù),這里的結(jié)構(gòu)也是非常像網(wǎng)絡(luò)數(shù)據(jù)包|- len -|- type -|- data -|。
在來(lái)看Post這一層做的數(shù)據(jù)打包:
1
//
定時(shí)器事件
2
struct
NTY_TimerEvent
3
{
4
WORD wTimerID;
//
定時(shí)器 ID
5
WPARAM wBindParam;
//
綁定參數(shù)
6
}
;
|- len -|- type -|- sub protocl -|。
其他事件的打包過(guò)程都是類似的:
1
//
數(shù)據(jù)庫(kù)請(qǐng)求事件
2
struct
NTY_DataBaseEvent
3
{
4
WORD wIndex;
//
對(duì)象索引
5
WORD wRoundID;
//
對(duì)象標(biāo)識(shí)
6
WORD wRequestID;
//
請(qǐng)求標(biāo)識(shí)
7
}
;
8
9
//
網(wǎng)絡(luò)應(yīng)答事件
10
struct
NTY_SocketAcceptEvent
11
{
12
WORD wIndex;
//
連接索引
13
WORD wRoundID;
//
連接標(biāo)識(shí)
14
DWORD dwClientIP;
//
連接地址
15
}
;
16
17
//
網(wǎng)絡(luò)讀取事件
18
struct
NTY_SocketReadEvent
19
{
20
WORD wIndex;
//
連接索引
21
WORD wRoundID;
//
連接標(biāo)識(shí)
22
WORD wDataSize;
//
數(shù)據(jù)大小
23
CMD_Command Command;
//
命令信息
24
}
;
25
26
//
網(wǎng)絡(luò)關(guān)閉事件
27
struct
NTY_SocketCloseEvent
28
{
29
WORD wIndex;
//
連接索引
30
WORD wRoundID;
//
連接標(biāo)識(shí)
31
DWORD dwClientIP;
//
連接地址
32
DWORD dwConnectSecond;
//
連接時(shí)間
33
}
;
還是一樣,一句話總結(jié)CQueueServiceEvent:
線程安全的接受各種異步事件,并打包封裝好以后插入到關(guān)聯(lián)的制定IQueueService中.
posted on 2011-06-02 14:36
Enic
閱讀(1661)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
網(wǎng)狐棋牌源碼分析
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
協(xié)議分析-服務(wù)器接收
協(xié)議分析:GamePlaza的網(wǎng)絡(luò)協(xié)議(收)
工具類:收發(fā)包輔助類 CSendPacketHelpr CRecvPacketHelpr
成也蕭何敗也肖何? IUnknowEx
服務(wù)引擎概覽
異步引擎
CEventService
DataBaseEngine
TCPSocketEnging分析
TimerEngine
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © Enic
亚洲中文久久精品无码
|
91精品国产9l久久久久
|
欧美一级久久久久久久大片
|
久久久久99精品成人片三人毛片
|
欧美黑人激情性久久
|
97久久超碰国产精品2021
|
久久精品中文字幕久久
|
久久99精品久久久久久齐齐
|
99久久夜色精品国产网站
|
麻豆精品久久精品色综合
|
久久综合伊人77777
|
国产精品久久久久jk制服
|
久久精品无码免费不卡
|
人妻无码αv中文字幕久久
|
国产精品99久久久精品无码
|
久久久久久人妻无码
|
一本一本久久a久久精品综合麻豆
|
MM131亚洲国产美女久久
|
人人狠狠综合久久亚洲
|
久久青草国产精品一区
|
久久亚洲私人国产精品vA
|
国产精品热久久无码av
|
久久久久久无码Av成人影院
|
亚洲综合久久夜AV
|
狠狠人妻久久久久久综合蜜桃
|
国产精品天天影视久久综合网
|
一本大道久久香蕉成人网
|
国产精品gz久久久
|
久久―日本道色综合久久
|
99久久国产综合精品麻豆
|
国产精品无码久久综合
|
国内精品九九久久久精品
|
久久午夜伦鲁片免费无码
|
少妇人妻88久久中文字幕
|
少妇人妻综合久久中文字幕
|
欧美久久久久久
|
成人综合久久精品色婷婷
|
久久99热这里只有精品66
|
伊色综合久久之综合久久
|
偷窥少妇久久久久久久久
|
99久久精品免费看国产一区二区三区
|