Provided by: inventor-doc_2.1.5-10-18_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)()