|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object fr.emn.reactiveinput.AbstractDevice fr.emn.reactiveinput.AbstractMutableDevice fr.emn.reactiveinput.devices.DScript
Field Summary | |
In[] |
ins
|
static int |
MAX_SLOTS
|
Out[] |
outs
|
Fields inherited from class fr.emn.reactiveinput.AbstractDevice |
currIndex |
Fields inherited from interface fr.emn.reactiveinput.Device |
AUTO_PROPERTIES |
Constructor Summary | |
DScript()
|
Method Summary | |
void |
doDisable()
Add device disabling code here (does nothing by default). |
java.lang.String[] |
getInSlots()
|
MultiString |
getJavaScript()
|
Slot[] |
getMutationTriggers()
Returns the mutation triggers for this mutable device, i.e. all input or output slots that trigger a mutation when it is connected to another type. |
java.lang.String[] |
getOutSlots()
|
boolean |
isOpenable()
USE: Design. |
void |
mutate()
Perform a mutation on this device. |
Processor |
open(OpenContext context)
Ensures that the device will be ready for processing or producing data, and returns the Processor object that will process data, or null if an error occured. |
void |
setInSlots(java.lang.String[] s)
|
void |
setJavaScript(MultiString value)
|
void |
setOutSlots(java.lang.String[] s)
|
protected void |
updateSlots()
|
Methods inherited from class fr.emn.reactiveinput.AbstractMutableDevice |
addMutableIn, addMutableIn, addMutableIn, addMutableOut, addMutableOut, remove |
Methods inherited from class fr.emn.reactiveinput.AbstractDevice |
addIn, addIn, addOut, close, copy, doEnable, finalize, getError, getIndex, getInfo, getIns, getName, getOuts, getProperties, hasExternalInput, hasExternalOutput, init, insertAt, insertAtEnd, insertBefore, isCopiable, isEnabled, setEnabled, setInfo, setInfo, setLastError, setName, update |
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface fr.emn.reactiveinput.Device |
close, copy, getError, getInfo, getIns, getName, getOuts, getProperties, hasExternalInput, hasExternalOutput, isCopiable, setEnabled |
Field Detail |
public static int MAX_SLOTS
public final In[] ins
public final Out[] outs
Constructor Detail |
public DScript()
Method Detail |
public boolean isOpenable()
Device
This method returns false if the device is not openable because it is not properly configured (e.g. important input slots are not connected). Reactive machines ignore devices that are not openable.
Use this method if you want some pre-conditions to be verified before the execution of your device, inside init() and update() methods.
In the default method provided in DeviceUtilities, isOpenable() returns false if one or several obligatory input slots are not valid (see In.isValid()). You may add your own pre-conditions to this method.
Example :
public boolean isOpenable() {
if (DeviceUtilities.defaultIsOpenable(this)) { // Verify default pre-conditions
if (...) // Put additional pre-conditions here
return true;
}
return false;
}
isOpenable
in interface Device
isOpenable
in class AbstractDevice
public Processor open(OpenContext context)
Device
Some devices may need to perform some more or less heavy initialization (such as allocating resources or opening a stream) before being able to process or produce data. This is the case for most input devices, and some I/O and output devices. All these initializations must be done in the open() method.
Because these initializations are subject to fail, open() may return null even if isOpenable() returns true. In all cases, returning a non-null Processor means that the device is now able to process or produce data.
RE-OPENING A DEVICE:
Devices always stay open during reconfiguration, in order to avoid unnecessary deallocation and reallocation of resources. However, some devices will need to be re-open before re-starting the configuration. So open() is always called on all devices before re-starting.
If open() is called on a device that is already open, it may have no effect (and the current Processor is returned), or the device may be re-open if something has changed in its configuration.
Using a Processor as a return value allows the use of different processors, each adapted to a specific device configuration.
open
in interface Device
open
in class AbstractDevice
Processor
,
Device.open()
public void doDisable()
AbstractDevice
doDisable
in class AbstractDevice
protected void updateSlots()
public void mutate()
AbstractMutableDevice
Add mutation code here.
mutate
in interface MutableDevice
mutate
in class AbstractMutableDevice
public Slot[] getMutationTriggers()
AbstractMutableDevice
getMutationTriggers
in interface MutableDevice
getMutationTriggers
in class AbstractMutableDevice
public java.lang.String[] getInSlots()
public void setInSlots(java.lang.String[] s)
public java.lang.String[] getOutSlots()
public void setOutSlots(java.lang.String[] s)
public MultiString getJavaScript()
public void setJavaScript(MultiString value)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |