#ifndef _CUSTOM_MANAGE_CLIENT_MANAGER_H_ #define _CUSTOM_MANAGE_CLIENT_MANAGER_H_ #pragma warning(disable:4800) #include #include #include #include #include // forward decl. class CSession; class CManageServerDB; class CManageClientManager { public: typedef std::map, boost::pool_allocator > > RunTable; enum { MAX_RUNID = 0xFFFFFFFF }; enum InfoType { SERVER_INFO, RUN_PATH_INFO, OPTION_INFO, RUN_INFO }; static CManageClientManager& GetInstance(); static bool SendRunInfo(CSession& Session, const RunTable& runTable); // ---------------------------------------------------------------------------------------------- // ¼­¹ö Á¤º¸ °ü·Ã bool Add(InfoType eInfoType, const ServerManage::RunInfo& runInfo, unsigned long& dwID_Out); bool Modify(InfoType eInfoType, const ServerManage::RunInfo& runInfo); bool Remove(InfoType eInfoType, unsigned long dwID, bool bDeleteRelated); bool Get(InfoType eInfoType, RunTable& runTable); // ---------------------------------------------------------------------------------------------- // ½ÇÇà Á¤º¸ ¾ò¾î¿À±â bool GetRunInfo(ServerManage::RunInfo* lpRunInfo_Out, size_t* nArrayNum_InOut); bool GetRunInfo(unsigned long dwRunID, ServerManage::RunInfo& runInfo_Out); bool HasRunInfo(unsigned long dwRunID); void GetRunInfoFromIP(unsigned long dwServerIP, RunTable& runTable); const RunTable& GetRunInfoTable() const { return m_RunTable; } size_t GetRunInfoNum() { return m_RunTable.size(); } template void EnumRunInfo(FnProcess fnProcess) { RunTable::const_iterator pos = m_RunTable.begin(); RunTable::const_iterator end = m_RunTable.end(); for(;pos != end; ++pos) { fnProcess(pos->second); } } bool ReloadRunInfo(); private: CManageClientManager(CManageServerDB& manageServerDB); ~CManageClientManager(); CManageServerDB& m_ManageServerDB; RunTable m_RunTable; }; #endif