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
久久精品人人做人人爽电影蜜月
|
国产激情久久久久影院
|
亚洲精品乱码久久久久66
|
亚洲午夜久久久久久噜噜噜
|
国产精品福利一区二区久久
|
国产成人久久精品二区三区
|
国产毛片欧美毛片久久久
|
久久香蕉一级毛片
|
久久综合亚洲色HEZYO国产
|
久久综合综合久久综合
|
国产精品无码久久久久
|
人妻无码久久一区二区三区免费
|
久久综合久久综合久久
|
久久水蜜桃亚洲av无码精品麻豆
|
久久久无码精品亚洲日韩京东传媒
|
久久99久久99精品免视看动漫
|
狠色狠色狠狠色综合久久
|
蜜桃麻豆WWW久久囤产精品
|
国产精品伦理久久久久久
|
久久精品欧美日韩精品
|
久久毛片一区二区
|
久久久久国产日韩精品网站
|
久久99精品久久只有精品
|
久久精品国产日本波多野结衣
|
国产偷久久久精品专区
|
久久国产成人午夜aⅴ影院
|
99久久精品国产高清一区二区
|
无码八A片人妻少妇久久
|
亚洲成av人片不卡无码久久
|
狠狠色综合网站久久久久久久
|
国产精品久久永久免费
|
精品无码久久久久久尤物
|
久久久久高潮毛片免费全部播放
|
久久久久波多野结衣高潮
|
18禁黄久久久AAA片
|
国内精品久久久久久久久电影网
|
2020最新久久久视精品爱
|
久久精品国产影库免费看
|
青青草国产成人久久91网
|
国产成人99久久亚洲综合精品
|
久久精品国产亚洲麻豆
|