Jump to content

API: Shutdown

From fCraft Wiki
Revision as of 18:36, 26 August 2012 by Hellenion (talk | contribs) (Termination: typo)

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.