📄 cluster.h.svn-base
字号:
#define MAX_WORKER_SERVERS 100
#define MAX_SINGLE_MAPID 600
struct VENICE
{
uint32 VENICEId;
uint32 MapId;
WServer * Server;
};
#define IS_VENICE(a) (((a)>1)&&((a)!=530))
#define IS_MAIN_MAP(a) (((a)<2)||((a)==530))
class ClusterMgr : public Singleton<ClusterMgr>
{
typedef map<uint32, VENICE*> VENICEMap;
WServer * WorkerServers[MAX_WORKER_SERVERS];
VENICE * SingleVENICEMaps[MAX_SINGLE_MAPID];
VENICEMap VENICEs;
uint32 m_maxVENICEId;
uint32 m_maxWorkerServer;
public:
ClusterMgr();
WServer * GetServerByVENICEId(uint32 VENICEId);
WServer * GetServerByMapId(uint32 MapId);
VENICE * GetVENICEByVENICEId(uint32 VENICEId);
VENICE * GetVENICEByMapId(uint32 MapId);
WServer * CreateWorkerServer(WSSocket * s);
VENICE_INLINE WServer * GetWorkerServer(uint32 Id) { return (Id < MAX_WORKER_SERVERS) ? WorkerServers[Id] : 0; }
void AllocateInitialVENICEs(WServer * server, vector<uint32>& preferred);
// find the worker server with the least load for the new VENICE
WServer * GetWorkerServerForNewVENICE();
/* create new VENICE, or a main map */
VENICE * CreateVENICE(uint32 MapId, WServer * server);
/* create new VENICE based on template, or a saved VENICE */
VENICE * CreateVENICE(uint32 VENICEId, uint32 MapId);
/* gets the VENICE struct by VENICE id */
VENICE * GetVENICE(uint32 VENICEId)
{
VENICEMap::iterator itr = VENICEs.find(VENICEId);
return (itr == VENICEs.end()) ? 0 : itr->second;
}
/* distribute packet to all worker servers */
VENICE_INLINE void DistributePacketToAll(WorldPacket * data) { DistributePacketToAll(data, 0); }
/* distribute packet to all worker server excluding one */
void DistributePacketToAll(WorldPacket * data, WServer * exclude);
/* loop */
void Update();
};
#define sClusterMgr ClusterMgr::getSingleton()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -