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

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>
            国产精品无码专区在线观看| 欧美国产丝袜视频| 一本色道久久99精品综合| 国产欧美日韩视频在线观看 | 亚洲美女性视频| 欧美在线视频不卡| 影音先锋在线一区| 久久频这里精品99香蕉| 亚洲免费观看| 久久国产色av| 在线精品国产成人综合| 国产精品男女猛烈高潮激情| 久久综合影音| 久久久福利视频| 久久精品中文字幕一区二区三区 | 欧美国产日韩一二三区| 久久乐国产精品| 欧美一级视频一区二区| 久久久久久久精| 久久久久久一区二区| 亚洲国产99| 亚洲少妇一区| 久久精品盗摄| 国产精品久久久久久影院8一贰佰| 国产精品一区在线播放| 影音先锋久久精品| 午夜精品久久久久久久99樱桃 | 在线欧美电影| 亚洲免费黄色| 久久免费视频网| 亚洲一区二区三区三| 欧美精品91| 亚洲欧洲一区二区在线观看| 亚洲欧美综合网| 日韩视频欧美视频| 欧美精品videossex性护士| 1204国产成人精品视频| 欧美日韩国产在线| 在线看不卡av| 欧美大片在线观看| 久久久一区二区三区| 国产一区二区精品久久| 久久国产精品久久久久久电车| 一区二区三区欧美在线| 欧美日韩色一区| 亚洲视频视频在线| 亚洲一区二区毛片| 国产婷婷精品| 欧美福利在线观看| 欧美日韩国产一区二区三区地区| 日韩视频一区| 亚洲欧美在线播放| 亚洲国产日韩欧美在线图片| 欧美高清视频一二三区| 欧美va日韩va| 欧美一区二区三区久久精品| 久久久欧美一区二区| 亚洲免费视频观看| 久久久久在线| 亚洲欧美综合另类中字| 久久综合久久综合这里只有精品 | 国产网站欧美日韩免费精品在线观看 | 怡红院精品视频在线观看极品| 久久久久久久999| 欧美二区在线| 久久综合一区二区| 国产精品久久久久影院亚瑟| 狠狠操狠狠色综合网| 亚洲免费观看| 狠狠色丁香婷综合久久| 在线视频免费在线观看一区二区| 国产区精品在线观看| 亚洲激情在线观看| 国产综合在线看| 亚洲视频日本| 亚洲五月婷婷| 国产精品美女午夜av| 亚洲性人人天天夜夜摸| 99视频精品全部免费在线| 久久久久久久国产| 久久亚洲综合网| 在线观看一区| 欧美激情综合亚洲一二区| 亚洲国产精品一区二区www| 在线看片成人| 欧美精品亚洲精品| 宅男噜噜噜66一区二区| 亚洲欧美中文另类| 永久91嫩草亚洲精品人人| 欧美综合国产精品久久丁香| 久久蜜臀精品av| 亚洲精品一区二区三| 欧美日韩中文字幕综合视频| 亚洲午夜精品网| 欧美大色视频| 欧美一区午夜精品| 91久久精品日日躁夜夜躁国产| 欧美韩日一区二区| 亚洲欧美一区二区三区久久| 久久精品一区二区三区不卡牛牛 | 久久精品国产亚洲精品| 免费亚洲网站| 久久精品一区蜜桃臀影院| 久久久久综合网| 洋洋av久久久久久久一区| 免费高清在线一区| 欧美一区二区三区啪啪| 亚洲黄页视频免费观看| 国产麻豆精品视频| 欧美午夜视频在线| 欧美日韩国语| 蜜臀av性久久久久蜜臀aⅴ| a91a精品视频在线观看| 欧美国产日韩一二三区| 久久久夜夜夜| 久久亚洲私人国产精品va媚药| 亚洲一区三区电影在线观看| 亚洲精品视频在线看| 亚洲精品护士| 亚洲四色影视在线观看| 一区二区三区精品久久久| 亚洲美女黄色片| 一区二区日韩伦理片| 99视频一区| 篠田优中文在线播放第一区| 亚洲免费在线| 欧美性片在线观看| 欧美在线国产| 久久天天狠狠| 亚洲精品久久7777| 久久综合狠狠| 久久精品三级| 一本久久综合| 国产精品美女视频网站| 亚洲曰本av电影| 巨乳诱惑日韩免费av| 亚洲第一网站免费视频| 欧美性色aⅴ视频一区日韩精品| 美女网站久久| 亚洲欧美乱综合| 欧美一区网站| 国产一区二区三区免费观看| 久久精品人人做人人爽电影蜜月| 国产日韩在线视频| 黄色综合网站| 一本色道久久综合狠狠躁篇的优点| 这里只有精品视频| 欧美sm视频| 久久精品日产第一区二区| 欧美日韩a区| 亚洲狼人综合| 免费观看成人网| 亚洲自拍偷拍网址| 欧美视频中文一区二区三区在线观看 | 久久久久9999亚洲精品| 欧美成人一品| 久久av一区二区三区| 欧美日韩中文| 亚洲无毛电影| 一区二区三区不卡视频在线观看 | 久久九九久精品国产免费直播| 欧美午夜不卡视频| 亚洲视频一区二区在线观看| 亚洲电影在线| 欧美国产三区| 午夜精品久久久久久久久久久久久 | 91久久精品日日躁夜夜躁欧美| 久久久久久精| 亚洲电影在线看| 女人色偷偷aa久久天堂| 香蕉久久夜色| 久久av二区| 亚洲国产精品久久91精品| 欧美电影在线播放| 欧美日韩一区二区三区免费看| 亚洲美女淫视频| 亚洲中无吗在线| 在线成人中文字幕| 亚洲精选成人| 亚洲黑丝一区二区| 中文av一区二区| 亚洲欧洲在线免费| 欧美一区二区三区免费看| 99视频一区二区| 久久裸体艺术| 欧美亚洲综合在线| 欧美大片在线观看一区| 欧美在线视频全部完| 欧美激情综合五月色丁香| 久久亚洲视频| 揄拍成人国产精品视频| 一区二区三区精品视频| 亚洲欧洲午夜| 欧美成人亚洲| 亚洲第一综合天堂另类专| 亚洲第一天堂av| 美女图片一区二区| 欧美激情精品久久久久久黑人| 韩国av一区二区三区四区| 午夜精品视频|