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

posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Mangos有13個(gè)工程。

使用了4個(gè)外部工具庫,分別是:

  1. 跨平臺(tái)的網(wǎng)絡(luò)通訊框架The ADAPTIVE Communication Environment (ACE)
  2. 壓縮庫zlib
  3. Socket通信庫 C++ Sockets Library (使用在realmd工程中,和使用在Mangosd工程中的RASocket,負(fù)責(zé)處理Remote Administration。其他地方?jīng)]有使用到這個(gè)C++ Sockets Library )。發(fā)現(xiàn)在C++ Sockets Library的TcpSocket::Open中存在一個(gè)問題,在n = connect(s, ad, ad);語句執(zhí)行后,如果n=-1,C++ Sockets Library會(huì)檢測是否ERR為WSAEWOULDBLOCK,否則表示成功,但在動(dòng)態(tài)庫中使用TcpSocket的時(shí)候,我發(fā)現(xiàn)n = connect(s, ad, ad);語句執(zhí)行后,n=-1,ERR會(huì)為0,這個(gè)時(shí)候連接也是成功了,但TcpSocket::Open會(huì)當(dāng)做不成功處理。我發(fā)現(xiàn)這個(gè)問題,但沒有時(shí)間去探究原因,也許并不是一個(gè)問題。
  4. C++的并行編程模板庫Threading Building Blocks (tbb 和 tbbmalloc)

Mangos的實(shí)現(xiàn)分為:登錄服務(wù)器(realmd)和世界服務(wù)器(mangosd+game)。realmd和mangos共用了Mangos公共庫(shared)。

工程shared

提供了通用功能,包括了數(shù)據(jù)庫的封裝類,實(shí)現(xiàn)了對MySql的訪問,同樣,我們可以編寫派生類來支持其他的數(shù)據(jù)庫。

工程script

提供了腳本接口,并實(shí)現(xiàn)了簡單的幾個(gè)腳本,封裝為DLL,提供給game使用,具體可參考:MaNGOS腳本接口

通過使用不同的腳本DLL來替換Mangos中的AI實(shí)現(xiàn),可以讓game具有更強(qiáng)的AI。ScriptDev2 就是一個(gè)這樣的庫。ScriptDev2 is a replacement for the Script Library that comes with MaNGOS( http://www.getmangos.com ) written in C++ and is compatible with Windows and Linux. It provides scripts for NPCs, Boss events, and Items currently. Once ScriptDev2 is compiled it is automatically run by MaNGOS on server startup.

image

工程mangosd

mangos是世界服務(wù)器的管理器,負(fù)責(zé)初始化工作和啟動(dòng)世界服務(wù)器各層的線程,這些工作主要是由類Master來實(shí)現(xiàn)。具體是:

  1. 使用三個(gè)數(shù)據(jù)庫對象WorldDatabase和CharacterDatabase和loginDatabase,初始化三大數(shù)據(jù)庫:World Database和Character Database和login Database,并為每個(gè)數(shù)據(jù)庫的訪問都啟動(dòng)一個(gè)DB delay threads。具體的數(shù)據(jù)庫操作功能都是由Mangos公共庫shared來提供。
  2. 調(diào)用sWorld.SetInitialWorldSettings,對World進(jìn)行初始化,包括加載所有的游戲數(shù)據(jù)和初始化各種更新定時(shí)器和郵件定時(shí)器,還有些其他的初始化工作。類World的成員函數(shù)SetInitialWorldSettings調(diào)用成員函數(shù)LoadConfigSettings解析mangosd.conf,解析后內(nèi)容放入uint32 m_configs[CONFIG_VALUE_COUNT]中。
    1. 加載的游戲數(shù)據(jù)有:
      1. DBC數(shù)據(jù)
      2. Objects數(shù)據(jù)
      3. Spells數(shù)據(jù)
      4. Pooling數(shù)據(jù)
      5. Game Event數(shù)據(jù)
      6. loot數(shù)據(jù)
      7. 技能數(shù)據(jù)
      8. 所有其他的游戲數(shù)據(jù),包括Waypoints和Trainers等等等。
      9. 腳本數(shù)據(jù)
    2. 初始化的更新定時(shí)器有:
      1. WUPDATE_OBJECTS
      2. WUPDATE_SESSIONS
      3. WUPDATE_AUCTIONS
      4. WUPDATE_WEATHERS
      5. WUPDATE_UPTIME
      6. WUPDATE_CORPSES
      7. WUPDATE_EVENTS
    3. 其他的初始化工作有:
      1. 初始化MapManager,啟動(dòng)Map System
      2. 初始化Battlegrounds,啟動(dòng)BattleGround System
      3. 初始化DailyQuestResetTime
      4. 初始化sGameEventMgr,Starting Game Event system
  3. 類Master還實(shí)現(xiàn)了mangos server的退出管理
  4. 類Master啟動(dòng)WorldRunnable,開始游戲邏輯。Heartbeat for the World,由Master創(chuàng)建,并設(shè)置線程為最高優(yōu)先級(jí)。
  5. 類Master啟動(dòng)CliRunnable:Command Line Interface handling thread,由Master創(chuàng)建。CliRunnable運(yùn)行時(shí)候會(huì)生成一個(gè)WorldDatabase線程,在接收到輸入后會(huì)調(diào)用sWorld.QueueCliCommand把Cmd放入到World::cliCmdQueue中。
  6. 類Master啟動(dòng)RARunnable:Remote Administration,由Master創(chuàng)建
  7. 如果配置要求,類Master還會(huì)啟動(dòng)一個(gè)freeze catcher thread
  8. 類Master啟動(dòng)2個(gè)網(wǎng)絡(luò)線程ReactorRunnable(可配置數(shù)目)

mangosd的線程總共有(1+3+1+1+1+2 +1 =10)10個(gè)線程。

  1. 主線程Master
  2. 2個(gè)網(wǎng)絡(luò)線程ReactorRunnable(可配置數(shù)目)(網(wǎng)絡(luò)層)
  3. 一個(gè)World線程(邏輯層)
  4. 三個(gè)DB線程(數(shù)據(jù)層)
  5. 一個(gè)CLI線程(輸入層),運(yùn)行時(shí)候會(huì)生成一個(gè)WorldDatabase線程
  6. 一個(gè)RA線程(管理層)
  7. 一個(gè)freeze catcher 線程(可選)

工程g3dlite:游戲邏輯層的底層庫

工程framework:系統(tǒng)框架

工程realm

負(fù)責(zé)登陸和選擇游戲服務(wù)器,進(jìn)行負(fù)載均衡。用到了C++ Sockets Library進(jìn)行登錄處理,采用select I/O模型。實(shí)現(xiàn)了Wow, Mangos登錄時(shí)的SRP6認(rèn)證。客戶端作為它的client連接到realm server認(rèn)證和選擇了mangos server就斷開。 而mangos server和realm server則不進(jìn)行連接,只是通過數(shù)據(jù)庫交互數(shù)據(jù):mangos server把自己的狀態(tài)和擁有的角色數(shù)放入庫中。realm server會(huì)讀取數(shù)據(jù)庫中的這些信息來獲知mangos server的狀態(tài)。

  1. 數(shù)據(jù)庫realm的realmlist表保存了realm的列表
  2. realm通過如下事件處理函數(shù)來負(fù)責(zé)登陸和選擇游戲服務(wù)器。

    const AuthHandler table[] =
    {
        { AUTH_LOGON_CHALLENGE,     STATUS_CONNECTED, &AuthSocket::_HandleLogonChallenge    },
        { AUTH_LOGON_PROOF,         STATUS_CONNECTED, &AuthSocket::_HandleLogonProof        },
        { AUTH_RECONNECT_CHALLENGE, STATUS_CONNECTED, &AuthSocket::_HandleReconnectChallenge},
        { AUTH_RECONNECT_PROOF,     STATUS_CONNECTED, &AuthSocket::_HandleReconnectProof    },
        { REALM_LIST,               STATUS_AUTHED,    &AuthSocket::_HandleRealmList         },
        { XFER_ACCEPT,              STATUS_CONNECTED, &AuthSocket::_HandleXferAccept        },
        { XFER_RESUME,              STATUS_CONNECTED, &AuthSocket::_HandleXferResume        },
        { XFER_CANCEL,              STATUS_CONNECTED, &AuthSocket::_HandleXferCancel        }
    };

登錄處理:

user登錄到realm server進(jìn)行身份認(rèn)證,并選擇登錄上哪個(gè)mangos server。user登錄到mangos server后,將不再和realm server交互。

參考: Wow 服務(wù)器解析

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美国产精品| 一本色道综合亚洲| 欧美大片在线看免费观看| 久久九九国产| 欧美一级片一区| 亚洲欧美另类综合偷拍| 性视频1819p久久| 亚洲无毛电影| 久久av最新网址| 亚洲第一狼人社区| 国产精品久久久久久久久久免费看 | 欧美午夜精品久久久| 农夫在线精品视频免费观看| 免费高清在线视频一区·| 欧美国产视频在线观看| 国产精品福利网| 国产真实乱偷精品视频免| 国模私拍一区二区三区| 精品电影一区| 亚洲国产精品一区| 日韩一级黄色av| 亚洲网站视频福利| 久久精品国产69国产精品亚洲| 麻豆九一精品爱看视频在线观看免费| 亚洲国产精品专区久久| 亚洲激情视频在线播放| 亚洲日本aⅴ片在线观看香蕉| 亚洲视频网站在线观看| 久久另类ts人妖一区二区| 欧美日韩一区二区国产| 影音先锋亚洲电影| 欧美一区二区三区视频| 亚洲国产日韩欧美在线图片| 小黄鸭精品密入口导航| 欧美色另类天堂2015| 亚洲高清网站| 久久免费视频网| 亚洲网址在线| 欧美日韩国产在线| 亚洲精品日韩综合观看成人91| 久久er精品视频| aa成人免费视频| 欧美高清视频在线| 亚洲高清在线视频| 久久久久国产免费免费| 亚洲免费视频一区二区| 欧美日韩视频| 在线亚洲欧美专区二区| 亚洲区一区二| 久久久久久久久蜜桃| 国产精品影院在线观看| 亚洲免费视频一区二区| 亚洲精品在线免费观看视频| 免费在线一区二区| 影音先锋中文字幕一区| 久久久久国产精品麻豆ai换脸| 午夜视频久久久久久| 国产欧美日本一区视频| 亚洲一区二区三区四区中文| 99国产精品国产精品久久| 欧美极品欧美精品欧美视频| 亚洲国产精品久久久久婷婷884| 久久经典综合| 亚洲国产视频a| 午夜精品一区二区三区电影天堂| 欧美成人午夜激情在线| 久久成人一区| 在线成人激情视频| 欧美jizz19性欧美| 麻豆精品一区二区av白丝在线| 亚洲二区视频| 亚洲人成网站精品片在线观看| 欧美精品免费播放| 亚洲性夜色噜噜噜7777| 亚洲天堂成人在线视频| 国产亚洲精品久| 国产精品美女在线| 亚洲欧美日韩在线综合| 午夜精品理论片| 欧美成人中文| 99精品国产在热久久下载| 日韩特黄影片| 国产欧美大片| 欧美成人在线影院| 欧美日韩一级片在线观看| 欧美亚洲一级片| 久久亚洲国产成人| 亚洲性夜色噜噜噜7777| 久久精品九九| 一二美女精品欧洲| 午夜精品免费在线| 亚洲精品久久在线| 亚洲欧美怡红院| 亚洲欧洲免费视频| 亚洲一区免费| 91久久久一线二线三线品牌| 亚洲线精品一区二区三区八戒| 在线观看国产日韩| 亚洲图片欧洲图片av| 亚洲精品美女在线| 欧美一区二区三区免费观看| 亚洲伦理在线| 久久精品欧美日韩精品| 亚洲一区黄色| 欧美精品福利| 欧美xx视频| 狠狠久久亚洲欧美专区| 在线视频欧美日韩| 日韩一区二区福利| 久久久国产亚洲精品| 一区二区三区四区五区精品视频| 欧美影院在线| 欧美亚洲视频| 国产精品成人国产乱一区| 亚洲国产福利在线| 黄色影院成人| 欧美在线网站| 久久不射中文字幕| 国产精品国产自产拍高清av| 亚洲电影免费观看高清完整版| 国产亚洲精品bt天堂精选| 亚洲视频免费| 在线综合亚洲欧美在线视频| 美女脱光内衣内裤视频久久网站| 欧美主播一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲第一二三四五区| 影院欧美亚洲| 欧美一区二区国产| 欧美一区二区在线播放| 亚洲男女自偷自拍| 欧美日韩视频专区在线播放| 亚洲国产欧美一区二区三区丁香婷 | 亚洲激情电影在线| 激情久久影院| 欧美在线视频一区二区| 欧美一区二区成人6969| 国产精品日韩二区| 久久精品视频99| 亚洲电影免费在线观看| 一区二区三区四区蜜桃| 一区二区三区精品国产| 欧美劲爆第一页| 亚洲日韩欧美视频| 在线视频你懂得一区| 欧美视频不卡| 亚洲视频在线观看视频| 久久av红桃一区二区小说| 国产亚洲一区在线| 久久噜噜亚洲综合| 亚洲欧洲中文日韩久久av乱码| 夜夜嗨一区二区| 国产精品v欧美精品∨日韩| 一区二区三区|亚洲午夜| 亚洲专区一区二区三区| 国产精品高潮粉嫩av| 午夜精品www| 蜜臀久久99精品久久久久久9| 亚洲黄色片网站| 欧美日韩精品欧美日韩精品一| 亚洲视频图片小说| 麻豆久久婷婷| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩一卡| 久久gogo国模裸体人体| 91久久国产综合久久| 亚洲欧美综合v| 激情成人综合| 欧美视频一区二区| 久久久久一本一区二区青青蜜月| 欧美成人国产va精品日本一级| 一本在线高清不卡dvd | 欧美日韩亚洲综合| 午夜久久资源| 亚洲第一精品福利| 亚洲欧美日韩综合aⅴ视频| 亚洲福利视频二区| 国产精品热久久久久夜色精品三区 | 性亚洲最疯狂xxxx高清| 欧美成人激情视频| 亚洲尤物在线| 亚洲国产精品嫩草影院| 国产精品免费视频xxxx| 免费欧美视频| 欧美在线视频一区二区| 一区二区三区精品视频在线观看| 久久综合伊人77777尤物| 亚洲私人黄色宅男| 亚洲人在线视频| 国产在线观看精品一区二区三区| 欧美日韩一区二区免费视频| 久久日韩精品| 久久亚洲私人国产精品va| 欧美性做爰毛片| 久久综合激情| 亚洲午夜免费视频| 亚洲精品中文在线| 亚洲国产综合91精品麻豆| 久久一区二区精品| 欧美在线|欧美|