fr.emn.reactiveinput.devices
Class DScript

java.lang.Object
  extended byfr.emn.reactiveinput.AbstractDevice
      extended byfr.emn.reactiveinput.AbstractMutableDevice
          extended byfr.emn.reactiveinput.devices.DScript
All Implemented Interfaces:
Device, MutableDevice, Processor

public class DScript
extends AbstractMutableDevice


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

MAX_SLOTS

public static int MAX_SLOTS

ins

public final In[] ins

outs

public final Out[] outs
Constructor Detail

DScript

public DScript()
Method Detail

isOpenable

public boolean isOpenable()
Description copied from interface: Device
USE: Design.

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; }

Specified by:
isOpenable in interface Device
Overrides:
isOpenable in class AbstractDevice

open

public Processor open(OpenContext context)
Description copied from interface: Device
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.

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.

Specified by:
open in interface Device
Overrides:
open in class AbstractDevice
See Also:
Processor, Device.open()

doDisable

public void doDisable()
Description copied from class: AbstractDevice
Add device disabling code here (does nothing by default).

Overrides:
doDisable in class AbstractDevice

updateSlots

protected void updateSlots()

mutate

public void mutate()
Description copied from class: AbstractMutableDevice
Perform a mutation on this device. This method is called when a connection is made (or deleted) on an entry point.

Add mutation code here.

Specified by:
mutate in interface MutableDevice
Specified by:
mutate in class AbstractMutableDevice

getMutationTriggers

public Slot[] getMutationTriggers()
Description copied from class: AbstractMutableDevice
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.

Specified by:
getMutationTriggers in interface MutableDevice
Specified by:
getMutationTriggers in class AbstractMutableDevice

getInSlots

public java.lang.String[] getInSlots()

setInSlots

public void setInSlots(java.lang.String[] s)

getOutSlots

public java.lang.String[] getOutSlots()

setOutSlots

public void setOutSlots(java.lang.String[] s)

getJavaScript

public MultiString getJavaScript()

setJavaScript

public void setJavaScript(MultiString value)