blob: e91a790431a605ef28552cc6ce3be999f464d1c5 [file] [log] [blame] [raw]
package li.cil.oc.api.network;
/**
* Possible reachability values for nodes.
* <p/>
* Since all nodes that are connected are packed into the same network, we want
* some way of controlling what's accessible from where on a low level (to
* avoid unnecessary messages and unauthorized access).
* <p/>
* Note that there is a more specific kind of visibility for components. See
* {@link Component} for more details on that.
*/
public enum Visibility {
/**
* Nodes with this visibility neither receive nor send messages.
* <p/>
* Components with this visibility cannot be seen nor reached by computers.
*/
None,
/**
* Nodes with this visibility only receive messages from their immediate
* neighbors, i.e. nodes to which a direct connection exists. It can send
* messages to all nodes visible to it.
* <p/>
* Components with this visibility can likewise only be reached by the
* computer(s) they are directly attached to. For example, if a block
* component is placed directly next to the computer, or an item installed
* in the computer (i.e. it is in the computer's inventory).
*/
Neighbors,
/**
* Nodes with this visibility can receive messages from any node in its
* network. It can still only send messages to all nodes visible to it.
* <p/>
* Components with this visibility are likewise reachable by all computers
* in their network. For example, a screen only indirectly connected to a
* computer will still be addressable by that computer.
*/
Network
}