Provided by: inventor-doc_2.1.5-10+dfsg-2.1build2_all bug

NAME

       SoDelayQueueSensor — abstract base class for sensors not dependent on time

INHERITS FROM

       SoSensor > SoDelayQueueSensor

SYNOPSIS

       #include <Inventor/sensors/SoDelayQueueSensor.h>

          Methods from class SoDelayQueueSensor:

     void                setPriority(uint32_t pri)
     uint32_t            getPriority()
     static uint32_t     getDefaultPriority()
     virtual void        schedule()
     virtual void        unschedule()
     virtual SbBool      isScheduled()

          Methods from class SoSensor:

     void                setFunction(SoSensorCB *callbackFunction)
     SoSensorCB *        getFunction() const
     void                setData(void *callbackData)
     void *              getData() const

DESCRIPTION

       Delay  queue  sensors  are separate from timer queue sensors (see SoTimerQueueSensor) 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 SoXt::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).

METHODS

     void                setPriority(uint32_t pri)
     uint32_t            getPriority()
          Sets/gets 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.

     static uint32_t     getDefaultPriority()
          Returns the default delay queue sensor priority, which is 100.

     virtual void        schedule()
          If this sensor's priority is non-zero, adds this sensor to the list of delay queue sensors ready to be
          triggered. This is a way of making a sensor fire without changing the thing it is sensing.

          Calling  schedule()  within  the  callback function causes the sensor to be called repeatedly. Because
          sensors are processed only once every time the delay queue  is  processed  (even  if  they  reschedule
          themselves),  timers  and events will still be processed. This should not be done with a priority zero
          sensor because an infinite loop will result.

     virtual void        unschedule()
          If this sensor is scheduled, removes it from the delay queue so that it will not be triggered.

     virtual SbBool      isScheduled()
          Returns TRUE if this sensor has been scheduled and is waiting in the  delay  queue  to  be  triggered.
          Sensors are removed from the queue before their callback function is triggered.

SEE ALSO

       SoTimerQueueSensor,    SoDataSensor,    SoFieldSensor,   SoIdleSensor,   SoOneShotSensor,   SoNodeSensor,
       SoPathSensor, SoSensorManager

                                                                                       SoDelayQueueSensor(3IV)()