Esempio n. 1
0
bool DirectHiveApp::initialiseService()
{
	//Load up databases
	{
		Poco::AutoPtr<Poco::Util::AbstractConfiguration> globalDBConf(config().createView("Database"));
		Poco::AutoPtr<Poco::Util::AbstractConfiguration> objDBConf(config().createView("ObjectDB"));

		try
		{
			Poco::Logger& dbLogger = Poco::Logger::get("Database");
			_charDb = DatabaseLoader::Create(globalDBConf);
			if (!_charDb->initialise(dbLogger,DatabaseLoader::MakeConnParams(globalDBConf)))
				return false;

			_objDb = _charDb;
			if (objDBConf->getBool("Use",false))
			{
				Poco::Logger& objDBLogger = Poco::Logger::get("ObjectDB");
				_objDb = DatabaseLoader::Create(objDBConf);
				if (!_objDb->initialise(objDBLogger,DatabaseLoader::MakeConnParams(objDBConf)))
					return false;
			}
		}
		catch (const DatabaseLoader::CreationError& e) 
		{
			logger().critical(e.displayText());
			return false;
		}
	}

	//Create character datasource
	{
		static const string defaultID = "PlayerUID";
		static const string defaultWS = "Worldspace";

		Poco::AutoPtr<Poco::Util::AbstractConfiguration> charDBConf(config().createView("Characters"));
		_charData.reset(new SqlCharDataSource(logger(),_charDb,charDBConf->getString("IDField",defaultID),charDBConf->getString("WSField",defaultWS)));	
	}

	//Create object datasource
	{
		Poco::AutoPtr<Poco::Util::AbstractConfiguration> objConf(config().createView("Objects"));
		_objData.reset(new SqlObjDataSource(logger(),_objDb,objConf.get()));
	}

	//Create custom datasource
	_customData.reset(new CustomDataSource(logger(),_charDb,_objDb));

	_charDb->allowAsyncOperations();	
	if (_objDb != _charDb)
		_objDb->allowAsyncOperations();
	
	return true;
}
Esempio n. 2
0
bool DirectHiveApp::initialiseService()
{
	_charDb = DatabaseLoader::create(DatabaseLoader::DBTYPE_MYSQL);

	Poco::Logger& dbLogger = Poco::Logger::get("Database");
	dbLogger.setLevel("trace");

	string initString;
	{
		Poco::AutoPtr<Poco::Util::AbstractConfiguration> globalDBConf(config().createView("Database"));
		initString = DatabaseLoader::makeInitString(globalDBConf);
	}

	if (!_charDb->Initialize(dbLogger,initString))
		return false;

	_charDb->AllowAsyncTransactions();
	_objDb = _charDb;
	
	//pass the db along to character datasource
	{
		Poco::AutoPtr<Poco::Util::AbstractConfiguration> charDBConf(config().createView("Characters"));
		_charData.reset(new SqlCharDataSource(_logger,
			_charDb,charDBConf->getString("IDField","PlayerUID"),charDBConf->getString("WSField","Worldspace")));	
	}

	Poco::AutoPtr<Poco::Util::AbstractConfiguration> objDBConf(config().createView("ObjectDB"));
	bool useExternalObjDb = objDBConf->getBool("Use",false);
	if (useExternalObjDb)
	{
		try { _objDb = DatabaseLoader::create(objDBConf); } 
		catch (const DatabaseLoader::CreationError&) { return false; }
		
		Poco::Logger& objDBLogger = Poco::Logger::get("ObjectDB");
		objDBLogger.setLevel("trace");

		if (!_objDb->Initialize(objDBLogger,DatabaseLoader::makeInitString(objDBConf)))
			return false;

		_objDb->AllowAsyncTransactions();
	}
	
	Poco::AutoPtr<Poco::Util::AbstractConfiguration> objConf(config().createView("Objects"));
	_objData.reset(new SqlObjDataSource(_logger,_objDb,objConf.get()));
	
	return true;
}
Esempio n. 3
0
bool DirectHiveApp::initialiseService()
{
	_charDb = DatabaseLoader::create(DatabaseLoader::DBTYPE_MYSQL);

	Poco::Logger& dbLogger = Poco::Logger::get("Database");
	string initString;
	{
		Poco::AutoPtr<Poco::Util::AbstractConfiguration> globalDBConf(config().createView("Database"));
		initString = DatabaseLoader::makeInitString(globalDBConf);
	}

	if (!_charDb->initialise(dbLogger,initString))
		return false;

	_charDb->allowAsyncOperations();
	_objDb = _charDb;
	
	//pass the db along to character datasource
	{
		static const string defaultID = "PlayerUID";
		static const string defaultWS = "Worldspace";

		Poco::AutoPtr<Poco::Util::AbstractConfiguration> charDBConf(config().createView("Characters"));
		_charData.reset(new SqlCharDataSource(logger(),_charDb,charDBConf->getString("IDField",defaultID),charDBConf->getString("WSField",defaultWS)));	
	}

	//pass db to custom loadout datasource
	{
		_customLoadoutData.reset(new SqlCustomLoadoutSource(logger(), _objDb));
	}

	//pass db to custom datasource
	{
		_customData.reset(new SqlCustDataSource(logger(), _objDb));
	}

	Poco::AutoPtr<Poco::Util::AbstractConfiguration> objDBConf(config().createView("ObjectDB"));

	bool useExternalObjDb = objDBConf->getBool("Use",false);
	if (useExternalObjDb)
	{
		try 
		{ 
			_objDb = DatabaseLoader::create(objDBConf); 
		} 
		catch (const DatabaseLoader::CreationError&) 
		{ 
			return false; 
		}
		
		Poco::Logger& objDBLogger = Poco::Logger::get("ObjectDB");

		if (!_objDb->initialise(objDBLogger,DatabaseLoader::makeInitString(objDBConf)))
			return false;

		_objDb->allowAsyncOperations();
	}
	
	Poco::AutoPtr<Poco::Util::AbstractConfiguration> objConf(config().createView("Objects"));
	_objData.reset(new SqlObjDataSource(logger(),_objDb,objConf.get()));
	
	return true;
}