27 #ifndef NIDAS_CORE_DSMENGINE_H
28 #define NIDAS_CORE_DSMENGINE_H
40 namespace nidas {
namespace core {
69 static int main(
int argc,
char** argv)
throw();
165 void initialize(xercesc::DOMDocument* projectDoc)
172 void openSensors() throw(nidas::util::IOException);
177 nidas::util::InvalidParameterException);
Definition: DSMEngine.h:135
Interface for an object that requests connections SampleOutputs.
Definition: ConnectionRequester.h:42
void interrupt()
Definition: DSMEngine.cc:458
void joinDataThreads()
Definition: DSMEngine.cc:469
enum command _command
Definition: DSMEngine.h:211
void killXmlRpcThread()
Definition: DSMEngine.cc:647
bool quitCommand(enum command command)
Definition: DSMEngine.h:137
static DSMEngine * getInstance()
Get a pointer to the singleton instance of DSMEngine created by main().
Definition: DSMEngine.h:75
void registerSensorWithXmlRpc(const std::string &devname, DSMSensor *)
Sensors register with the DSMEngineIntf XmlRpcThread if they have a executeXmlRpc() method which can ...
Definition: DSMEngine.cc:664
static int main(int argc, char **argv)
Entry point to run a DSMEngine process from a command line.
Definition: DSMEngine.cc:141
void deleteDataThreads()
Definition: DSMEngine.cc:534
enum nidas::core::DSMEngine::run_states _runState
SensorHandler implements a DSMSensor event loop.
Definition: SensorHandler.h:87
DSMEngineIntf * _xmlrpcThread
This thread provides XML-based Remote Procedure calls.
Definition: DSMEngine.h:241
void disconnect(SampleInput *)
DSMEngine does not receive SampleInputs, so these will die with an assert.
Definition: DSMEngine.h:205
void start()
Starts the main loop (for the XMLRPC call).
Definition: DSMEngine.cc:550
Definition: DSMEngine.h:209
void initLogger()
Initialize the Logger.
Definition: DSMEngine.cc:296
Definition: DSMEngine.h:135
Interface of an output stream of samples.
Definition: SampleOutput.h:47
Class that should include all that is configurable about a DSM.
Definition: DSMConfig.h:55
void openSensors()
Definition: DSMEngine.cc:690
void waitForSignal(int secs)
Unblock and wait for signals of interest.
Definition: DSMEngine.cc:600
A IP version 4 socket address, containing a host address, and a port number.
Definition: Inet4SocketAddress.h:41
void shutdown()
Quits the main loop, and spawns a "halt" shell command.
Definition: DSMEngine.cc:575
Definition: DSMEngine.h:135
void startXmlRpcThread()
Definition: DSMEngine.cc:638
int initProcess()
Initialize various process parameters, uid, etc.
Definition: DSMEngine.cc:301
void usage()
Print runstring usage to stderr.
Definition: DSMEngine.cc:280
DSMEngineStat * _statusThread
A thread that generates streaming XML time and status.
Definition: DSMEngine.h:238
DSMEngine()
Definition: DSMEngine.cc:83
DSMEngine & operator=(const DSMEngine &)
No assignment.
run_states
Definition: DSMEngine.h:209
void restart()
Restarts the main loop (for the XMLRPC call).
Definition: DSMEngine.cc:565
bool _externalControl
Definition: DSMEngine.h:207
nidas::util::Inet4SocketAddress _configSockAddr
Address to use when fishing for the XML configuration.
Definition: DSMEngine.h:225
void connectOutputs()
Definition: DSMEngine.cc:719
~DSMEngine()
Nuke it.
Definition: DSMEngine.cc:111
bool _syslogit
Whether to log messages on syslog (true) or stderr (false).
Definition: DSMEngine.h:217
std::string _configFile
Name of XML configuration file.
Definition: DSMEngine.h:220
const DSMConfig * getDSMConfig() const
Definition: DSMEngine.h:122
int run()
main loop
Definition: DSMEngine.cc:314
Definition: DSMEngine.h:209
void disconnectProcessors()
Definition: DSMEngine.cc:846
void stop()
Stops the main loop (for the XMLRPC call).
Definition: DSMEngine.cc:559
void quit()
Quit the main loop.
Definition: DSMEngine.cc:570
void connect(SampleOutput *)
Implementation of SampleConnectionRequester connect methods.
Definition: DSMEngine.cc:738
A NidasAppArg is command-line argument which can be handled by NidasApp.
Definition: NidasApp.h:73
Definition: DSMEngine.h:209
void setupSignals()
Create a signal mask, and block those masked signals.
Definition: DSMEngine.cc:587
Application for running the NIDAS data acquistion process.
Definition: DSMEngine.h:54
SamplePipeline * _pipeline
Definition: DSMEngine.h:233
DSMSensor provides the basic support for reading, processing and distributing samples from a sensor a...
Definition: DSMSensor.h:87
static DSMEngine * _instance
Definition: DSMEngine.h:146
int _logLevel
Definition: DSMEngine.h:250
Definition: DSMEngine.h:135
int parseRunstring(int argc, char **argv)
Parse the runstring parameters.
Definition: DSMEngine.cc:212
NidasApp handles common options for NIDAS applications.
Definition: NidasApp.h:572
NidasAppArg DisableAutoConfig
Definition: DSMEngine.h:259
NidasAppArg ExternalControl
Definition: DSMEngine.h:258
Definition: DSMEngine.h:135
enum command getCommand() const
Definition: DSMEngine.h:142
std::set< SampleOutput * > _outputSet
Connected SampleOutputs.
Definition: DSMEngine.h:246
Thread which provides status in XML form from a dsm on a datagram socket, to be read by the status_li...
Definition: StatusThread.h:112
nidas::util::Mutex _outputMutex
Definition: DSMEngine.h:248
Project * _project
Definition: DSMEngine.h:227
void disconnect(SampleOutput *)
How SampleOutputs notify their SampleConnectionRequester that they wish to be closed, likely do to an IOException.
Definition: DSMEngine.cc:755
NidasApp _app
Definition: DSMEngine.h:256
pthread_t _myThreadId
Definition: DSMEngine.h:254
SensorHandler * _selector
Definition: DSMEngine.h:231
SamplePipeline sorts samples that are coming from one or more inputs.
Definition: SamplePipeline.h:79
bool _disableAutoconfig
Definition: DSMEngine.h:208
void reboot()
Quits the main loop, and spawns a "reboot" shell command.
Definition: DSMEngine.cc:581
const SensorHandler * getSensorHandler() const
Definition: DSMEngine.h:124
Definition: DSMEngine.h:135
A thread that provides XML-based Remote Procedure Calls to web interfaces from the DSMEngine...
Definition: DSMEngineIntf.h:44
void closeOutputs()
Definition: DSMEngine.cc:784
void initialize(xercesc::DOMDocument *projectDoc)
Initialize the DSMEngine based on the parameters in the DOMDocument.
Definition: DSMEngine.cc:669
A C++ wrapper for a POSIX mutex.
Definition: ThreadSupport.h:154
DSMConfig * _dsmConfig
Definition: DSMEngine.h:229
sigset_t _signalMask
Definition: DSMEngine.h:252
command
Definition: DSMEngine.h:135
void connectProcessors()
Definition: DSMEngine.cc:826
Definition: InvalidParameterException.h:35