//------------------------------------------------------------------------------------- void Dbmgr::removeEntity(Network::Channel* pChannel, KBEngine::MemoryStream& s) { ENTITY_ID eid; DBID entityDBID; COMPONENT_ID componentID; uint16 dbInterfaceIndex; s >> dbInterfaceIndex >> componentID >> eid >> entityDBID; KBE_ASSERT(entityDBID > 0); Buffered_DBTasks* pBuffered_DBTasks = findBufferedDBTask(g_kbeSrvConfig.dbInterfaceIndex2dbInterfaceName(dbInterfaceIndex)); if (!pBuffered_DBTasks) { ERROR_MSG(fmt::format("Dbmgr::removeEntity: not found dbInterfaceIndex({})!\n", dbInterfaceIndex)); s.done(); return; } pBuffered_DBTasks->addTask(new DBTaskRemoveEntity(pChannel->addr(), componentID, eid, entityDBID, s)); s.done(); ++numRemovedEntity_; }
//------------------------------------------------------------------------------------- void Dbmgr::executeRawDatabaseCommand(Network::Channel* pChannel, KBEngine::MemoryStream& s) { ENTITY_ID entityID = -1; s >> entityID; uint16 dbInterfaceIndex = 0; s >> dbInterfaceIndex; std::string dbInterfaceName = g_kbeSrvConfig.dbInterfaceIndex2dbInterfaceName(dbInterfaceIndex); if (dbInterfaceName.size() == 0) { ERROR_MSG(fmt::format("Dbmgr::executeRawDatabaseCommand: not found dbInterface({})!\n", dbInterfaceName)); s.done(); return; } if (entityID == -1) { thread::ThreadPool* pThreadPool = DBUtil::pThreadPool(dbInterfaceName); if (!pThreadPool) { ERROR_MSG(fmt::format("Dbmgr::executeRawDatabaseCommand: not found pThreadPool(dbInterface={})!\n", dbInterfaceName)); s.done(); return; } pThreadPool->addTask(new DBTaskExecuteRawDatabaseCommand(pChannel->addr(), s)); } else { Buffered_DBTasks* pBuffered_DBTasks = findBufferedDBTask(dbInterfaceName); if (!pBuffered_DBTasks) { ERROR_MSG(fmt::format("Dbmgr::executeRawDatabaseCommand: not found pBuffered_DBTasks(dbInterface={})!\n", dbInterfaceName)); s.done(); return; } pBuffered_DBTasks->addTask(new DBTaskExecuteRawDatabaseCommandByEntity(pChannel->addr(), s, entityID)); } s.done(); ++numExecuteRawDatabaseCommand_; }
//------------------------------------------------------------------------------------- void Dbmgr::syncEntityStreamTemplate(Network::Channel* pChannel, KBEngine::MemoryStream& s) { KBEAccountTable* pTable = static_cast<KBEAccountTable*>(EntityTables::getSingleton().findKBETable("kbe_accountinfos")); KBE_ASSERT(pTable); pTable->accountDefMemoryStream(s); s.done(); }
//------------------------------------------------------------------------------------- void Logger::updateLogWatcherSetting(Network::Channel* pChannel, KBEngine::MemoryStream& s) { LogWatcher* pLogwatcher = &logWatchers_[pChannel->addr()]; if(!pLogwatcher->updateSetting(&s)) { ERROR_MSG(fmt::format("Logger::updateLogWatcherSetting: addr={} is failed!\n", pChannel->addr().c_str())); logWatchers_.erase(pChannel->addr()); } s.done(); }
//------------------------------------------------------------------------------------- void Dbmgr::writeEntity(Network::Channel* pChannel, KBEngine::MemoryStream& s) { ENTITY_ID eid; DBID entityDBID; COMPONENT_ID componentID; s >> componentID >> eid >> entityDBID; bufferedDBTasks_.addTask(new DBTaskWriteEntity(pChannel->addr(), componentID, eid, entityDBID, s)); s.done(); numWrittenEntity_++; }
//------------------------------------------------------------------------------------- void Dbmgr::executeRawDatabaseCommand(Network::Channel* pChannel, KBEngine::MemoryStream& s) { ENTITY_ID entityID = -1; s >> entityID; if(entityID == -1) DBUtil::pThreadPool()->addTask(new DBTaskExecuteRawDatabaseCommand(pChannel->addr(), s)); else bufferedDBTasks_.addTask(new DBTaskExecuteRawDatabaseCommandByEntity(pChannel->addr(), s, entityID)); s.done(); numExecuteRawDatabaseCommand_++; }
//------------------------------------------------------------------------------------- void Dbmgr::removeEntity(Network::Channel* pChannel, KBEngine::MemoryStream& s) { ENTITY_ID eid; DBID entityDBID; COMPONENT_ID componentID; s >> componentID >> eid >> entityDBID; KBE_ASSERT(entityDBID > 0); bufferedDBTasks_.addTask(new DBTaskRemoveEntity(pChannel->addr(), componentID, eid, entityDBID, s)); s.done(); numRemovedEntity_++; }
//------------------------------------------------------------------------------------- void Dbmgr::syncEntityStreamTemplate(Network::Channel* pChannel, KBEngine::MemoryStream& s) { int rpos = s.rpos(); EntityTables::ENTITY_TABLES_MAP::iterator iter = EntityTables::sEntityTables.begin(); for (; iter != EntityTables::sEntityTables.end(); ++iter) { KBEAccountTable* pTable = static_cast<KBEAccountTable*>(iter->second.findKBETable("kbe_accountinfos")); KBE_ASSERT(pTable); s.rpos(rpos); pTable->accountDefMemoryStream(s); } s.done(); }
//------------------------------------------------------------------------------------- void Logger::registerLogWatcher(Network::Channel* pChannel, KBEngine::MemoryStream& s) { LogWatcher* pLogwatcher = &logWatchers_[pChannel->addr()]; if(!pLogwatcher->createFromStream(&s)) { ERROR_MSG(fmt::format("Logger::registerLogWatcher: addr={} is failed!\n", pChannel->addr().c_str())); logWatchers_.erase(pChannel->addr()); s.done(); return; } pLogwatcher->addr(pChannel->addr()); INFO_MSG(fmt::format("Logger::registerLogWatcher: addr={0} is successfully!\n", pChannel->addr().c_str())); bool first; s >> first; if(first) sendInitLogs(*pLogwatcher); }