nidas  v1.2-1520
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
nidas::core::SensorHandler Class Reference

SensorHandler implements a DSMSensor event loop. More...

#include <SensorHandler.h>

Inheritance diagram for nidas::core::SensorHandler:
Inheritance graph
[legend]

Classes

class  NotifyPipe
 
class  PolledDSMSensor
 

Public Types

enum  runStatus { RUN_CANCELED = -1, RUN_OK = 0, NOT_RUNNING = 1, RUN_EXCEPTION = 2 }
 Values that can be returned by run method. More...
 
enum  SchedPolicy { NU_THREAD_OTHER =SCHED_OTHER, NU_THREAD_FIFO =SCHED_FIFO, NU_THREAD_RR =SCHED_RR }
 

Public Member Functions

 SensorHandler (unsigned short rserialPort=0)
 Constructor. More...
 
 ~SensorHandler ()
 Close any remaining sensors. More...
 
void signalHandler (int sig, siginfo_t *)
 Override default implementation of Thread::signalHandler(). More...
 
void addSensor (DSMSensor *sensor)
 Add an unopened sensor to the SensorHandler. More...
 
void closeSensor (DSMSensor *sensor)
 Request that SensorHandler close the sensor. More...
 
void sensorIsOpen (DSMSensor *sensor) throw ()
 After SensorOpener has opened the sensor, it will notify SensorHandler via this method that the sensor is open. More...
 
void checkSensors (dsm_time_t)
 Check on each sensor. More...
 
void setSensorStatsInterval (int val)
 Set the sensor statistics calculation period. More...
 
int getSensorStatsInterval () const
 Get the sensor check period. More...
 
void handleRemoteSerial (int fd, DSMSensor *sensor) throw (nidas::util::IOException)
 
int run () throw (nidas::util::Exception)
 Thread function. More...
 
std::list< DSMSensor * > getAllSensors () const
 
std::list< DSMSensor * > getOpenedSensors () const
 
void interrupt ()
 Interrupt polling. More...
 
int join () throw (nidas::util::Exception)
 Join this thread and join the SensorOpener. More...
 
int getEpollFd () const
 
void incrementFullBufferReads (const DSMSensor *sensor)
 Called by a DSMSensor to indicate that a read did not consume all available data. More...
 
void updateTimeouts ()
 Tell the SensorHandler that one or more sensor timeouts have changed. More...
 
virtual void start () throw (Exception)
 Start the thread running, meaning execute the run method in a separate thread. More...
 
virtual void kill (int sig) throw (Exception)
 Send a signal to this thread. More...
 
virtual void cancel () throw (Exception)
 Cancel this thread. More...
 
virtual bool isInterrupted () const
 Return true when this thread has been interrupted. More...
 
virtual bool isRunning () const
 Is this thread running? More...
 
virtual bool isJoined () const
 Has this thread been joined? More...
 
virtual bool isDetached () const
 Is this a detached thread. More...
 
bool isCancelEnabled () const
 Return true if the cancel state of this thread is PTHREAD_CANCEL_ENABLE. More...
 
bool isCancelDeferred () const
 Return true if the cancel type of this thread is PTHREAD_CANCEL_DEFERRED. More...
 
const std::string & getName () const throw ()
 Return the name of this thread. More...
 
const std::string & getFullName () throw ()
 Return a name with a bunch of descriptive fields, specifying whether it is detached, the real-time priority, etc. More...
 
bool setRealTimeRoundRobinPriority (int val) throw (Exception)
 
bool setRealTimeFIFOPriority (int val) throw (Exception)
 
bool setNonRealTimePriority () throw (Exception)
 
void setThreadScheduler (enum SchedPolicy policy, int priority) throw (Exception)
 
void blockSignal (int)
 Block a signal in this thread. More...
 
void unblockSignal (int)
 Install a signal handler and unblock the signal. More...
 

Static Public Member Functions

static ThreadcurrentThread ()
 Return the thread object for the current thread. More...
 
static pthread_t currentThreadId ()
 
static ThreadlookupThread (pthread_t id)
 
static const std::string & currentName ()
 Convenience routine to return the name for the current thread, or a string indicating that the name of the thread is unknown. More...
 
static std::string getPolicyString (int policy)
 Convenience function to return a string for the given scheduler policy: "Non-RT", "RT:FIFO", "RT:RR" or "RT:Unknown". More...
 
static int test (int argc, char **argv)
 a test method. More...
 

Protected Member Functions

void setCancelEnabled (bool val)
 Set the cancel state for this thread - false means cancel requests are ignored. More...
 
void setCancelDeferred (bool val)
 Set the cancel type for this thread. More...
 
pthread_t getId () const
 
void testCancel () const
 Check if we have been cancelled. More...
 
virtual bool amInterrupted () const
 Call testCancel, and return true when this thread has been interrupted. More...
 

Private Member Functions

void add (DSMSensor *sensor) throw ()
 Internal private method to create a PolledDSMSensor from a DSMSensor and add it to the list of currently active sensors. More...
 
void remove (PolledDSMSensor *sensor) throw ()
 Internal private method to close the PolledDSMSensor. More...
 
void scheduleClose (PolledDSMSensor *) throw ()
 Schedule this PolledDSMSensor to be closed when convenient. More...
 
void scheduleReopen (PolledDSMSensor *) throw ()
 Schedule this PolledDSMSensor to be closed and reopened. More...
 
void add (RemoteSerialConnection *) throw ()
 Internal private method to add a remote serial connection to a sensor. More...
 
void remove (RemoteSerialConnection *) throw ()
 
void scheduleAdd (RemoteSerialConnection *) throw ()
 Schedule this remote serial connection to be closed when convenient. More...
 
void scheduleClose (RemoteSerialConnection *) throw ()
 
void handlePollingChange ()
 Called when something has changed in our collection of sensors. More...
 
void calcStatistics (dsm_time_t)
 
void setupTimeouts (int sensorCheckIntervalMsecs)
 
void checkTimeouts (dsm_time_t)
 
 SensorHandler (const SensorHandler &)
 No copy. More...
 
SensorHandleroperator= (const SensorHandler &)
 No assignment. More...
 

Private Attributes

std::list< DSMSensor * > _allSensors
 The collection of DSMSensors to be handled. More...
 
nidas::util::Mutex _pollingMutex
 
bool _pollingChanged
 A change in the polling file descriptors needs to be handled. More...
 
std::list< DSMSensor * > _openedSensors
 Collection of DSMSensors which have been opened. More...
 
std::list< PolledDSMSensor * > _polledSensors
 Those DSMSensors currently being polled. More...
 
std::list< DSMSensor * > _newOpenedSensors
 Newly opened DSMSensors, which are to be added to the list of file descriptors to be polled. More...
 
std::set< PolledDSMSensor * > _pendingSensorClosures
 Sensors to be closed, probably due to a read error or a timeout. More...
 
std::set< PolledDSMSensor * > _pendingSensorReopens
 Sensors to be closed and then reopened. More...
 
unsigned short _remoteSerialSocketPort
 
RemoteSerialListener_rserial
 
std::list
< RemoteSerialConnection * > 
_newRserials
 Newly opened RemoteSerialConnections, which are to be added to the list of file descriptors to be polled. More...
 
std::set
< RemoteSerialConnection * > 
_pendingRserialClosures
 RemoteSerialConnections to be closed, probably because the socket connection closed. More...
 
std::list
< RemoteSerialConnection * > 
_activeRserialConns
 
int _epollfd
 epoll file descriptor. More...
 
struct epoll_event * _events
 
int _nevents
 
NotifyPipe_notifyPipe
 
dsm_time_t _sensorCheckTime
 
dsm_time_t _sensorStatsTime
 
int _sensorCheckIntervalMsecs
 Interval for checking for timeouts on each sensor, in milliseconds. More...
 
unsigned int _sensorCheckIntervalUsecs
 Same as _sensorCheckIntervalMsecs, but in microseconds. More...
 
unsigned int _sensorStatsInterval
 Interval for calculcating through-put statistics on each sensor, in microseconds. More...
 
SensorOpener _opener
 
std::map< const DSMSensor
*, unsigned int > 
_fullBufferReads
 For each sensor, number of times that the input buffer was filled in a read, i.e. More...
 
bool _acceptingOpens
 

Friends

class RemoteSerialConnection
 
class RemoteSerialListener
 

Detailed Description

SensorHandler implements a DSMSensor event loop.

It uses one of the available system calls, depending on the value of POLLING_METHOD, to check for events on the file descriptors of one or more PolledDSMSensors and RemoteSerial sockets.

The handlePollEvents() method is called on each active file descriptor. The polling loop is implemented in the Thread::run method of the SensorHandler.

This code has supported legacy systems which did not have the epoll() API, and used select/pselect or poll/ppoll instead. So, this code supports all the polling APIs, and one is selected using POLLING_METHOD. As of 2017 all known systems support epoll(), so the old select/poll code could be removed.

When an incoming socket connection is accepted on RemoteSerialListener, a RemoteSerialConnection is established, which first requests the name of a DSMSensor on the connected socket. If that sensor is found then data are then passed back and forth between the socket and the DSMSensor. This data path is separate from the normal Sample data path. It allows remote, direct control of serial sensors.

Member Enumeration Documentation

Values that can be returned by run method.

User can define other values greater than RUN_EXCEPTION. These values are then returned by int join(). Note that PTHREAD_CANCELLED is -1

Enumerator
RUN_CANCELED 
RUN_OK 
NOT_RUNNING 
RUN_EXCEPTION 
Enumerator
NU_THREAD_OTHER 
NU_THREAD_FIFO 
NU_THREAD_RR 

Constructor & Destructor Documentation

SensorHandler::SensorHandler ( unsigned short  rserialPort = 0)

Constructor.

Parameters
rserialPortTCP socket port to listen for incoming requests to the rserial service. 0=don't listen.

References _sensorStatsInterval, _sensorStatsTime, nidas::util::Thread::blockSignal(), nidas::util::getSystemTime(), MSECS_PER_SEC, N_POLLERR, N_POLLHUP, N_POLLIN, N_POLLRDHUP, setSensorStatsInterval(), and nidas::util::timeCeiling().

SensorHandler::~SensorHandler ( )

Close any remaining sensors.

Before this is called the run method should be finished.

References _allSensors, _epollfd, _events, _notifyPipe, _polledSensors, _rserial, nidas::core::SensorHandler::PolledDSMSensor::close(), and nidas::core::DSMSensor::setDSMConfig().

nidas::core::SensorHandler::SensorHandler ( const SensorHandler )
private

No copy.

Member Function Documentation

void SensorHandler::add ( DSMSensor sensor)
throw (
)
private

Internal private method to create a PolledDSMSensor from a DSMSensor and add it to the list of currently active sensors.

References _openedSensors, _polledSensors, _pollingMutex, nidas::util::Mutex::lock(), PLOG, nidas::util::Mutex::unlock(), and nidas::util::Exception::what().

Referenced by handlePollingChange().

void SensorHandler::add ( RemoteSerialConnection conn)
throw (
)
private
void SensorHandler::addSensor ( DSMSensor sensor)
bool Runnable::amInterrupted ( ) const
protectedvirtualinherited

Call testCancel, and return true when this thread has been interrupted.

This is protected because it should only called within the run method of the thread.

Referenced by nidas::core::SampleOutputRequestThread::run(), nidas::core::Looper::run(), nidas::dynld::isff::GOESOutput::run(), nidas::core::DSMServerStat::run(), and nidas::util::Thread::test().

void Thread::blockSignal ( int  sig)
inherited
void SensorHandler::calcStatistics ( dsm_time_t  tnow)
private
void Thread::cancel ( )
throw (Exception
)
virtualinherited
void nidas::core::SensorHandler::checkSensors ( dsm_time_t  )

Check on each sensor.

Currently this means checking whether a timeout has occured and calculating statistics on the data received from the sensor.

void SensorHandler::checkTimeouts ( dsm_time_t  tnow)
private
void nidas::core::SensorHandler::closeSensor ( DSMSensor sensor)

Request that SensorHandler close the sensor.

static const std::string& nidas::util::Thread::currentName ( )
inlinestaticinherited

Convenience routine to return the name for the current thread, or a string indicating that the name of the thread is unknown.

References nidas::util::Thread::currentThread(), nidas::util::Thread::getName(), and nidas::util::Thread::unknownName.

Referenced by nidas::util::Logger::msg_locked().

Thread * Thread::currentThread ( )
staticinherited

Return the thread object for the current thread.

Returns null if not found.

Referenced by nidas::util::Thread::blockSignal(), nidas::util::Thread::currentName(), and nidas::util::Thread::unblockSignal().

pthread_t Thread::currentThreadId ( )
staticinherited
list< DSMSensor * > SensorHandler::getAllSensors ( ) const

References _allSensors, and _pollingMutex.

Referenced by calcStatistics().

int nidas::core::SensorHandler::getEpollFd ( ) const
inline
const std::string & Thread::getFullName ( )
throw (
)
inherited

Return a name with a bunch of descriptive fields, specifying whether it is detached, the real-time priority, etc.

References nidas::util::Thread::_fullname.

Referenced by nidas::util::Thread::pRun(), nidas::util::Thread::test(), nidas::util::Thread::thr_cleanup(), and nidas::util::Thread::thr_cleanup_delete().

pthread_t nidas::util::Thread::getId ( ) const
inlineprotectedinherited
const std::string & Thread::getName ( ) const
throw (
)
inherited
list< DSMSensor * > SensorHandler::getOpenedSensors ( ) const

References _openedSensors, and _pollingMutex.

string Thread::getPolicyString ( int  policy)
staticinherited

Convenience function to return a string for the given scheduler policy: "Non-RT", "RT:FIFO", "RT:RR" or "RT:Unknown".

References nidas::util::Thread::NU_THREAD_FIFO, nidas::util::Thread::NU_THREAD_OTHER, and nidas::util::Thread::NU_THREAD_RR.

Referenced by nidas::core::DSMSensor::getLooper(), and nidas::util::Thread::makeFullName().

int nidas::core::SensorHandler::getSensorStatsInterval ( ) const
inline

Get the sensor check period.

Returns
Period, in milliseconds.

References _sensorStatsInterval, and USECS_PER_MSEC.

void SensorHandler::handlePollingChange ( )
private
void nidas::core::SensorHandler::handleRemoteSerial ( int  fd,
DSMSensor sensor 
)
throw (nidas::util::IOException
)
void SensorHandler::incrementFullBufferReads ( const DSMSensor sensor)

Called by a DSMSensor to indicate that a read did not consume all available data.

References _fullBufferReads, nidas::core::DSMSensor::getName(), and ILOG.

void SensorHandler::interrupt ( )
virtual
bool Thread::isCancelDeferred ( ) const
inherited

Return true if the cancel type of this thread is PTHREAD_CANCEL_DEFERRED.

References nidas::util::Thread::_cancel_deferred.

bool Thread::isCancelEnabled ( ) const
inherited

Return true if the cancel state of this thread is PTHREAD_CANCEL_ENABLE.

References nidas::util::Thread::_cancel_enabled.

virtual bool nidas::util::Thread::isDetached ( ) const
inlinevirtualinherited

Is this a detached thread.

References nidas::util::Thread::_detached.

virtual bool nidas::util::Thread::isInterrupted ( ) const
inlinevirtualinherited
virtual bool nidas::util::Thread::isJoined ( ) const
inlinevirtualinherited
virtual bool nidas::util::Thread::isRunning ( ) const
inlinevirtualinherited
int SensorHandler::join ( )
throw (nidas::util::Exception
)
virtual
void Thread::kill ( int  sig)
throw (Exception
)
virtualinherited
Thread * Thread::lookupThread ( pthread_t  id)
staticinherited
SensorHandler& nidas::core::SensorHandler::operator= ( const SensorHandler )
private

No assignment.

void SensorHandler::remove ( PolledDSMSensor sensor)
throw (
)
private

Internal private method to close the PolledDSMSensor.

Remove it from the polling list, then delete it. The associated DSMSensor will be removed from _openedSensors.

References _openedSensors, _polledSensors, _pollingMutex, nidas::util::Mutex::lock(), PLOG, nidas::util::Mutex::unlock(), and nidas::util::Exception::what().

void SensorHandler::remove ( RemoteSerialConnection conn)
throw (
)
private
int SensorHandler::run ( )
throw (nidas::util::Exception
)
virtual
void SensorHandler::scheduleAdd ( RemoteSerialConnection conn)
throw (
)
private
void SensorHandler::scheduleClose ( PolledDSMSensor psensor)
throw (
)
private
void SensorHandler::scheduleClose ( RemoteSerialConnection conn)
throw (
)
private
void SensorHandler::scheduleReopen ( PolledDSMSensor psensor)
throw (
)
private
void SensorHandler::sensorIsOpen ( DSMSensor sensor)
throw (
)
void Thread::setCancelDeferred ( bool  val)
protectedinherited

Set the cancel type for this thread.

true means cancel requests are deferred until the next cancellation point. false means they occur instantly. This is protected, it should be called only from a thread's own run method. See the pthreads(7) man page for a list of the cancellation points.

Note: non-deferred canceling is difficult to get right. It has not been tested with this class, and is not recommended.

References nidas::util::Thread::_cancel_deferred.

void Thread::setCancelEnabled ( bool  val)
protectedinherited

Set the cancel state for this thread - false means cancel requests are ignored.

See pthread_setcancelstate. This is protected, it should be called only from a thread's own run method.

References nidas::util::Thread::_cancel_enabled.

bool Thread::setNonRealTimePriority ( )
throw (Exception
)
inherited
bool Thread::setRealTimeFIFOPriority ( int  val)
throw (Exception
)
inherited
bool Thread::setRealTimeRoundRobinPriority ( int  val)
throw (Exception
)
inherited
void nidas::core::SensorHandler::setSensorStatsInterval ( int  val)
inline

Set the sensor statistics calculation period.

Parameters
valPeriod, in milliseconds.

References _sensorStatsInterval, and USECS_PER_MSEC.

Referenced by SensorHandler().

void Thread::setThreadScheduler ( enum SchedPolicy  policy,
int  priority 
)
throw (Exception
)
inherited
void SensorHandler::setupTimeouts ( int  sensorCheckIntervalMsecs)
private
void SensorHandler::signalHandler ( int  sig,
siginfo_t *   
)
virtual

Override default implementation of Thread::signalHandler().

The default implementation sets the interrupted flag, which we don't want.

Reimplemented from nidas::util::Thread.

void Thread::start ( )
throw (Exception
)
virtualinherited
int Thread::test ( int  argc,
char **  argv 
)
staticinherited
void nidas::util::Runnable::testCancel ( ) const
inlineprotectedinherited

Check if we have been cancelled.

Calls pthread_testcancel. This is protected since it only checks the current thread - i.e. it must be called within the run method. Since it just calls pthread_testcancel, it is a cancellation point.

void Thread::unblockSignal ( int  sig)
inherited

Install a signal handler and unblock the signal.

The signal handler will log a message about the receipt of the signal at severity LOG_INFO using the nidas::util::Logger. Then, if the signal handler is being invoked from a registered Thread, the virtual method signalHandler() for that Thread will be called.

The signal handler is installed with the sigaction() system call, and will be the action for the given signal in all threads, including the main() thread. If other threads do not wish to take action on a given signal, they should call blockSignal(sig). Or they can define their own signalHandler() method.

After installing the signal handler, the signal is added to those that are unblocked for the thread, or if the Thread is not yet running, the signal will be unblocked in the thread once it runs.

As with blockSignal(), this method is typically called on this Thread before it has started. If this Thread has started, then the signal will only be unblocked if the method is called from this Thread, i.e. from its own run() method.

To install a signal handler, and then block the signal so that it is held as pending until it is later unblocked, typically with pselect(), or sigwaitinfo(), do:

void Thread::run()
{
// get the existing signal mask
sigset_t sigmask;
pthread_sigmask(SIG_BLOCK,NULL,&sigmask);
// remove SIGUSR1 from the mask passed to pselect
sigdelset(&sigmask,SIGUSR1);
for (;;) {
pselect(nfd,&readfds,0,0,0,&sigmask);
...
}
}
...
thread.unblockSignal(SIGUSR1);
thread.blockSignal(SIGUSR1);
thread.start();
...
try {
if (thread.isRunning()) {
thread.kill(SIGUSR1);
thread.join()
}
}

References nidas::util::Thread::_blockedSignals, nidas::util::Thread::_unblockedSignals, nidas::util::Thread::currentThread(), nidas::util::Thread::isRunning(), and nidas::util::Thread::thr_add_sig().

Referenced by nidas::core::DerivedDataReader::DerivedDataReader(), nidas::core::FsMountWorkerThread::FsMountWorkerThread(), nidas::core::StatusListener::StatusListener(), nidas::core::StatusThread::StatusThread(), nidas::dynld::XMLConfigService::Worker::Worker(), nidas::core::XmlRpcThread::XmlRpcThread(), and nidas::dynld::UDPSampleOutput::XMLSocketListener::XMLSocketListener().

void nidas::core::SensorHandler::updateTimeouts ( )
inline

Tell the SensorHandler that one or more sensor timeouts have changed.

References _pollingChanged.

Referenced by nidas::core::RemoteSerialConnection::close().

Friends And Related Function Documentation

friend class RemoteSerialConnection
friend
friend class RemoteSerialListener
friend

Referenced by run().

Member Data Documentation

bool nidas::core::SensorHandler::_acceptingOpens
private
std::list<RemoteSerialConnection*> nidas::core::SensorHandler::_activeRserialConns
private

Referenced by add(), handlePollingChange(), remove(), and run().

std::list<DSMSensor*> nidas::core::SensorHandler::_allSensors
private

The collection of DSMSensors to be handled.

Referenced by add(), addSensor(), getAllSensors(), and ~SensorHandler().

int nidas::core::SensorHandler::_epollfd
private

epoll file descriptor.

Referenced by getEpollFd(), run(), and ~SensorHandler().

struct epoll_event* nidas::core::SensorHandler::_events
private
std::map<const DSMSensor*,unsigned int> nidas::core::SensorHandler::_fullBufferReads
private

For each sensor, number of times that the input buffer was filled in a read, i.e.

the read did not consume all the data available.

Referenced by incrementFullBufferReads().

int nidas::core::SensorHandler::_nevents
private

Referenced by handlePollingChange(), and run().

std::list<DSMSensor*> nidas::core::SensorHandler::_newOpenedSensors
private

Newly opened DSMSensors, which are to be added to the list of file descriptors to be polled.

Referenced by handlePollingChange(), run(), and sensorIsOpen().

std::list<RemoteSerialConnection*> nidas::core::SensorHandler::_newRserials
private

Newly opened RemoteSerialConnections, which are to be added to the list of file descriptors to be polled.

Referenced by handlePollingChange(), and scheduleAdd().

NotifyPipe* nidas::core::SensorHandler::_notifyPipe
private
std::list<DSMSensor*> nidas::core::SensorHandler::_openedSensors
private

Collection of DSMSensors which have been opened.

Referenced by add(), getOpenedSensors(), and remove().

SensorOpener nidas::core::SensorHandler::_opener
private
std::set<RemoteSerialConnection*> nidas::core::SensorHandler::_pendingRserialClosures
private

RemoteSerialConnections to be closed, probably because the socket connection closed.

Referenced by handlePollingChange(), run(), and scheduleClose().

std::set<PolledDSMSensor*> nidas::core::SensorHandler::_pendingSensorClosures
private

Sensors to be closed, probably due to a read error or a timeout.

Defined as a set to avoid bugs where a sensor might be added twice.

Referenced by handlePollingChange(), run(), and scheduleClose().

std::set<PolledDSMSensor*> nidas::core::SensorHandler::_pendingSensorReopens
private

Sensors to be closed and then reopened.

Also probably due to a read error or a timeout.

Referenced by handlePollingChange(), and scheduleReopen().

std::list<PolledDSMSensor*> nidas::core::SensorHandler::_polledSensors
private

Those DSMSensors currently being polled.

Referenced by add(), checkTimeouts(), handlePollingChange(), remove(), run(), setupTimeouts(), and ~SensorHandler().

bool nidas::core::SensorHandler::_pollingChanged
private

A change in the polling file descriptors needs to be handled.

Referenced by handlePollingChange(), run(), scheduleAdd(), scheduleClose(), scheduleReopen(), sensorIsOpen(), and updateTimeouts().

nidas::util::Mutex nidas::core::SensorHandler::_pollingMutex
mutableprivate
unsigned short nidas::core::SensorHandler::_remoteSerialSocketPort
private

Referenced by run().

RemoteSerialListener* nidas::core::SensorHandler::_rserial
private
int nidas::core::SensorHandler::_sensorCheckIntervalMsecs
private

Interval for checking for timeouts on each sensor, in milliseconds.

Will be -1 if no sensors have a timeout.

Referenced by handlePollingChange(), and run().

unsigned int nidas::core::SensorHandler::_sensorCheckIntervalUsecs
private

Same as _sensorCheckIntervalMsecs, but in microseconds.

Referenced by checkTimeouts(), and handlePollingChange().

dsm_time_t nidas::core::SensorHandler::_sensorCheckTime
private
unsigned int nidas::core::SensorHandler::_sensorStatsInterval
private

Interval for calculcating through-put statistics on each sensor, in microseconds.

Referenced by calcStatistics(), getSensorStatsInterval(), SensorHandler(), and setSensorStatsInterval().

dsm_time_t nidas::core::SensorHandler::_sensorStatsTime
private

Referenced by calcStatistics(), run(), and SensorHandler().


The documentation for this class was generated from the following files: