diff --git a/src/MetadataExporter.cpp b/src/MetadataExporter.cpp index b64371500739fb1938f1d5f601c7a5831ac750ca..c646bf8a34e9582cad5a00d728edbd11fac4bad8 100644 --- a/src/MetadataExporter.cpp +++ b/src/MetadataExporter.cpp @@ -44,7 +44,6 @@ #include #include #include -#include //@todo: controllare #include @@ -211,7 +210,7 @@ void MetadataExporter::get_device_property() dev_prop.push_back(Tango::DbDatum("DatabasePort")); dev_prop.push_back(Tango::DbDatum("DatabaseUsername")); dev_prop.push_back(Tango::DbDatum("DatabasePassword")); - dev_prop.push_back(Tango::DbDatum("DatabaseConnectionNumber")); + dev_prop.push_back(Tango::DbDatum("DatabaseConnectionNumber")); dev_prop.push_back(Tango::DbDatum("ExportedTables")); dev_prop.push_back(Tango::DbDatum("AuthorisedUsers")); @@ -593,7 +592,7 @@ void MetadataExporter::importExportedTables(std::vector& exportedTa { std::size_t found; - if((found=exportedTables.at(i).find(' '))==std::string::npos) + if((found=exportedTables.at(i).find(' ')) == std::string::npos) { std::stringstream errorStream; errorStream << "ExportedTables property has invalid key at " @@ -604,7 +603,8 @@ void MetadataExporter::importExportedTables(std::vector& exportedTa std::string schema = exportedTables.at(i).substr(0, found); std::string table = exportedTables.at(i).substr(found+1, std::string::npos); - INFO_STREAM << "SCHEMA: " << schema << " TABLE: " << table << endl; + INFO_STREAM << "MetadataExporter::importExportedTables() schema " + << schema << " table " << table << endl; exportedTablesMap.insert(std::pair (schema, table)); } @@ -623,7 +623,7 @@ void MetadataExporter::importAuthorisedUsers(std::vector& authorise { std::size_t found; - if((found=authorisedUsers.at(i).find(' '))==std::string::npos) + if((found=authorisedUsers.at(i).find(' ')) == std::string::npos) { std::stringstream errorStream; errorStream << "AuthorisedUsers property has invalid key at " @@ -635,10 +635,12 @@ void MetadataExporter::importAuthorisedUsers(std::vector& authorise std::string password = authorisedUsers.at(i).substr(found+1, std::string::npos); #ifdef VERBOSE_DEBUG - INFO_STREAM << "USER: " << user << " PASSWORD: " << password << endl; + INFO_STREAM << "MetadataExporter::importAuthorisedUsers() user " + << user << " password " << password << endl; #endif - authorisedUsersMap.insert(std::pair(user, password)); + authorisedUsersMap.insert(std::pair(user, password)); } } @@ -659,7 +661,7 @@ void MetadataExporter::checkIfFileExists(std::string fileName) throw std::invalid_argument(errorStream.str()); } - DEBUG_STREAM << "FILE: " << fileName << " -> OK" << endl; + INFO_STREAM << "MetadataExporter::checkIfFileExists() " << fileName << endl; } /*----- PROTECTED REGION END -----*/ // MetadataExporter::namespace_ending diff --git a/src/MetadataExporter.h b/src/MetadataExporter.h index dc8261b893ed11ee044b5340b8382f609f37508a..fca15b0182ecc340ee17f80b28320f933743cf05 100644 --- a/src/MetadataExporter.h +++ b/src/MetadataExporter.h @@ -148,7 +148,7 @@ public: MetadataExporter(Tango::DeviceClass *cl,const char *s,const char *d); /** * The device object destructor. - */ + */ ~MetadataExporter() {delete_device();}; diff --git a/src/MetadataExporter.xmi b/src/MetadataExporter.xmi index 3d0350d3f1f18da2daaf2e7ba5ac9fefe8d9aaf0..41c3c6b6d1db2f7ff7f0341d37edd8868789be92 100644 --- a/src/MetadataExporter.xmi +++ b/src/MetadataExporter.xmi @@ -110,6 +110,8 @@ + ON + FAULT @@ -119,7 +121,18 @@ + OFF + FAULT + + + + + + + + + diff --git a/src/MetadataExporterClass.cpp b/src/MetadataExporterClass.cpp index 928a418df2d53cffc6c7cf365c3f8d8a41332e45..f633b588485c0f0b1c80fc1f5e597d69d8613a95 100644 --- a/src/MetadataExporterClass.cpp +++ b/src/MetadataExporterClass.cpp @@ -131,8 +131,8 @@ MetadataExporterClass *MetadataExporterClass::init(const char *name) catch (bad_alloc &) { throw; - } - } + } + } return _instance; } @@ -262,7 +262,7 @@ void MetadataExporterClass::get_class_property() cl_prop.push_back(Tango::DbDatum("DHTempFile")); cl_prop.push_back(Tango::DbDatum("ExportedTables")); cl_prop.push_back(Tango::DbDatum("AuthorisedUsers")); - + // Call database and extract values if (Tango::Util::instance()->_UseDb==true) get_db_class()->get_property(cl_prop); @@ -678,7 +678,7 @@ void MetadataExporterClass::write_class_property() header = "$HeadURL: "; start = header.length(); string strloc = src_path.substr(start, (end-start)); - + Tango::DbDatum svn_loc("svn_location"); svn_loc << strloc; data.push_back(svn_loc); @@ -687,13 +687,13 @@ void MetadataExporterClass::write_class_property() } // Get CVS or SVN revision tag - + // CVS tag string tagname(TagName); header = "$Name: "; start = header.length(); string endstr(" $"); - + end = tagname.find(endstr); if (end!=string::npos && end>start) { @@ -702,17 +702,17 @@ void MetadataExporterClass::write_class_property() cvs_tag << strtag; data.push_back(cvs_tag); } - + // SVN tag string svnpath(SvnPath); header = "$HeadURL: "; start = header.length(); - + end = svnpath.find(endstr); if (end!=string::npos && end>start) { string strloc = svnpath.substr(start, end-start); - + string tagstr ("/tags/"); start = strloc.find(tagstr); if ( start!=string::npos ) @@ -720,7 +720,7 @@ void MetadataExporterClass::write_class_property() start = start + tagstr.length(); end = strloc.find(filename); string strtag = strloc.substr(start, end-start-1); - + Tango::DbDatum svn_tag("svn_tag"); svn_tag << strtag; data.push_back(svn_tag); @@ -770,7 +770,7 @@ void MetadataExporterClass::device_factory(const Tango::DevVarStringArray *devli for (unsigned long i=0 ; ilength() ; i++) { cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl; - device_list.push_back(new MetadataExporter(this, (*devlist_ptr)[i])); + device_list.push_back(new MetadataExporter(this, (*devlist_ptr)[i])); } // Manage dynamic attributes if any @@ -868,7 +868,7 @@ void MetadataExporterClass::command_factory() * method : MetadataExporterClass::create_static_attribute_list * description : Create the a list of static attributes * - * @param att_list the ceated attribute list + * @param att_list the ceated attribute list */ //-------------------------------------------------------- void MetadataExporterClass::create_static_attribute_list(vector &att_list) @@ -902,10 +902,10 @@ void MetadataExporterClass::erase_dynamic_attributes(const Tango::DevVarStringAr Tango::Util *tg = Tango::Util::instance(); for (unsigned long i=0 ; ilength() ; i++) - { + { Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str()); MetadataExporter *dev = static_cast (dev_impl); - + vector &dev_att_list = dev->get_device_attr()->get_attribute_list(); vector::iterator ite_att; for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att) diff --git a/src/MetadataExporterStateMachine.cpp b/src/MetadataExporterStateMachine.cpp index 382f9431ffef76d87d03c2b2cd52c23aa5b8de4d..e611b63c07ac1911d2a0dde52ebf5df18e7c2911 100644 --- a/src/MetadataExporterStateMachine.cpp +++ b/src/MetadataExporterStateMachine.cpp @@ -41,6 +41,9 @@ //================================================================ // States | Description //================================================================ +// ON | Metadata exporter is in ON state (ready to incoming connections) +// OFF | Metadata exporter is in OFF state (not ready for incoming connections) +// FAULT | Metadata exporter is in FAULT state (an error occurred) namespace MetadataExporter_ns @@ -61,10 +64,15 @@ namespace MetadataExporter_ns //-------------------------------------------------------- bool MetadataExporter::is_On_allowed(TANGO_UNUSED(const CORBA::Any &any)) { - // Not any excluded states for On command. + // Compare device state with not allowed states. + if (get_state()==Tango::ON || + get_state()==Tango::FAULT) + { /*----- PROTECTED REGION ID(MetadataExporter::OnStateAllowed) ENABLED START -----*/ /*----- PROTECTED REGION END -----*/ // MetadataExporter::OnStateAllowed + return false; + } return true; } @@ -76,10 +84,15 @@ bool MetadataExporter::is_On_allowed(TANGO_UNUSED(const CORBA::Any &any)) //-------------------------------------------------------- bool MetadataExporter::is_Off_allowed(TANGO_UNUSED(const CORBA::Any &any)) { - // Not any excluded states for Off command. + // Compare device state with not allowed states. + if (get_state()==Tango::OFF || + get_state()==Tango::FAULT) + { /*----- PROTECTED REGION ID(MetadataExporter::OffStateAllowed) ENABLED START -----*/ /*----- PROTECTED REGION END -----*/ // MetadataExporter::OffStateAllowed + return false; + } return true; } diff --git a/src/Server.h b/src/Server.h index adad47cc0856b186586c059a8e4c12679fca6f10..0c98dc4e856ad20b9faefda668923fa962b6d463 100644 --- a/src/Server.h +++ b/src/Server.h @@ -81,7 +81,7 @@ protected: //Acceptor for incoming connection boost::shared_ptr m_acceptor_sp; - //Handler for all threads + //Thread group container shared pointer boost::shared_ptr m_threadGroup_sp; //Tango state property mutex