API: Shutdown: Difference between revisions
Appearance
Section about program termination. |
m →Termination: typo |
||
| Line 21: | Line 21: | ||
==Termination== | ==Termination== | ||
:ServerGUI does a clean shutdown on <CODE>TERM<CODE>. ServerCLI does not handle it at all. | :ServerGUI does a clean shutdown on <CODE>TERM</CODE>. ServerCLI does not handle it at all. | ||
:<CODE>.NET</CODE> 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. | :<CODE>.NET</CODE> 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]] | ||
Revision as of 18:36, 26 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
- Server.ShutdownEnded
Termination
- ServerGUI does a clean shutdown on
TERM. ServerCLI does not handle it at all. .NETdoes 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.