Ejemplo n.º 1
0
bool Settings::load(const char* settingsFile)
{
	GKeyFile* keyfile;
	GKeyFileFlags flags;
	GError* error = 0;

	keyfile = g_key_file_new();
	if(!keyfile)
		return false;
	flags = GKeyFileFlags( G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS);

	if( !g_key_file_load_from_file( keyfile, settingsFile, flags, &error ) )
	{
		g_key_file_free( keyfile );
		if (error) g_error_free(error);
		return false;
	}

	KEY_BOOLEAN("Debug","turnOnNovacomAtStart",m_turnNovacomOnAtStartup);
	KEY_BOOLEAN("Debug","saveLastBackedUpTempDb",m_saveLastBackedUpTempDb);
	KEY_BOOLEAN("Debug","saveLastRestoredTempDb",m_saveLastRestoredTempDb);
	KEY_STRING("Debug","logLevel",m_logLevel);

	KEY_BOOLEAN("ImageService","useComPalmImage2",m_useComPalmImage2);
	KEY_STRING("ImageService","comPalmImage2Binary",m_comPalmImage2BinaryFile);

    KEY_INTEGER("General", "schemaValidationOption", schemaValidationOption);

	g_key_file_free( keyfile );
	return true;
}
Ejemplo n.º 2
0
void ConfigPlanetServer::install(void)
{

	ConfigServerUtility::install();
	ExitChain::add(&remove, "ConfigPlanetServer::remove");
	
	data = new ConfigPlanetServer::Data;

	KEY_STRING (centralServerAddress, "swo-dev1.station.sony.com");
	KEY_INT    (centralServerPort, 44455);
	KEY_STRING (sceneID, "default");
	KEY_INT    (gameServicePort, 0);
	KEY_INT    (taskManagerPort, 60001);
	KEY_INT    (watcherServicePort, 60002);
	KEY_INT    (maxWatcherConnections, 1);
	KEY_INT    (watcherOverflowLimit, 1024 * 1024 * 8); // 8MB overflow for CS PlanetWatcher tool
	KEY_BOOL   (logObjectLoading, false);
	KEY_INT    (maxWatcherUpdatesPerMessage,500); // Max object updates to send to the watcher in a single message
	KEY_STRING (gameServiceBindInterface, "");
	KEY_STRING (watcherServiceBindInterface, "");
	KEY_BOOL   (loadWholePlanet, false);
	KEY_BOOL   (loadWholePlanetMultiserver, false);
	KEY_BOOL   (logPreloading, false);
	KEY_INT    (numTutorialServers, 1);
	KEY_INT    (maxInterestRadius, Node::getNodeSize());
	KEY_INT    (populationCountTime, 60); // seconds
	KEY_BOOL   (logChunkLoading, false);
	KEY_INT    (preloadBailoutTime, 0); // seconds
	KEY_STRING (preloadDataTableName, "datatables/planet_server/preload_list.iff");
	KEY_INT    (authTransferSanityCheckTimeMs, 15000);
	KEY_INT    (gameServerRestartDelayTimeSeconds, 60);
	KEY_BOOL   (enableContentsChecking, false);
	KEY_INT    (maxGameServers, 0);
	KEY_BOOL   (enableStartupCreateProxies, true);
	KEY_BOOL   (requestDbSaveOnGameServerCrash, true);
	KEY_BOOL   (gameServerProfiling, false);
	KEY_BOOL   (gameServerDebugging, false);
	KEY_INT    (gameServerDebuggingPortBase, 0);
	KEY_INT    (maxTimeToWaitForGameServerStartSeconds, 5*60); // seconds
}
Ejemplo n.º 3
0
void Settings::load(const char* settingsFile)
{
	GKeyFile* keyfile;
	GKeyFileFlags flags;
	GError* error = 0;

	keyfile = g_key_file_new();
	if(!keyfile)
		return;
	flags = GKeyFileFlags( G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS);

	if( !g_key_file_load_from_file( keyfile, settingsFile, flags, &error ) )
	{
		g_key_file_free( keyfile );
		if (error) g_error_free(error);
		return ;
	}

	// Fill in with the macros above.
	KEY_STRING("General","ApplicationPath", lunaAppsPath );					// apps path can now be multiple paths, separated by :  (setenv PATH style)
	KEY_STRING("General","AppInstallBase", appInstallBase);	// due to all the churn surrounding moving of apps around, this is now a conf option
	KEY_STRING("General","AppInstallRelative", appInstallRelative);	// due to all the churn surrounding moving of apps around, this is now a conf option
//	KEY_STRING("General","PackageInstallBase", packageInstallBase);

	KEY_STRING("General","PackageInstallRelative", packageInstallRelative);

	KEY_STRING("General","DownloadPathMedia",downloadPathMedia);
	//validate path, reset to default if necessary
	if (!validateDownloadPath(downloadPathMedia)) {
		downloadPathMedia = "/media/internal/downloads";
	}

	KEY_STRING("General","AppInstallTemp",appInstallerTmp);

	KEY_STRING("General","SystemPath", lunaSystemPath );
	KEY_STRING("General","AppLauncherPath", lunaAppLauncherPath );
	KEY_STRING("General","SystemResourcesPath", lunaSystemResourcesPath );
	KEY_STRING("General","SystemLocalePath", lunaSystemLocalePath );
	KEY_STRING("General","PresetLaunchPointsPath",lunaPresetLaunchPointsPath);
	KEY_STRING("General","LaunchPointsPath", lunaLaunchPointsPath);
	KEY_STRING("General", "PreferencesPath", lunaPrefsPath);
	KEY_STRING("General","UiComponentsPath", lunaQmlUiComponentsPath );
	KEY_BOOLEAN("General", "ShowReticle", showReticle);

	KEY_INTEGER("General", "NotificationSoundDuration", notificationSoundDuration);

	KEY_INTEGER( "CoreNavi", "ThrobberBrightnessInLight", ledPulseMaxBrightness);
	KEY_INTEGER( "CoreNavi", "ThrobberBrightnessInDark", ledPulseDarkBrightness);
	KEY_BOOLEAN( "CoreNavi", "EnableLightBar", lightbarEnabled);
	KEY_INTEGER( "CoreNavi", "CoreNaviBrightnessScaler", coreNaviScaler);
	KEY_INTEGER( "CoreNavi", "GestureAnimationSpeedInMs", gestureAnimationSpeed);
    KEY_INTEGER( "CoreNavi", "HomeDoubleClickDuration", homeDoubleClickDuration);

	KEY_INTEGER( "Display", "BrightnessOutdoorScale", backlightOutdoorScale);
	KEY_INTEGER( "Display", "BrightnessDimScale", backlightDimScale);
	KEY_INTEGER( "Display", "BrightnessDarkScale", backlightDarkScale);

	KEY_BOOLEAN( "Display", "EnableALS", enableAls);
	KEY_BOOLEAN( "Display", "TurnOffAccelerometerWhenDimmed", turnOffAccelWhenDimmed);
	KEY_BOOLEAN( "Display", "DisableLocking", disableLocking);
	KEY_INTEGER( "Display", "LockScreenTimeoutMs", lockScreenTimeout);

	KEY_INTEGER( "Memory", "CardLimit", cardLimit );
	KEY_INTEGER( "General","DisplayWidth",displayWidth);
	KEY_INTEGER( "General","DisplayHeight",displayHeight);
	KEY_INTEGER( "General","DisplayNumBuffers", displayNumBuffers);
	KEY_INTEGER("General", "MaxPenMoveFreq", maxPenMoveFreq);
	KEY_INTEGER("General",  "MaxPaintLoad", maxPaintLoad);
	KEY_INTEGER("General", "MaxGestureChangeFreq", maxGestureChangeFreq);
	KEY_INTEGER("General", "MaxTouchChangeFreq", maxTouchChangeFreq);
	KEY_BOOLEAN( "Debug", "WatchPenEvents", debug_trackInputEvents );
	KEY_BOOLEAN( "Debug", "EnableDebugModeByDefault", debug_enabled );
	KEY_BOOLEAN( "Debug", "PiranhaDrawColoredOutlines", debug_piranhaDrawColoredOutlines);
	KEY_BOOLEAN( "Debug", "PiranhaDisplayFps", debug_piranhaDisplayFps);
	KEY_BOOLEAN( "Debug", "ShowGestures", debug_showGestures);

	KEY_BOOLEAN( "Debug", "DoVerboseCrashLogging", debug_doVerboseCrashLogging);
	KEY_BOOLEAN( "Debug", "LoopInCrashHandler", debug_loopInCrashHandler);
	KEY_INTEGER( "Debug", "AppInstallerCleaner",debug_appInstallerCleaner );
	KEY_STRING( "General", "CmdResourceHandlers", lunaCmdHandlerPath );
	KEY_STRING( "General", "CmdResourceHandlersActiveCopy", lunaCmdHandlerSavedPath);
	KEY_STRING( "Fonts", "Banner", fontBanner );
	KEY_STRING( "Fonts", "ActiveBanner", fontActiveBanner );
	KEY_STRING( "Fonts", "LockWindow", fontLockWindow );
	KEY_STRING( "Fonts", "DockMode", fontDockMode );
	KEY_STRING( "Fonts", "Quicklaunch", fontQuicklaunch );
	KEY_STRING( "Fonts", "StatusBar", fontStatusBar );
	KEY_STRING( "Fonts", "KeyboardKeys", fontKeyboardKeys );
	KEY_STRING( "Fonts", "StatusBar", fontStatusBar );

	KEY_INTEGER("TouchEvents", "TapRadiusMax", tapRadius);
	KEY_INTEGER("TouchEvents", "TapRadiusMin", tapRadiusMin);
	KEY_INTEGER("TouchEvents", "TapRadiusShrinkPerc", tapRadiusShrinkPercent);
	KEY_INTEGER("TouchEvents", "TapRadiusShrinkGranMs", tapRadiusShrinkGranMs);
    KEY_BOOLEAN("TouchEvents", "EnableForWebApps", enableTouchEventsForWebApps);

	tapRadiusSquared = tapRadius * tapRadius;

	KEY_INTEGER("TouchEvents", "DoubleClickDuration", tapDoubleClickDuration);
	// Clamp to sensible values
	if (tapDoubleClickDuration < 50)
		tapDoubleClickDuration = 50;
	else if (tapDoubleClickDuration > 2000)
		tapDoubleClickDuration = 2000;

	KEY_INTEGER("VTrackBall", "PixelsPerMoveH", h_trackball_pixels_per_move );
	KEY_INTEGER("VTrackBall", "PixelsPerMoveV", v_trackball_pixels_per_move );
	KEY_INTEGER("VTrackBall", "AccelRateH1", h_accel_rate1 );
	KEY_INTEGER("VTrackBall", "AccelRateV1", v_accel_rate1 );
	KEY_INTEGER("VTrackBall", "AccelConstH1", h_accel_const1 );
	KEY_INTEGER("VTrackBall", "AccelConstV1", v_accel_const1 );
	KEY_INTEGER("VTrackBall", "AccelRateH2", h_accel_rate2 );
	KEY_INTEGER("VTrackBall", "AccelRateV2", v_accel_rate2 );
	KEY_INTEGER("VTrackBall", "AccelConstH2", h_accel_const2 );
	KEY_INTEGER("VTrackBall", "AccelConstV2", v_accel_const2 );

	KEY_STRING("General", "QuickLaunchDefaultPositions", quicklaunchDefaultPositions );
#if defined(TARGET_DESKTOP)
	//If we don't have a home directory, we'll set it to /tmp. Otherwise, this does nothing.
	setenv("HOME", "/tmp", 0);
        const std::string homeFolder = getenv("HOME");
	quicklaunchUserPositions = homeFolder + "/.user-dock-positions.json";
#endif
	KEY_STRING("General", "QuickLaunchUserPositions", quicklaunchUserPositions );
	KEY_INTEGER( "General", "StatusBarTitleMaxWidth", statusBarTitleMaxWidth);

	KEY_BOOLEAN( "DockMode", "DockModePrelaunchAllApps", dockModePrelaunchAllApps);
	KEY_BOOLEAN( "DockMode", "DockModeCloseAppOnMinimize", dockModeCloseOnMinimize);
	KEY_BOOLEAN( "DockMode", "DockModeCloseAppsOnExit", dockModeCloseOnExit);
	KEY_INTEGER( "DockMode", "DockModeMaxApps", dockModeMaxApps);
	KEY_INTEGER( "DockMode", "DockModeNightBrightness", dockModeNightBrightness);
	KEY_INTEGER( "DockMode", "DockModeMenuHeight", dockModeMenuHeight);
	KEY_STRING("DockMode", "DockModeDefaultPositions", quicklaunchDefaultPositions );
#if defined(TARGET_DESKTOP)
	dockModeUserPositions = homeFolder + "/.user-dock-mode-launcher-positions.json";
#endif
	KEY_STRING("DockMode", "DockModeUserPositions", quicklaunchUserPositions );

	KEY_BOOLEAN( "VirtualKeyboard", "VirtualKeyboardEnabled", virtualKeyboardEnabled);

	KEY_BOOLEAN( "VirtualCoreNavi", "VirtualCoreNaviEnabled", virtualCoreNaviEnabled);
	KEY_INTEGER( "VirtualCoreNavi", "VirtualCoreNaviHeight", virtualCoreNaviHeight);

	KEY_DOUBLE("Launcher", "CardSideScrollSwipeThreshold", launcherSideSwipeThreshold);
	KEY_BOOLEAN("Launcher", "UseOGLHardwareAntialias", launcherUsesHwAA);
	KEY_INTEGER("Launcher", "LauncherItemRowSpacingAdjust",launcherRowSpacingAdjust);
	KEY_INTEGER("Launcher", "LauncherLabelWidthAdjust",launcherLabelWidthAdjust);
	KEY_INTEGER("Launcher", "LauncherLabelXPadding",launcherLabelXPadding);
	KEY_DOUBLE("Launcher","LauncherIconReorderPositionThreshold",launcherIconReorderPositionThreshold);

	KEY_BOOLEAN("UI", "DisplayUiRotates", displayUiRotates);
	KEY_BOOLEAN("UI", "TabletUi", tabletUi);
	KEY_INTEGER("UI", "HomeButtonOrientationAngle", homeButtonOrientationAngle);
	KEY_INTEGER("UI", "EmuModeOrientationAngle", emuModeOrientationAngle);
	KEY_INTEGER("UI", "PositiveSpaceTopPadding", positiveSpaceTopPadding);
	KEY_INTEGER("UI", "PositiveSpaceBottomPadding", positiveSpaceBottomPadding);
	KEY_DOUBLE("UI", "MaximumNegativeSpaceHeightRatio", maximumNegativeSpaceHeightRatio);
	KEY_DOUBLE("UI", "ActiveCardWindowRatio", activeCardWindowRatio);
	KEY_DOUBLE("UI", "NonActiveCardWindowRatio", nonActiveCardWindowRatio);
	KEY_DOUBLE("UI", "GhostCardFinalRatio", ghostCardFinalRatio);
	KEY_INTEGER("UI", "CardGroupRotFactor", cardGroupRotFactor);
	KEY_INTEGER("UI", "GapBetweenCardGroups", gapBetweenCardGroups);
	KEY_INTEGER("UI", "OverlayNotificationsHeight", overlayNotificationsHeight);
	KEY_INTEGER("UI", "SplashIconSize", splashIconSize);
	KEY_BOOLEAN("UI", "EnableSplashBackgrounds", enableSplashBackgrounds);
	KEY_BOOLEAN("UI", "AtlasEnabled", atlasEnabled);

	KEY_INTEGER("UI", "EmulatedCardWidth", emulatedCardWidth);
	KEY_INTEGER("UI", "EmulatedCardHeight", emulatedCardHeight);
	KEY_INTEGER("UI", "ModalWindowWidth", modalWindowWidth);
	KEY_INTEGER("UI", "ModalWindowHeight", modalWindowHeight);

	KEY_DOUBLE("UI", "CardGroupingXDistanceFactor", cardGroupingXDistanceFactor);
    KEY_DOUBLE("UI", "CardDimmPercentage", cardDimmPercentage);

	KEY_INTEGER("UI", "AtlasMemThreshold", atlasMemThreshold);
	KEY_BOOLEAN("Debug", "LauncherAtlasStatistics", launcherAtlasStatistics);
	KEY_BOOLEAN("Debug", "DumpLauncherAtlas", launcherDumpAtlas);
	if (forceSoftwareRendering) {
		atlasEnabled = false;
		launcherAtlasStatistics = false;
	} else if (atlasEnabled && atlasMemThreshold > 0 && MeasureTotalRAM() < atlasMemThreshold * 1024) {
		g_message("Atlas disabled because physical memory below %dMB threshold\n", atlasMemThreshold);
		atlasEnabled = false;
	}

	KEY_INTEGER("DownloadManager", "MaxQueueLength", maxDownloadManagerQueueLength);
	KEY_INTEGER("DownloadManager", "MaxConcurrent", maxDownloadManagerConcurrent);
	KEY_INTEGER("DownloadManager", "MaxRecvSpeed", maxDownloadManagerRecvSpeed);

	KEY_STRING( "Demo", "GestureRepeaterIp", cesGestureRepeaterIp );
	KEY_INTEGER( "Demo", "GestureRepeaterPort", cesGestureRepeaterPort );
	KEY_BOOLEAN( "Demo", "EnableGestureRepeater", enableGestureRepeater );

	KEY_BOOLEAN( "Demo", "DemoMode", demoMode );

	KEY_BOOLEAN( "Debug", "ShowAppStats", showAppStats );

	KEY_BOOLEAN( "General", "CollectUseStats", collectUseStats );

	KEY_BOOLEAN( "General" , "UsePartialKeywordMatchForAppSearch",usePartialKeywordAppSearch);
	KEY_BOOLEAN( "General" , "ScanCalculatesAppSizes",scanCalculatesAppSizes);

	KEY_INTEGER("KeepAlive", "MaxParked", maxNumParkedApps );

	KEY_INTEGER("CpuShare", "UiMainLow", uiMainCpuShareLow);
	KEY_INTEGER("CpuShare", "UiOtherLow", uiOtherCpuShareLow);
	KEY_INTEGER("CpuShare", "JavaLow", javaCpuShareLow);
	KEY_INTEGER("CpuShare", "WebLow", webCpuShareLow);
	KEY_INTEGER("CpuShare", "GameLow", gameCpuShareLow);
	KEY_INTEGER("CpuShare", "Default", cpuShareDefault);

	KEY_BOOLEAN("AllowTurboMode", "General", allowTurboMode);

	KEY_STRING( "General", "WifiInterfaceName", wifiInterfaceName );
	KEY_STRING( "General", "WanInterfaceName", wanInterfaceName );

	KEY_BOOLEAN( "Memory", "CanRestartHeadlessApps", canRestartHeadlessApps );
	KEY_BOOLEAN( "Debug", "PerformanceLogs", perfTesting);

    KEY_INTEGER("General", "schemaValidationOption", schemaValidationOption);


	// apps to launch at boot time

	gchar** appsToLaunchAtBootStr =   g_key_file_get_string_list(keyfile, "LaunchAtBoot",
																 "Applications", NULL, NULL);
	if (appsToLaunchAtBootStr) {

		int index = 0;
		appsToLaunchAtBoot.clear();
		while (appsToLaunchAtBootStr[index]) {
			appsToLaunchAtBoot.insert(appsToLaunchAtBootStr[index]);
			SETTINGS_TRACE("App to launch at boot time: %s\n", appsToLaunchAtBootStr[index]);
			++index;
		}

		g_strfreev(appsToLaunchAtBootStr);
	}

	// apps to keep alive
	gchar** appsToKeepAliveStr =   g_key_file_get_string_list(keyfile, "KeepAlive",
																 "Applications", NULL, NULL);
	if (appsToKeepAliveStr) {

		int index = 0;
		appsToKeepAlive.clear();
		while (appsToKeepAliveStr[index]) {
			appsToKeepAlive.insert(appsToKeepAliveStr[index]);
			SETTINGS_TRACE("App to keep alive: %s\n", appsToKeepAliveStr[index]);
			++index;
		}

		g_strfreev(appsToKeepAliveStr);
	}

	// apps to keep alive forever (pinned)
	gchar** appsToKeepAliveForeverStr =   g_key_file_get_string_list(keyfile, "KeepAliveUntilMemPressure",
																 "Applications", NULL, NULL);
	if (appsToKeepAliveForeverStr) {

		int index = 0;
		appsToKeepAliveUntilMemPressure.clear();
		while (appsToKeepAliveForeverStr[index]) {
			appsToKeepAliveUntilMemPressure.insert(appsToKeepAliveForeverStr[index]);
			SETTINGS_TRACE("App to keep alive until memory pressure: %s\n", appsToKeepAliveForeverStr[index]);
			++index;
		}

		g_strfreev(appsToKeepAliveForeverStr);
	}

	// apps to allow under low memory conditions
	gchar** appsToAllowInLowMemoryStr = g_key_file_get_string_list(keyfile, "Memory",
																   "AppsToAllowInLowMemory", NULL, NULL);
	if (appsToAllowInLowMemoryStr) {

		int index = 0;
		appsToAllowInLowMemory.clear();
		while (appsToAllowInLowMemoryStr[index]) {
			appsToAllowInLowMemory.insert(appsToAllowInLowMemoryStr[index]);
			g_message("App to allow in Low memory: %s", appsToAllowInLowMemoryStr[index]);
			++index;
		}

		g_strfreev(appsToAllowInLowMemoryStr);
	}

	// apps with accelerated compositing disabled
	gchar** appsToDisableAccelCompositingStr = g_key_file_get_string_list(keyfile, "AccelCompositingDisabled",
											"Applications", NULL, NULL);
	if (appsToDisableAccelCompositingStr) {
		int index = 0;
		appsToDisableAccelCompositing.clear();
		while (appsToDisableAccelCompositingStr[index]) {
			appsToDisableAccelCompositing.insert(appsToDisableAccelCompositingStr[index]);
			SETTINGS_TRACE("App with accelerated compositing disabled: %s\n", appsToDisableAccelCompositingStr[index]);
			++index;
		}

		g_strfreev(appsToDisableAccelCompositingStr);
	}

	// SUC apps that have special launch privs
	gchar** sucAppsList =   g_key_file_get_string_list(keyfile, "SUCApps",
			"Applications", NULL, NULL);
	if (sucAppsList) {

		int index = 0;
		sucApps.clear();
		while (sucAppsList[index]) {
			sucApps.insert(sucAppsList[index]);
			SETTINGS_TRACE("SUC App with special launch priviledge: %s\n", sucAppsList[index]);
			++index;
		}

		g_strfreev(sucAppsList);
	}

	// ...

	g_key_file_free( keyfile );

	// sanity check on the homeButtonOrientationAngle value:

	if(homeButtonOrientationAngle >= 360)
		homeButtonOrientationAngle = homeButtonOrientationAngle%360;

	if(homeButtonOrientationAngle < -90)
		homeButtonOrientationAngle += 360;

	if((homeButtonOrientationAngle != 0) && (homeButtonOrientationAngle != 90) &&
	   (homeButtonOrientationAngle != 180) && (homeButtonOrientationAngle != 270) &&
	   (homeButtonOrientationAngle != -90))
		homeButtonOrientationAngle = 0;

	// sanity check on the emuModeOrientationAngle value:

	if(emuModeOrientationAngle >= 360)
		emuModeOrientationAngle = emuModeOrientationAngle%360;

	if(emuModeOrientationAngle < -90)
		emuModeOrientationAngle += 360;

	if((emuModeOrientationAngle != 0) && (emuModeOrientationAngle != 90) &&
	   (emuModeOrientationAngle != 180) && (emuModeOrientationAngle != 270) &&
	   (emuModeOrientationAngle != -90))
		emuModeOrientationAngle = 0;

}
void ConfigServerDatabase::install(void)
{
	ExitChain::add(ConfigServerDatabase::remove,"ConfigServerDatabase::remove");

	ConfigServerUtility::install();
	data = &staticData;

	KEY_INT     (objvarNameCleanupTime, 0);
	KEY_INT     (orphanedObjectCleanupTime, 0);
	KEY_INT     (marketAttributesCleanupTime, 0);
	KEY_INT     (messagesCleanupTime, 0);
	KEY_INT     (brokenObjectCleanupTime, 0);
	KEY_INT     (vendorObjectCleanupTime, 0);
	KEY_STRING  (customSQLFilename,"");
	KEY_BOOL    (enableFixBadCells, false);
	KEY_STRING  (objectTemplateListUpdateFilename,"");

	KEY_STRING  (DSN,"gameserver");
	KEY_STRING  (alternateDSN,"");
	KEY_STRING  (databaseUID,"gameserver");
	KEY_STRING  (databasePWD,"gameserver");
	KEY_STRING  (databaseProtocol,"DEFAULT");
	KEY_STRING  (centralServerAddress, "localhost");
	KEY_INT     (centralServerPort, 44451);
	KEY_STRING  (commoditiesServerAddress, "localhost");
	KEY_INT     (commoditiesServerPort, 44457);	//todo: confirm that this is a good port MSH
	KEY_INT     (taskManagerPort, 60001);
	KEY_INT     (expectedDBVersion, 270);
	KEY_BOOL    (correctDBVersionRequired,true);
	KEY_INT     (saveFrequencyLimit,10);
	KEY_STRING  (schemaOwner, "");
	KEY_STRING  (goldSchemaOwner, "");
	KEY_FLOAT   (uniqueMessageCacheTimeSec, 30.0f);
	KEY_INT     (loaderThreads,2);
	KEY_INT     (persisterThreads,1);
	KEY_INT     (newCharacterThreads,1);
	KEY_INT     (characterImmediateDeleteMinutes,120);
	KEY_BOOL    (logObjectLoading, false);
	KEY_BOOL    (enableQueryProfile, false);
	KEY_BOOL    (verboseQueryMode, false);
	KEY_BOOL    (logWorkerThreads, false);
	KEY_STRING  (gameServiceBindInterface, "");
	KEY_BOOL    (reportSaveTimes, false);
	KEY_BOOL    (shouldSleep, true);
	KEY_BOOL    (enableLoadLocks, true);
	KEY_INT     (databaseReconnectTime, 0);
	KEY_BOOL    (logChunkLoading,false);
	KEY_BOOL    (useMemoryManagerForOCI,true);
	KEY_INT     (maxCharactersPerLoadRequest,10);
	KEY_INT     (maxChunksPerLoadRequest,200);
	KEY_FLOAT   (maxLoadStartDelay,300.0f);
	KEY_INT     (maxErrorCountBeforeDisconnect,5);
	KEY_INT     (maxErrorCountBeforeBailout,15);
	KEY_INT     (errorSleepTime,5000);
	KEY_INT     (disconnectSleepTime,30000);
	KEY_INT     (saveAtModulus,-1);
	KEY_INT     (saveAtDivisor,10);
	KEY_INT     (backloggedQueueSize,50);
	KEY_INT     (backloggedRecoveryQueueSize,25);
	KEY_INT     (maxTimewarp,data->saveFrequencyLimit * 2 < 600 ? 600 : data->saveFrequencyLimit * 2);
	KEY_BOOL    (enableObjvarPacking, true);
	KEY_INT     (prefetchNumRows,0);
	KEY_INT     (prefetchMemory,0);
	KEY_INT     (defaultFetchBatchSize,1000);
	KEY_INT     (queryReportingRate,60);
	KEY_INT     (enableDatabaseErrorLogging, 0);
	KEY_INT     (defaultMessageBulkBindSize, 1000);
	KEY_BOOL    (enableGoldDatabase, false);
	KEY_STRING  (maxGoldNetworkId, "10000000");
	KEY_FLOAT   (defaultQueueUpdateTimeLimit, 0.25f);
	KEY_BOOL    (enableDataCleanup, false);
	KEY_INT     (defaultLazyDeleteBulkBindSize, 100);
	KEY_INT     (defaultLazyDeleteSleepTime, 1000);
	KEY_INT     (writeDelay, 0);
	KEY_BOOL    (delayUnloadIfObjectStillHasData, true);
	KEY_FLOAT   (experienceConsolidationTime, 0.0f);
	KEY_INT     (maxLoaderFinishedTasks, 100);
	KEY_FLOAT   (reportLongFrameTime, 1.0f);
	KEY_BOOL    (enableVerboseMessageLogging, false);
	KEY_BOOL    (profilerExpandAll, true);
	KEY_INT     (profilerDisplayPercentageMinimum, 0);
	KEY_BOOL    (fatalOnDataError, false);
	KEY_INT     (maxUnackedLoadCount, 1000000000);  // by default, set to an "unlimited" number, and use maxUnackedLoadCountPerServer as the cap
	KEY_INT     (maxUnackedLoadCountPerServer, 2);
	KEY_INT     (auctionLocationLoadBatchSize, 100);
	KEY_INT     (auctionLoadBatchSize, 100);
	KEY_INT     (auctionAttributeLoadBatchSize, 100);
	KEY_INT     (auctionBidLoadBatchSize, 100);
	KEY_INT     (oldestUnackedLoadAlertThresholdSeconds, 10*60); // seconds
}