27#ifndef NIDAS_CORE_PROJECT_H
28#define NIDAS_CORE_PROJECT_H
43#define ACCESS_AS_SINGLETON
45namespace nidas {
namespace core {
77#ifdef ACCESS_AS_SINGLETON
128 std::list<DSMServer*>
findServers(
const std::string& hostname)
const;
177 const std::string& dsmName)
const;
265 toDOMParent(xercesc::DOMElement* parent,
bool complete)
const;
271 toDOMElement(xercesc::DOMElement* node,
bool complete)
const;
340#ifdef ACCESS_AS_SINGLETON
369 bool getTokenValue(
const std::string& token, std::string& value)
const;
386 mutable std::map<dsm_sample_id_t,const DSMConfig*>
_dsmById;
Interface of an object that can be instantiated from a DOM element, via the fromDOMElement method,...
Definition DOMable.h:51
A catalog of DSM DOMElements, implemented with std::map, containing dsm DOMElements,...
Definition DSMCatalog.h:42
Class for iterating over the DSMConfigs of a Project or Site.
Definition NidsIterators.h:125
Class that should include all that is configurable about a DSM.
Definition DSMConfig.h:55
DSMSensor provides the basic support for reading, processing and distributing samples from a sensor a...
Definition DSMSensor.h:88
Class for iterating over the DSMServers of a Project.
Definition NidsIterators.h:67
A provider of services to a DSM.
Definition DSMServer.h:50
Class for iterating over the DSMServices of a DSMServer.
Definition NidsIterators.h:92
A Dataset is a named collection of parameters, that are used in data processing.
Definition Datasets.h:48
Interface for a Dictionary class, which can return a string value for a string token name.
Definition Dictionary.h:38
std::string expandString(const std::string &input) const
Utility function that scans a string for tokens like ${XXXX}, or $XXX followed by any characters from...
Definition Dictionary.cc:34
Definition Parameter.h:47
Class for iterating over the Processors of a DSMServer or DSMConfig.
Definition NidsIterators.h:150
MyDictionary(const MyDictionary &x)
Definition Project.h:360
bool getTokenValue(const std::string &token, std::string &value) const
Definition Project.cc:979
MyDictionary & operator=(const MyDictionary &rhs)
Definition Project.h:361
MyDictionary(Project *project)
Definition Project.h:359
Project * _project
Definition Project.h:371
void addServer(DSMServer *srvr)
A Project has one or more DSMServers.
Definition Project.h:119
static Project * getInstance()
Project is a singleton.
Definition Project.cc:62
nidas::util::Mutex _sensorMapLock
Definition Project.h:388
xercesc::DOMElement * toDOMElement(xercesc::DOMElement *node, bool complete) const
Definition Project.cc:964
int getMinSiteNumber() const
Definition Project.h:114
std::list< Parameter * > _parameters
List of pointers to Parameters.
Definition Project.h:405
const Parameter * getParameter(const std::string &name) const
Definition Project.cc:586
std::string expandString(const std::string &input) const
Utility function to expand ${TOKEN} or $TOKEN fields in a string with their value from getTokenValue(...
Definition Project.h:280
SensorCatalog * _sensorCatalog
Definition Project.h:376
DSMServer * findServer(const nidas::util::Inet4Address &addr) const
Definition Project.cc:320
void setDSMCatalog(DSMCatalog *val)
Definition Project.h:211
void setSystemName(const std::string &val)
Definition Project.h:92
VariableIterator getVariableIterator() const
Definition Project.cc:214
DSMServiceIterator getDSMServiceIterator() const
Definition Project.cc:184
void removeAutoConfig(xercesc::DOMNode *node, bool bumpRecursion=false)
Scan the DOM and pull out any <autoconfig> tags, as well as change the autoconfig classes back to DSM...
Definition Project.cc:673
const DSMConfig * findDSM(const nidas::util::Inet4Address &addr) const
Find a DSM whose name corresponds to a given IP address.
Definition Project.cc:339
const std::list< DSMServer * > & getServers() const
Definition Project.h:121
const Dataset & getDataset() const
Definition Project.h:305
DSMConfigIterator getDSMConfigIterator() const
Definition Project.cc:199
SensorIterator getSensorIterator() const
Definition Project.cc:204
DSMServerIterator getDSMServerIterator() const
Definition Project.cc:179
bool getTokenValue(const std::string &token, std::string &value) const
Implement a lookup for tokens that I know about, like $PROJECT, and $SYSTEM.
Definition Project.h:290
std::string _flightName
Definition Project.h:355
Project(const Project &)
Copy not supported.
nidas::util::Mutex _lookupLock
Definition Project.h:384
int getMaxSiteNumber() const
Convenience function to return the maximum site number.
Definition Project.h:112
const std::string & getConfigName() const
Definition Project.h:99
dsm_sample_id_t getUniqueSampleId(unsigned int dsmid)
Get a temporary unique sample id for a given DSM id.
Definition Project.cc:561
std::list< nidas::core::FileSet * > findSampleOutputStreamFileSets() const
Find SampleOutputStreamFileSets of all DSMs.
Definition Project.cc:457
bool _disableAutoconfig
Definition Project.h:412
int _minSiteNumber
Definition Project.h:400
std::map< dsm_sample_id_t, DSMSensor * > _sensorById
Definition Project.h:390
void setServiceCatalog(ServiceCatalog *val)
Definition Project.h:214
SiteIterator getSiteIterator() const
Definition Project.cc:194
int _maxSiteNumber
Definition Project.h:398
void parseXMLConfigFile(const std::string &xmlfilepath)
Convenient method to fill this Project instance from the configuration in the XML file at xmlfilepath...
Definition Project.cc:119
std::map< std::string, Site * > _siteByName
Definition Project.h:394
void disableAutoconfig(bool disable)
When true, autoconfig elements in the config document are removed before realizing the Project with f...
Definition Project.h:315
ServiceCatalog * _serviceCatalog
Definition Project.h:380
std::list< DSMServer * > findServers(const std::string &hostname) const
Look for a server for this project that either has no name or whose name matches hostname.
Definition Project.cc:264
DSMCatalog * getDSMCatalog() const
Definition Project.h:212
ProcessorIterator getProcessorIterator() const
Definition Project.cc:189
Site * findSite(int stationNumber) const
Find a Site with the given station number.
Definition Project.cc:161
void setDataset(const Dataset &val)
Definition Project.h:300
xercesc::DOMElement * toDOMParent(xercesc::DOMElement *parent, bool complete) const
Definition Project.cc:953
const std::string & getFlightName() const
Definition Project.cc:130
const Dictionary & getDictionary() const
Definition Project.h:295
void setSensorCatalog(SensorCatalog *val)
Definition Project.h:208
std::map< dsm_sample_id_t, const DSMConfig * > _dsmById
Definition Project.h:386
std::string _sysname
Definition Project.h:346
static Project * _instance
Definition Project.h:341
const std::string & getSystemName() const
Definition Project.h:93
std::set< dsm_sample_id_t > _usedIds
Definition Project.h:396
Project()
Definition Project.cc:76
void addParameter(Parameter *val)
Add a parameter to this Project.
Definition Project.h:326
void setConfigName(const std::string &val)
Definition Project.h:98
const std::string & getConfigVersion() const
Definition Project.h:96
Project & operator=(const Project &)
Assignment not supported.
void addSite(Site *val)
Definition Project.cc:141
void setFlightName(const std::string &val)
Definition Project.h:101
std::list< Site * > _sites
Definition Project.h:374
const std::string & getName() const
Definition Project.h:90
static void destroyInstance()
Destory the singleton.
Definition Project.cc:69
std::list< nidas::core::FileSet * > findServerSampleOutputStreamFileSets() const
Call findServerSampleOutputStreamFileSets(name) passing the nodename returned by uname(2).
Definition Project.cc:521
std::string _configName
Name of XML file that this project was initialized from.
Definition Project.h:353
Dataset _dataset
The current dataset.
Definition Project.h:410
DSMSensor * findSensor(dsm_sample_id_t id) const
Definition Project.cc:533
virtual ~Project()
Definition Project.cc:90
ServiceCatalog * getServiceCatalog() const
Definition Project.h:215
const std::list< Site * > & getSites() const
Definition Project.h:107
nidas::core::Project::MyDictionary _dictionary
void setName(const std::string &val)
Definition Project.h:89
void fromDOMElement(const xercesc::DOMElement *)
Definition Project.cc:803
std::string _configVersion
Definition Project.h:348
std::map< int, Site * > _siteByStationNumber
Definition Project.h:392
SampleTagIterator getSampleTagIterator() const
Definition Project.cc:209
std::list< DSMServer * > _servers
Definition Project.h:382
DSMCatalog * _dsmCatalog
Definition Project.h:378
std::string _name
Definition Project.h:344
SensorCatalog * getSensorCatalog() const
Definition Project.h:209
void setConfigVersion(const std::string &val)
Definition Project.h:95
void initSensors()
Initialize all sensors for a Project.
Definition Project.cc:222
Class for iterating over the SampleTags of a Project, Site, DSMConfig, or a SampleSource.
Definition NidsIterators.h:218
Class describing a group of variables that are sampled and handled together.
Definition SampleTag.h:88
A catalog of sensor DOMElements, implemented with std::map, containing sensor DOMElements,...
Definition SensorCatalog.h:42
Class for iterating over the DSMSensors of a Project, Site, or DSMConfig.
Definition NidsIterators.h:186
A catalog of dsm DOMElements, implemented with std::map, containing dsm DOMElements,...
Definition ServiceCatalog.h:42
Class for iterating over the Sites of a Project, or the Sites served by a DSMServer.
Definition NidsIterators.h:46
A measurement site.
Definition Site.h:49
Class for iterating over the Variables of a Project, Site, DSMConfig, DSMSensor, or SampleTag.
Definition NidsIterators.h:287
Support for IP version 4 host address.
Definition Inet4Address.h:46
A C++ wrapper for a POSIX mutex.
Definition ThreadSupport.h:161
Sample * getSample(sampleType type, unsigned int len)
A convienence method for getting a sample of an enumerated type from a pool.
Definition Sample.cc:70
unsigned int dsm_sample_id_t
Definition Sample.h:64
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31