Jump to content

API: Shutdown: Difference between revisions

From fCraft Wiki
mNo edit summary
Hellenion (talk | contribs)
Section about program termination.
Line 19: Line 19:
##Save and unload IPBanList
##Save and unload IPBanList
##''Server.ShutdownEnded''
##''Server.ShutdownEnded''
==Termination==
: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.


[[Category:Dev]]
[[Category:Dev]]

Revision as of 18:35, 26 August 2012

When an fCraft server is being shut down, the following sequence of events takes place:

  1. Server.Shutdown
    1. Cancels any previous shutdown attempt.
    2. Verifies ShutdownParams
    3. Announces shutdown and starts the countdown.

After the timer elapses, Server.ShutdownNow (internal) is called on a separate thread:

  1. Server.ShutdownNow
    1. Server.ShutdownBegan
    2. Scheduler clears the list of tasks, and prevents future tasks from being added. Current task is allowed to finish.
    3. Stop listening for connections
    4. Kick all players, allow 1000ms to deliver the kick packet
    5. Disconnect IRC
    6. Save and unload all worlds
    7. Scheduler waits for current task to finish (if it is still running).
    8. Save and unload PlayerDB
    9. Save and unload IPBanList
    10. Server.ShutdownEnded

Termination

ServerGUI does a clean shutdown on TERM. ServerCLI does not handle it at all.
.NET 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.