MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / Root

Method Root

source/game/StarRoot.cpp:75–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73}
74
75Root::Root(Settings settings) : RootBase() {
76 m_settings = std::move(settings);
77 if (m_settings.runtimeConfigFile)
78 m_runtimeConfigFile = toStoragePath(*m_settings.runtimeConfigFile);
79
80 if (!File::isDirectory(m_settings.storageDirectory))
81 File::makeDirectory(m_settings.storageDirectory);
82
83 if (m_settings.logFile) {
84 String logFile = File::relativeTo(m_settings.logDirectory.value(m_settings.storageDirectory), *m_settings.logFile);
85 String oldLogDirectory = m_settings.logDirectory.value(File::relativeTo(m_settings.storageDirectory, "logs"));
86 if (!File::isDirectory(oldLogDirectory))
87 File::makeDirectory(oldLogDirectory);
88
89 File::backupFileInSequence(logFile, File::relativeTo(oldLogDirectory, *m_settings.logFile), m_settings.logFileBackups);
90 Logger::addSink(make_shared<FileLogSink>(logFile, m_settings.logLevel, true));
91 }
92 Logger::stdoutSink()->setLevel(m_settings.logLevel);
93
94 if (m_settings.quiet)
95 Logger::removeStdoutSink();
96
97 Logger::info("Root: Preparing...");
98
99 m_stopMaintenanceThread = false;
100 m_maintenanceThread = Thread::invoke("Root::maintenanceMain", [this]() {
101 MutexLocker locker(m_maintenanceStopMutex);
102 while (!m_stopMaintenanceThread) {
103 m_reloadListeners.clearExpiredListeners();
104
105 {
106 MutexLocker locker(m_objectDatabaseMutex);
107 if (ObjectDatabasePtr objectDb = m_objectDatabase) {
108 locker.unlock();
109 objectDb->cleanup();
110 }
111 }
112 {
113 MutexLocker locker(m_itemDatabaseMutex);
114 if (ItemDatabasePtr itemDb = m_itemDatabase) {
115 locker.unlock();
116 itemDb->cleanup();
117 }
118 }
119 {
120 MutexLocker locker(m_monsterDatabaseMutex);
121 if (MonsterDatabasePtr monsterDb = m_monsterDatabase) {
122 locker.unlock();
123 monsterDb->cleanup();
124 }
125 }
126 {
127 MutexLocker locker(m_assetsMutex);
128 if (AssetsPtr assets = m_assets) {
129 locker.unlock();
130 assets->cleanup();
131 }
132 }

Callers

nothing calls this directly

Calls 7

addEntropyFunction · 0.85
clearExpiredListenersMethod · 0.80
valueMethod · 0.45
setLevelMethod · 0.45
unlockMethod · 0.45
cleanupMethod · 0.45
waitMethod · 0.45

Tested by

no test coverage detected