blob: 8bf8ffac8661851d3b6ef5a917b6a95bf340b82f [file] [log] [blame] [raw]
package li.cil.oc.api.internal;
import li.cil.oc.api.component.RackMountable;
import li.cil.oc.api.machine.MachineHost;
import li.cil.oc.api.network.EnvironmentHost;
/**
* This interface is implemented as a marker by servers in racks.
* <p/>
* This is implemented by servers in server racks, which serve as their
* computer components' environment. That means you can use this to check for
* servers by using either:
* <pre>
* if (node.host() instanceof Server) {
* </pre>
* <p/>
* You can get a reference to a server either via the above cast, or via a
* {@link li.cil.oc.api.internal.Rack#getMountable(int)}.
* <p/>
* The only purpose is to allow identifying node environments as servers
* via the API, i.e. without having to link against internal classes. This
* also means that <em>you should not implement this</em>.
*/
public interface Server extends EnvironmentHost, MachineHost, Tiered, RackMountable {
/**
* The server rack this server is in.
*/
Rack rack();
/**
* The slot of the server rack this server is in.
*/
int slot();
}