Class SoDelayQueueSensor
- java.lang.Object
-
- com.openinventor.inventor.Inventor
-
- com.openinventor.inventor.sensors.SoSensor
-
- com.openinventor.inventor.sensors.SoDelayQueueSensor
-
- Direct Known Subclasses:
SoDataSensor
,SoIdleSensor
,SoOneShotSensor
public class SoDelayQueueSensor extends SoSensor
Abstract base class for sensors not dependent on time. Delay queue sensors are separate from timer queue sensors (seeSoTimerQueueSensor
) and provide methods for setting the relative priorities of the sensors in the delay queue (sensors with higher priorities will be triggered first).Sensors with non-zero priorities are added to the delay queue when scheduled, and are all processed once, in order, when the delay queue is processed, which normally happens as part of your program's main loop (see SoWin.mainLoop() or SoDB.doSelect()). Typically, the delay queue is processed whenever there are no events waiting to be distributed and there are no timer queue sensors waiting to be triggered. The delay queue also has a timeout to ensure that delay queue sensors are triggered even if there are always events or timer sensors waiting; see
SoDB.setDelaySensorTimeout()
.Sensors with priority 0 are treated specially. Priority 0 sensors are triggered almost immediately after they are scheduled, before the program returns to the main loop. Priority 0 sensors are not necessarily triggered immediately when they are scheduled, however; if they are scheduled as part of the evaluation of a field connection network they may not be triggered until the evaluation of the network is complete. Also, if a priority 0 sensor is scheduled within the callback method of another priority 0 sensor, it will not be triggered until the callback method is complete (also note that if more than one priority 0 sensor is scheduled, the order in which they fire is undefined).
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.openinventor.inventor.Inventor
Inventor.ConstructorCommand
-
-
Field Summary
-
Fields inherited from class com.openinventor.inventor.Inventor
VERBOSE_LEVEL, ZeroHandle
-
-
Constructor Summary
Constructors Constructor Description SoDelayQueueSensor()
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static long
getDefaultPriority()
Returns the default delay queue sensor priority, which is 100.long
getPriority()
Gets the priority of the sensor.boolean
isIdleOnly()
void
setPriority(long pri)
Sets the priority of the sensor.-
Methods inherited from class com.openinventor.inventor.sensors.SoSensor
isScheduled, schedule, setTask, unschedule
-
Methods inherited from class com.openinventor.inventor.Inventor
dispose, getNativeResourceHandle
-
-
-
-
Method Detail
-
isIdleOnly
public boolean isIdleOnly()
-
setPriority
public void setPriority(long pri)
Sets the priority of the sensor. Priorities can be changed at any time; if the priority is changed to zero and it is already scheduled, the sensor is immediately triggered and removed from the queue.
-
getDefaultPriority
public static long getDefaultPriority()
Returns the default delay queue sensor priority, which is 100.
-
getPriority
public long getPriority()
Gets the priority of the sensor.
-
-