| package li.cil.oc.server.component.machine |
| |
| /** |
| * Used by the Machine to determine the result of a call to runThreaded. |
| * |
| * Do not implement this interface, only use the predefined classes below. |
| */ |
| trait ExecutionResult |
| |
| object ExecutionResult { |
| |
| /** |
| * Indicates the machine may sleep for the specified number of ticks. This is |
| * merely considered a suggestion. If signals are in the queue or are pushed |
| * to the queue while sleeping, the sleep will be interrupted and runThreaded |
| * will be called so that the next signal is pushed. |
| * |
| * @param ticks the number of ticks to sleep. |
| */ |
| class Sleep(val ticks: Int) extends ExecutionResult |
| |
| /** |
| * Indicates tha the computer should shutdown or reboot. |
| * |
| * @param reboot whether to reboot. If false the computer will stop. |
| */ |
| class Shutdown(val reboot: Boolean) extends ExecutionResult |
| |
| /** |
| * Indicates that a synchronized call should be performed. The architecture |
| * is expected to be in a state that allows the next call to be to |
| * runSynchronized instead of runThreaded. This is used to perform calls from |
| * the server's main thread, to avoid threading issues when interacting with |
| * other objects in the world. |
| */ |
| class SynchronizedCall extends ExecutionResult |
| |
| /** |
| * Indicates that an error occurred and the computer should crash. |
| * |
| * @param message the error message. |
| */ |
| class Error(val message: String) extends ExecutionResult |
| |
| } |