Configuration.h
См. документацию.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00024
00025 #ifndef Configuration_H_
00026 #define Configuration_H_
00027
00028
00029 #include <string>
00030 #include <ostream>
00031 #include "UniXML.h"
00032 #include "UniSetTypes.h"
00033 #include "ObjectIndex.h"
00034 #include "IORFile.h"
00035 #include "MessageInterface.h"
00036 #include "Debug.h"
00037
00038 class SystemGuard;
00039
00040
00041
00042
00043
00044
00045
00046 namespace UniSetTypes
00047 {
00053 class Configuration
00054 {
00055 public:
00056 virtual ~Configuration();
00057
00059 Configuration( int argc, const char* const* argv, const std::string xmlfile="" );
00060
00062 Configuration( int argc, const char* const* argv, ObjectIndex* oind, const std::string xmlfile="" );
00063
00065 Configuration( int argc, const char* const* argv,
00066 const std::string fileConf, UniSetTypes::ObjectInfo* objectsMap );
00067
00069 std::string getField(const std::string path);
00071 int getIntField(const std::string path);
00073 int getPIntField(const std::string path, int def);
00074
00075 xmlNode* findNode(xmlNode* node, const std::string searchnode, const std::string name = "" );
00076
00077
00078 xmlNode* getNode(const std::string& path);
00079
00080 std::string getProp(xmlNode*, const std::string name);
00081 int getIntProp(xmlNode*, const std::string name);
00082 int getPIntProp(xmlNode*, const std::string name, int def);
00083
00084 std::string getPropByNodeName(const std::string& nodename, const std::string& prop);
00085
00086 static std::ostream& help(std::ostream& os);
00087
00088 std::string getRootDir();
00089 inline int getArgc(){ return _argc; }
00090 inline const char* const* getArgv() const { return _argv; }
00091 inline ObjectId getTimerService() const { return localTimerService; }
00092 inline ObjectId getDBServer() const { return localDBServer; }
00093 inline ObjectId getInfoServer() const { return localInfoServer; }
00094 inline ObjectId getLocalNode() const { return localNode; }
00095 inline std::string getLocalNodeName() const { return localNodeName; }
00096 inline const std::string getNSName() const { return NSName; }
00097
00098
00099 inline std::string getRootSection() const { return secRoot; }
00100 inline std::string getSensorsSection() const { return secSensors; }
00101 inline std::string getObjectsSection() const { return secObjects; }
00102 inline std::string getControllersSection() const { return secControlles; }
00103 inline std::string getServicesSection() const { return secServices; }
00104
00105 xmlNode* getXMLSensorsSection();
00106 xmlNode* getXMLObjectsSection();
00107 xmlNode* getXMLControllersSection();
00108 xmlNode* getXMLServicesSection();
00109 xmlNode* getXMLNodesSection();
00110 xmlNode* getXMLObjectNode( UniSetTypes::ObjectId );
00111 UniversalIO::IOTypes getIOType( UniSetTypes::ObjectId );
00112 UniversalIO::IOTypes getIOType( const std::string name );
00113
00114
00115 inline unsigned int getCountOfNet() const { return countOfNet; }
00116 inline unsigned int getRepeatTimeout() const { return repeatTimeout; }
00117 inline unsigned int getRepeatCount() const { return repeatCount; }
00118
00119 UniSetTypes::ObjectId getSensorID( const std::string name );
00120 UniSetTypes::ObjectId getControllerID( const std::string name );
00121 UniSetTypes::ObjectId getObjectID( const std::string name );
00122 UniSetTypes::ObjectId getServiceID( const std::string name );
00123 UniSetTypes::ObjectId getNodeID( const std::string name, const std::string alias="" );
00124
00125 inline const std::string getConfFileName() const { return fileConfName; }
00126 inline std::string getImagesDir() const { return imagesDir; }
00127
00128 inline int getHeartBeatTime(){ return heartbeat_msec; }
00129
00130
00131 inline const std::string getConfDir() const { return confDir; }
00132 inline const std::string getDataDir() const { return dataDir; }
00133 inline const std::string getBinDir() const { return binDir; }
00134 inline const std::string getLogDir() const { return logDir; }
00135 inline const std::string getLockDir() const { return lockDir; }
00136 inline const std::string getDocDir() const { return docDir; }
00137
00138
00139 inline bool isLocalIOR(){ return localIOR; }
00140 inline bool isTransientIOR(){ return transientIOR; }
00141
00143 std::string getArgParam(const std::string name, const std::string defval="");
00145 int getArgInt(const std::string name, const std::string defval="");
00147 int getArgPInt(const std::string name, int defval);
00148 int getArgPInt(const std::string name, const std::string strdefval, int defval);
00149
00150 xmlNode* initDebug( DebugStream& deb, const std::string& nodename );
00151
00152 UniSetTypes::ListOfNode::const_iterator listNodesBegin()
00153 {
00154 return lnodes.begin();
00155 }
00156
00157 inline UniSetTypes::ListOfNode::const_iterator listNodesEnd()
00158 {
00159 return lnodes.end();
00160 }
00161
00163 MessageInterface* mi;
00164
00166 ObjectIndex* oind;
00167
00169 IORFile iorfile;
00170
00172 inline UniXML* getConfXML(){ return &unixml; }
00173
00174 CORBA::ORB_ptr getORB() { return CORBA::ORB::_duplicate(orb); }
00175 CORBA::PolicyList getPolicy() const { return policyList; }
00176
00177 protected:
00178 Configuration();
00179
00180 virtual void initConfiguration(int argc, const char* const* argv);
00181
00182 void createNodesList();
00183 virtual void initNode( UniSetTypes::NodeInfo& ninfo, UniXML_iterator& it);
00184
00185 void initRepSections();
00186 std::string getRepSectionName(const std::string sec, xmlNode* secnode=0 );
00187 void setConfFileName(const std::string fn="");
00188 void initParameters();
00189 void setLocalNode( std::string nodename );
00190
00191 std::string getPort(const std::string port="");
00192
00193 friend class ::SystemGuard;
00194
00195 std::string rootDir;
00196 UniXML unixml;
00197
00198 int _argc;
00199 const char* const* _argv;
00200 CORBA::ORB_var orb;
00201 CORBA::PolicyList policyList;
00202
00203 std::string NSName;
00204 unsigned int countOfNet;
00205 unsigned int repeatCount;
00208 unsigned int repeatTimeout;
00210 UniSetTypes::ListOfNode lnodes;
00211
00212
00213 std::string secRoot;
00214 std::string secSensors;
00215 std::string secObjects;
00216 std::string secControlles;
00217 std::string secServices;
00218
00219
00220 static xmlNode* xmlSensorsSec;
00221 static xmlNode* xmlObjectsSec;
00222 static xmlNode* xmlControllersSec;
00223 static xmlNode* xmlServicesSec;
00224 static xmlNode* xmlNodesSec;
00225
00226 ObjectId localTimerService;
00227 ObjectId localDBServer;
00228 ObjectId localInfoServer;
00229 ObjectId localNode;
00230
00231 std::string localNodeName;
00232 std::string fileConfName;
00233 std::string imagesDir;
00234
00235 std::string confDir;
00236 std::string dataDir;
00237 std::string binDir;
00238 std::string logDir;
00239 std::string docDir;
00240 std::string lockDir;
00241 bool localIOR;
00242 bool transientIOR;
00243
00244 int heartbeat_msec;
00245 };
00246
00248 extern Configuration* conf;
00249
00251 extern DebugStream unideb;
00252
00253
00254
00255
00256 void uniset_init( int argc, const char* const* argv, const std::string xmlfile="configure.xml" );
00257
00258
00259 }
00260
00261 #endif // Configuration_H_