API: Shutdown: Difference between revisions
Appearance
mNo edit summary |
No edit summary |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 18: | Line 18: | ||
##Save and unload PlayerDB | ##Save and unload PlayerDB | ||
##Save and unload IPBanList | ##Save and unload IPBanList | ||
##Set Environment.ExitCode to the appropriate ShutdownReason code. | |||
##''Server.ShutdownEnded'' | ##''Server.ShutdownEnded'' | ||
==Termination== | |||
:ServerGUI does a clean shutdown on <code>WM_QUIT</code>/<code>WM_CLOSE</code> (<code>SIGTERM</code> on *nix). ServerCLI does a clean shutdown on Ctrl+C or Ctrl+Break, but does not handle signals. CLR does not provide a low-level way of handling signals/interrupts, but WinForms applications handle it internally, and call the Form.Closing event. Command-line applications just die. | |||
[[Category:Dev]] | [[Category:Dev]] | ||
Latest revision as of 00:07, 27 August 2012
When an fCraft server is being shut down, the following sequence of events takes place:
- Server.Shutdown
- Cancels any previous shutdown attempt.
- Verifies ShutdownParams
- Announces shutdown and starts the countdown.
After the timer elapses, Server.ShutdownNow (internal) is called on a separate thread:
- Server.ShutdownNow
- Server.ShutdownBegan
- Scheduler clears the list of tasks, and prevents future tasks from being added. Current task is allowed to finish.
- Stop listening for connections
- Kick all players, allow 1000ms to deliver the kick packet
- Disconnect IRC
- Save and unload all worlds
- Scheduler waits for current task to finish (if it is still running).
- Save and unload PlayerDB
- Save and unload IPBanList
- Set Environment.ExitCode to the appropriate ShutdownReason code.
- Server.ShutdownEnded
Termination
- ServerGUI does a clean shutdown on
WM_QUIT/WM_CLOSE(SIGTERMon *nix). ServerCLI does a clean shutdown on Ctrl+C or Ctrl+Break, but does not handle signals. CLR does not provide a low-level way of handling signals/interrupts, but WinForms applications handle it internally, and call the Form.Closing event. Command-line applications just die.