SoSensorManager.h
#ifndef COIN_SOSENSORMANAGER_H
#define COIN_SOSENSORMANAGER_H
/**************************************************************************\
* Copyright (c) Kongsberg Oil & Gas Technologies AS
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\**************************************************************************/
#include <Inventor/SbBasic.h>
class SoDelayQueueSensor;
class SoTimerQueueSensor;
class SoTimerSensor;
class SbTime;
class COIN_DLL_API SoSensorManager {
public:
SoSensorManager(void);
~SoSensorManager();
void insertDelaySensor(SoDelayQueueSensor * s);
void insertTimerSensor(SoTimerQueueSensor * s);
void removeDelaySensor(SoDelayQueueSensor * s);
void removeTimerSensor(SoTimerQueueSensor * s);
void setChangedCallback(void (*sensorQueueChangedCB)(void *), void * data);
void rescheduleTimer(SoTimerSensor * s);
void removeRescheduledTimer(SoTimerQueueSensor * s);
void processDelayQueue(SbBool isidle);
void processImmediateQueue(void);
void processTimerQueue(void);
SbBool isDelaySensorPending(void);
SbBool isTimerSensorPending(SbTime & tm);
void setDelaySensorTimeout(const SbTime & t);
const SbTime & getDelaySensorTimeout(void);
int doSelect(int nfds, void * readfds, void * writefds,
void * exceptfds, struct timeval * userTimeOut);
private:
void notifyChanged(void);
int mergeTimerQueues(void);
int mergeDelayQueues(void);
class SoSensorManagerP * pimpl;
friend class SoSensorManagerP;
};
#endif // !COIN_SOSENSORMANAGER_H
SbTime
The SbTime class instances represents time values.
Definition SbTime.h:50
SoDelayQueueSensor
The SoDelayQueueSensor class is the abstract base class for priority scheduled sensors.
Definition SoDelayQueueSensor.h:40
SoSensorManager::setDelaySensorTimeout
void setDelaySensorTimeout(const SbTime &t)
Definition SoSensorManager.cpp:805
SoSensorManager::removeDelaySensor
void removeDelaySensor(SoDelayQueueSensor *s)
Definition SoSensorManager.cpp:387
SoSensorManager::removeRescheduledTimer
void removeRescheduledTimer(SoTimerQueueSensor *s)
Definition SoSensorManager.cpp:736
SoSensorManager::processImmediateQueue
void processImmediateQueue(void)
Definition SoSensorManager.cpp:655
SoSensorManager::isDelaySensorPending
SbBool isDelaySensorPending(void)
Definition SoSensorManager.cpp:757
SoSensorManager::getDelaySensorTimeout
const SbTime & getDelaySensorTimeout(void)
Definition SoSensorManager.cpp:834
SoSensorManager::processTimerQueue
void processTimerQueue(void)
Definition SoSensorManager.cpp:449
SoSensorManager::doSelect
int doSelect(int nfds, void *readfds, void *writefds, void *exceptfds, struct timeval *userTimeOut)
Definition SoSensorManager.cpp:884
SoSensorManager::setChangedCallback
void setChangedCallback(void(*sensorQueueChangedCB)(void *), void *data)
Definition SoSensorManager.cpp:849
SoSensorManager::insertDelaySensor
void insertDelaySensor(SoDelayQueueSensor *s)
Definition SoSensorManager.cpp:290
SoSensorManager::rescheduleTimer
void rescheduleTimer(SoTimerSensor *s)
Definition SoSensorManager.cpp:723
SoSensorManager::insertTimerSensor
void insertTimerSensor(SoTimerQueueSensor *s)
Definition SoSensorManager.cpp:344
SoSensorManager::processDelayQueue
void processDelayQueue(SbBool isidle)
Definition SoSensorManager.cpp:545
SoSensorManager::SoSensorManager
SoSensorManager(void)
Definition SoSensorManager.cpp:252
SoSensorManager::removeTimerSensor
void removeTimerSensor(SoTimerQueueSensor *s)
Definition SoSensorManager.cpp:425
SoSensorManager::isTimerSensorPending
SbBool isTimerSensorPending(SbTime &tm)
Definition SoSensorManager.cpp:773
SoTimerQueueSensor
The SoTimerQueueSensor class is the abstract base class for sensors triggering on certain timer event...
Definition SoTimerQueueSensor.h:39
SoTimerSensor
The SoTimerSensor class is a sensor which will trigger at given intervals.
Definition SoTimerSensor.h:38