mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-09-30 15:13:12 -04:00
Added the SwgDatabaseServer project, still need to handle generated files
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
// ======================================================================
|
||||
//
|
||||
// DataCleanupManager.cpp
|
||||
// copyright (c) 2004 Sony Online Entertainment
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
#include "SwgDatabaseServer/FirstSwgDatabaseServer.h"
|
||||
#include "DataCleanupManager.h"
|
||||
|
||||
#include "SwgDatabaseServer/TaskConsolidateExperience.h"
|
||||
#include "SwgDatabaseServer/TaskDailyCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskAnySQL.h"
|
||||
#include "SwgDatabaseServer/TaskObjvarNameCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskOrphanedObjectCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskMarketAttributesCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskMessagesCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskBrokenObjectCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskVendorObjectCleanup.h"
|
||||
#include "SwgDatabaseServer/TaskFixBadCells.h"
|
||||
#include "SwgDatabaseServer/TaskObjectTemplateListUpdater.h"
|
||||
#include "serverDatabase/DatabaseProcess.h"
|
||||
#include "sharedDatabaseInterface/DbTaskQueue.h"
|
||||
#include "sharedLog/Log.h"
|
||||
#include "sharedLog/LogManager.h"
|
||||
#include "sharedFoundation/Os.h"
|
||||
#include "serverDatabase/ConfigServerDatabase.h"
|
||||
#include "serverMetrics/MetricsManager.h"
|
||||
#include "sharedNetwork/NetworkHandler.h"
|
||||
|
||||
// ======================================================================
|
||||
|
||||
DataCleanupManager::DataCleanupManager() :
|
||||
m_taskQueue(new DB::TaskQueue(1, DatabaseProcess::getInstance().getDBServer(), 0))
|
||||
{
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
DataCleanupManager::~DataCleanupManager()
|
||||
{
|
||||
delete m_taskQueue; // Note: The destructor of TaskQueue waits for all the tasks to be finished
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void DataCleanupManager::runDailyCleanup( void )
|
||||
{
|
||||
if ( ConfigServerDatabase::getEnableFixBadCells() ) // do this first...
|
||||
{
|
||||
TaskFixBadCells *task = new TaskFixBadCells;
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
if ( ConfigServerDatabase::getObjectTemplateListUpdateFilename() != 0)
|
||||
{
|
||||
TaskObjectTemplateListUpdater *task = new TaskObjectTemplateListUpdater( ConfigServerDatabase::getObjectTemplateListUpdateFilename() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
if ( ConfigServerDatabase::getEnableDataCleanup() )
|
||||
{
|
||||
if ( ConfigServerDatabase::getExperienceConsolidationTime() != 0)
|
||||
{
|
||||
TaskConsolidateExperience *task = new TaskConsolidateExperience( ConfigServerDatabase::getExperienceConsolidationTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
if ( ConfigServerDatabase::getObjvarNameCleanupTime() != 0)
|
||||
{
|
||||
TaskObjvarNameCleanup *task = new TaskObjvarNameCleanup( ConfigServerDatabase::getObjvarNameCleanupTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
if ( ConfigServerDatabase::getOrphanedObjectCleanupTime() != 0)
|
||||
{
|
||||
TaskOrphanedObjectCleanup *task = new TaskOrphanedObjectCleanup( ConfigServerDatabase::getOrphanedObjectCleanupTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
LOG("Cleanup:attributes:",("%d", ConfigServerDatabase::getMarketAttributesCleanupTime() ));
|
||||
if ( ConfigServerDatabase::getMarketAttributesCleanupTime() != 0)
|
||||
{
|
||||
TaskMarketAttributesCleanup *task = new TaskMarketAttributesCleanup( ConfigServerDatabase::getMarketAttributesCleanupTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
LOG("Cleanup:messages:",("%d", ConfigServerDatabase::getMarketAttributesCleanupTime() ));
|
||||
if ( ConfigServerDatabase::getMessagesCleanupTime() != 0)
|
||||
{
|
||||
TaskMessagesCleanup *task = new TaskMessagesCleanup( ConfigServerDatabase::getMessagesCleanupTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
LOG("Cleanup:brokenobj:",("%d", ConfigServerDatabase::getBrokenObjectCleanupTime() ));
|
||||
if ( ConfigServerDatabase::getBrokenObjectCleanupTime() != 0)
|
||||
{
|
||||
TaskBrokenObjectCleanup *task = new TaskBrokenObjectCleanup( ConfigServerDatabase::getBrokenObjectCleanupTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
|
||||
if ( ConfigServerDatabase::getVendorObjectCleanupTime() != 0)
|
||||
{
|
||||
TaskVendorObjectCleanup *task = new TaskVendorObjectCleanup( ConfigServerDatabase::getVendorObjectCleanupTime() );
|
||||
m_taskQueue->asyncRequest(task);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Open custom sql file and execute everything in there (in queries folder)
|
||||
//
|
||||
std::string s_filename( ConfigServerDatabase::getCustomSQLFilename() );
|
||||
if ( s_filename.length() )
|
||||
{
|
||||
std::string s_path( "../../src/game/server/database/queries/" );
|
||||
s_path += s_filename;
|
||||
FILE* in = fopen(s_path.c_str(), "r");
|
||||
if ( in )
|
||||
{
|
||||
char line[4096];
|
||||
std::string s_sql;
|
||||
while( fgets(line, 4096, in ) )
|
||||
{
|
||||
if ( line[0] != '#' )
|
||||
s_sql+=line;
|
||||
if ( s_sql.find(';') != std::string::npos )
|
||||
{
|
||||
TaskAnySQL *task = new TaskAnySQL( s_sql.c_str() );
|
||||
m_taskQueue->asyncRequest( task );
|
||||
s_sql.clear();
|
||||
}
|
||||
}
|
||||
fclose( in );
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG("Cleanup:AnySQL:",("Couldn't open: %s",s_path.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Sleep until all the cleanup is done....
|
||||
while( m_taskQueue->isIdle() == false )
|
||||
{
|
||||
const int ki_sleeptime = 100;
|
||||
Os::sleep(ki_sleeptime);
|
||||
m_taskQueue->update(float(ki_sleeptime) / float(1000.0));
|
||||
MetricsManager::update(float(ki_sleeptime) / float(1000.0));
|
||||
NetworkHandler::update();
|
||||
NetworkHandler::dispatch();
|
||||
NetworkHandler::clearBytesThisFrame();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ======================================================================
|
||||
Reference in New Issue
Block a user