| 191 | } |
| 192 | |
| 193 | void ServerControl::checkShutdown(void) { |
| 194 | // Check for server shutdown |
| 195 | // |
| 196 | // We shutdown the server in the following cases: |
| 197 | // The server has no players and |
| 198 | // the reset server once file exists OR |
| 199 | // the reset server always file exists and someone was on the server |
| 200 | // |
| 201 | if ((numPlayers <= 0) || (ignoreObservers && (numPlayers - numObservers) <= 0)) { // No players |
| 202 | if (resetServerOnceFilename != "") { |
| 203 | std::ifstream resetOnce(resetServerOnceFilename.c_str()); |
| 204 | if (resetOnce) { // Reset server once exists |
| 205 | resetOnce.close(); |
| 206 | remove(resetServerOnceFilename.c_str()); |
| 207 | bz_debugMessagef(2, "ServerControl - Reset Server Once - SHUTDOWN"); |
| 208 | bz_shutdown(); |
| 209 | } |
| 210 | else if (resetServerAlwaysFilename != "" && serverActive) { |
| 211 | // Server was active - some non-observer player connected |
| 212 | std::ifstream resetAlways(resetServerAlwaysFilename.c_str()); |
| 213 | if (resetAlways) { // Reset server always exists |
| 214 | resetAlways.close(); |
| 215 | bz_debugMessagef(2, "ServerControl - Reset Server Always - SHUTDOWN"); |
| 216 | bz_shutdown(); |
| 217 | } |
| 218 | } |
| 219 | } |
| 220 | } |
| 221 | } |
| 222 | |
| 223 | void ServerControl::process(bz_EventData* eventData) { |
| 224 | ostringstream msg; |
nothing calls this directly
no test coverage detected