diff --git a/src/Client.cpp b/src/Client.cpp index 46ab55bda3b236d5d200a31cdb132f78ba8c166d..94969ef483703909bfc0de346b5fdaba67b8de5d 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -1,4 +1,5 @@ #include <Client.h> +#include <DataImporter.h> #include <boost/lexical_cast.hpp> #include <boost/bind.hpp> @@ -10,8 +11,8 @@ namespace DataImporter_ns //============================================================================== // Client::Client() //============================================================================== -Client::Client(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_sp) : - Tango::LogAdapter(deviceImpl_p), m_deviceImpl_p(deviceImpl_p), +Client::Client(DataImporter* dataImporter_p, Configuration::SP configuration_sp) : + Tango::LogAdapter(dataImporter_p), m_dataImporter_p(dataImporter_p), m_configuration_sp(configuration_sp), m_resolver(m_ioService), m_resetConnectionTimer(m_ioService), m_listsUpdateTimer(m_ioService) { @@ -19,7 +20,7 @@ Client::Client(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_ GOOGLE_PROTOBUF_VERIFY_VERSION; - m_dBManager_sp = DBManager::create(deviceImpl_p, configuration_sp); + m_dBManager_sp = DBManager::create(dataImporter_p, configuration_sp); m_state = Tango::OFF; m_status="Disconnected"; @@ -55,7 +56,7 @@ void Client::start() m_dBManager_sp->connectAll(); - m_protocolManager_sp = ProtocolManager::create(m_deviceImpl_p, + m_protocolManager_sp = ProtocolManager::create(m_dataImporter_p, m_configuration_sp, m_dBManager_sp); m_ioService.reset(); diff --git a/src/Client.h b/src/Client.h index f45abe8ca61f5b4624eb82496a0ca157270df5a6..9d9ba258e5fdfbc459ee7484414241965f4854c1 100644 --- a/src/Client.h +++ b/src/Client.h @@ -20,6 +20,8 @@ namespace DataImporter_ns { +class DataImporter; + class Client : public Tango::LogAdapter { public: @@ -32,7 +34,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor //------------------------------------------------------------------------------ - Client(Tango::DeviceImpl*, Configuration::SP); + Client(DataImporter*, Configuration::SP); virtual ~Client(); @@ -143,7 +145,7 @@ protected: // [Protected] Class variables //------------------------------------------------------------------------------ //Tango server class pointer - Tango::DeviceImpl* m_deviceImpl_p; + DataImporter* m_dataImporter_p; //Configuration shared pointer Configuration::SP m_configuration_sp; diff --git a/src/DataImporter.cpp b/src/DataImporter.cpp index 36fe2e5d799cfdbd95585b420a9023b06cd3a8af..d280a4522367950625e55d673dba5167c928a496 100644 --- a/src/DataImporter.cpp +++ b/src/DataImporter.cpp @@ -63,11 +63,14 @@ // Status | Inherited (no method) // On | on // Off | off +// ResetCounter | reset_counter //================================================================ //================================================================ -// Attributes managed is: +// Attributes managed are: //================================================================ +// RegularFileCounter | Tango::DevULong Scalar +// FailedFileCounter | Tango::DevULong Scalar //================================================================ namespace DataImporter_ns @@ -126,6 +129,8 @@ void DataImporter::delete_device() // Delete device allocated objects /*----- PROTECTED REGION END -----*/ // DataImporter::delete_device + delete[] attr_RegularFileCounter_read; + delete[] attr_FailedFileCounter_read; } //-------------------------------------------------------- @@ -148,6 +153,8 @@ void DataImporter::init_device() // Get the device properties from database get_device_property(); + attr_RegularFileCounter_read = new Tango::DevULong[1]; + attr_FailedFileCounter_read = new Tango::DevULong[1]; /*----- PROTECTED REGION ID(DataImporter::init_device) ENABLED START -----*/ @@ -608,7 +615,7 @@ void DataImporter::get_device_property() //-------------------------------------------------------- void DataImporter::always_executed_hook() { - INFO_STREAM << "DataImporter::always_executed_hook() " << device_name << endl; + DEBUG_STREAM << "DataImporter::always_executed_hook() " << device_name << endl; /*----- PROTECTED REGION ID(DataImporter::always_executed_hook) ENABLED START -----*/ if(get_state() != Tango::FAULT) @@ -640,6 +647,46 @@ void DataImporter::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list)) /*----- PROTECTED REGION END -----*/ // DataImporter::read_attr_hardware } +//-------------------------------------------------------- +/** + * Read attribute RegularFileCounter related method + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ +//-------------------------------------------------------- +void DataImporter::read_RegularFileCounter(Tango::Attribute &attr) +{ + DEBUG_STREAM << "DataImporter::read_RegularFileCounter(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(DataImporter::read_RegularFileCounter) ENABLED START -----*/ + + boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex); + + attr.set_value(attr_RegularFileCounter_read); + + /*----- PROTECTED REGION END -----*/ // DataImporter::read_RegularFileCounter +} +//-------------------------------------------------------- +/** + * Read attribute FailedFileCounter related method + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ +//-------------------------------------------------------- +void DataImporter::read_FailedFileCounter(Tango::Attribute &attr) +{ + DEBUG_STREAM << "DataImporter::read_FailedFileCounter(Tango::Attribute &attr) entering... " << endl; + /*----- PROTECTED REGION ID(DataImporter::read_FailedFileCounter) ENABLED START -----*/ + + boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex); + + attr.set_value(attr_FailedFileCounter_read); + + /*----- PROTECTED REGION END -----*/ // DataImporter::read_FailedFileCounter +} //-------------------------------------------------------- /** @@ -722,9 +769,68 @@ void DataImporter::off() /*----- PROTECTED REGION END -----*/ // DataImporter::off } +//-------------------------------------------------------- +/** + * Command ResetCounter related method + * Description: + * + */ +//-------------------------------------------------------- +void DataImporter::reset_counter() +{ + DEBUG_STREAM << "DataImporter::ResetCounter() - " << device_name << endl; + /*----- PROTECTED REGION ID(DataImporter::reset_counter) ENABLED START -----*/ + + boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex); + + *attr_RegularFileCounter_read = 0; + + boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex); + + *attr_FailedFileCounter_read = 0; + + /*----- PROTECTED REGION END -----*/ // DataImporter::reset_counter +} /*----- PROTECTED REGION ID(DataImporter::namespace_ending) ENABLED START -----*/ +//============================================================================== +// DataImporter::incrementRegularCounter() +//============================================================================== +void DataImporter::incrementRegularCounter() +{ + DEBUG_STREAM << "DataImporter::incrementRegularCounter() - " << device_name << endl; + + boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex); + + ++*attr_RegularFileCounter_read; +} + +//============================================================================== +// DataImporter::incrementFailedCounter() +//============================================================================== +void DataImporter::incrementFailedCounter() +{ + DEBUG_STREAM << "DataImporter::incrementFailedCounter() - " << device_name << endl; + + boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex); + + ++*attr_FailedFileCounter_read; +} + +//============================================================================== +// DataImporter::decrementFailedCounter() +//============================================================================== +void DataImporter::decrementFailedCounter() +{ + DEBUG_STREAM << "DataImporter::decrementFailedCounter() - " << device_name << endl; + + boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex); + + if(*attr_FailedFileCounter_read > 0) + --*attr_FailedFileCounter_read; +} + //============================================================================== // DataImporter::checkIfFileExists() //============================================================================== diff --git a/src/DataImporter.h b/src/DataImporter.h index 08ac019b26d5ae1e077910631431684a8935f6ea..73563c521840d77d52de3d3cea45d330c667eaf7 100644 --- a/src/DataImporter.h +++ b/src/DataImporter.h @@ -73,6 +73,12 @@ class DataImporter : public TANGO_BASE_CLASS //Client class shared pointer Client::SP m_client_sp; + //Regular file counter synchronization + boost::mutex m_regularCounterMutex; + + //Failed file counter synchronization + boost::mutex m_failedCounterMutex; + //Max port number allowed value for data import database static const unsigned int MAX_PORT_NUMBER = 65535; @@ -138,6 +144,10 @@ public: // AuxDatabaseFailedTable: File transfer auxiliary database failed transfer table string auxDatabaseFailedTable; +// Attribute data members +public: + Tango::DevULong *attr_RegularFileCounter_read; + Tango::DevULong *attr_FailedFileCounter_read; // Constructors and destructors public: @@ -199,6 +209,25 @@ public: //-------------------------------------------------------- virtual void read_attr_hardware(vector<long> &attr_list); +/** + * Attribute RegularFileCounter related methods + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ + virtual void read_RegularFileCounter(Tango::Attribute &attr); + virtual bool is_RegularFileCounter_allowed(Tango::AttReqType type); +/** + * Attribute FailedFileCounter related methods + * Description: + * + * Data type: Tango::DevULong + * Attr type: Scalar + */ + virtual void read_FailedFileCounter(Tango::Attribute &attr); + virtual bool is_FailedFileCounter_allowed(Tango::AttReqType type); + //-------------------------------------------------------- /** @@ -226,10 +255,28 @@ public: */ virtual void off(); virtual bool is_Off_allowed(const CORBA::Any &any); + /** + * Command ResetCounter related method + * Description: + * + */ + virtual void reset_counter(); + virtual bool is_ResetCounter_allowed(const CORBA::Any &any); /*----- PROTECTED REGION ID(DataImporter::Additional Method prototypes) ENABLED START -----*/ +//------------------------------------------------------------------------------ +// [Public] Counters methods +//------------------------------------------------------------------------------ + + virtual void incrementRegularCounter(); + + virtual void incrementFailedCounter(); + + virtual void decrementFailedCounter(); + +protected: //------------------------------------------------------------------------------ // [Protected] Utilities methods //------------------------------------------------------------------------------ diff --git a/src/DataImporter.xmi b/src/DataImporter.xmi index cac1f4322df4bc9910ba1faaf824e78fcc3802bb..496f8db25965936f9760b13404c334a1e47e9891 100644 --- a/src/DataImporter.xmi +++ b/src/DataImporter.xmi @@ -183,6 +183,31 @@ <excludedStates>OFF</excludedStates> <excludedStates>FAULT</excludedStates> </commands> + <commands name="ResetCounter" description="" execMethod="reset_counter" displayLevel="OPERATOR" polledPeriod="0"> + <argin description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argin> + <argout description=""> + <type xsi:type="pogoDsl:VoidType"/> + </argout> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + </commands> + <attributes name="RegularFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <dataType xsi:type="pogoDsl:UIntType"/> + <changeEvent fire="false" libCheckCriteria="false"/> + <archiveEvent fire="false" libCheckCriteria="false"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> + <attributes name="FailedFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <dataType xsi:type="pogoDsl:UIntType"/> + <changeEvent fire="false" libCheckCriteria="false"/> + <archiveEvent fire="false" libCheckCriteria="false"/> + <dataReadyEvent fire="false" libCheckCriteria="true"/> + <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> + <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> + </attributes> <states name="ON" description="Data exporter is in ON state (searching new file to transfer)"> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </states> diff --git a/src/DataImporterClass.cpp b/src/DataImporterClass.cpp index b34f8fe14386ecb7eda304683e8aebf565d94f57..e5852054b28dd8eea5a7040b0472da0d0b75f7bb 100644 --- a/src/DataImporterClass.cpp +++ b/src/DataImporterClass.cpp @@ -131,8 +131,8 @@ DataImporterClass *DataImporterClass::init(const char *name) catch (bad_alloc &) { throw; - } - } + } + } return _instance; } @@ -194,6 +194,24 @@ CORBA::Any *OffClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB return new CORBA::Any(); } +//-------------------------------------------------------- +/** + * method : ResetCounterClass::execute() + * description : method to trigger the execution of the command. + * + * @param device The device on which the command must be executed + * @param in_any The command input data + * + * returns The command output data (packed in the Any object) + */ +//-------------------------------------------------------- +CORBA::Any *ResetCounterClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any)) +{ + cout2 << "ResetCounterClass::execute(): arrived" << endl; + ((static_cast<DataImporter *>(device))->reset_counter()); + return new CORBA::Any(); +} + //=================================================================== // Properties management @@ -266,7 +284,7 @@ void DataImporterClass::get_class_property() cl_prop.push_back(Tango::DbDatum("AuxDatabaseSchema")); cl_prop.push_back(Tango::DbDatum("AuxDatabaseTimestampTable")); cl_prop.push_back(Tango::DbDatum("AuxDatabaseFailedTable")); - + // Call database and extract values if (Tango::Util::instance()->_UseDb==true) get_db_class()->get_property(cl_prop); @@ -913,7 +931,7 @@ void DataImporterClass::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); @@ -922,13 +940,13 @@ void DataImporterClass::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) { @@ -937,17 +955,17 @@ void DataImporterClass::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 ) @@ -955,7 +973,7 @@ void DataImporterClass::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); @@ -1005,7 +1023,7 @@ void DataImporterClass::device_factory(const Tango::DevVarStringArray *devlist_p for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) { cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl; - device_list.push_back(new DataImporter(this, (*devlist_ptr)[i])); + device_list.push_back(new DataImporter(this, (*devlist_ptr)[i])); } // Manage dynamic attributes if any @@ -1045,6 +1063,54 @@ void DataImporterClass::attribute_factory(vector<Tango::Attr *> &att_list) // Add your own code /*----- PROTECTED REGION END -----*/ // DataImporterClass::attribute_factory_before + // Attribute : RegularFileCounter + RegularFileCounterAttrib *regularfilecounter = new RegularFileCounterAttrib(); + Tango::UserDefaultAttrProp regularfilecounter_prop; + // description not set for RegularFileCounter + // label not set for RegularFileCounter + // unit not set for RegularFileCounter + // standard_unit not set for RegularFileCounter + // display_unit not set for RegularFileCounter + // format not set for RegularFileCounter + // max_value not set for RegularFileCounter + // min_value not set for RegularFileCounter + // max_alarm not set for RegularFileCounter + // min_alarm not set for RegularFileCounter + // max_warning not set for RegularFileCounter + // min_warning not set for RegularFileCounter + // delta_t not set for RegularFileCounter + // delta_val not set for RegularFileCounter + + regularfilecounter->set_default_properties(regularfilecounter_prop); + // Not Polled + regularfilecounter->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(regularfilecounter); + + // Attribute : FailedFileCounter + FailedFileCounterAttrib *failedfilecounter = new FailedFileCounterAttrib(); + Tango::UserDefaultAttrProp failedfilecounter_prop; + // description not set for FailedFileCounter + // label not set for FailedFileCounter + // unit not set for FailedFileCounter + // standard_unit not set for FailedFileCounter + // display_unit not set for FailedFileCounter + // format not set for FailedFileCounter + // max_value not set for FailedFileCounter + // min_value not set for FailedFileCounter + // max_alarm not set for FailedFileCounter + // min_alarm not set for FailedFileCounter + // max_warning not set for FailedFileCounter + // min_warning not set for FailedFileCounter + // delta_t not set for FailedFileCounter + // delta_val not set for FailedFileCounter + + failedfilecounter->set_default_properties(failedfilecounter_prop); + // Not Polled + failedfilecounter->set_disp_level(Tango::OPERATOR); + // Not Memorized + att_list.push_back(failedfilecounter); + // Create a list of static attributes create_static_attribute_list(get_class_attr()->get_attr_list()); /*----- PROTECTED REGION ID(DataImporterClass::attribute_factory_after) ENABLED START -----*/ @@ -1087,6 +1153,15 @@ void DataImporterClass::command_factory() Tango::OPERATOR); command_list.push_back(pOffCmd); + // Command ResetCounter + ResetCounterClass *pResetCounterCmd = + new ResetCounterClass("ResetCounter", + Tango::DEV_VOID, Tango::DEV_VOID, + "", + "", + Tango::OPERATOR); + command_list.push_back(pResetCounterCmd); + /*----- PROTECTED REGION ID(DataImporterClass::command_factory_after) ENABLED START -----*/ // Add your own code @@ -1103,7 +1178,7 @@ void DataImporterClass::command_factory() * method : DataImporterClass::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 DataImporterClass::create_static_attribute_list(vector<Tango::Attr *> &att_list) @@ -1137,10 +1212,10 @@ void DataImporterClass::erase_dynamic_attributes(const Tango::DevVarStringArray Tango::Util *tg = Tango::Util::instance(); for (unsigned long i=0 ; i<devlist_ptr->length() ; i++) - { + { Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str()); DataImporter *dev = static_cast<DataImporter *> (dev_impl); - + vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list(); vector<Tango::Attribute *>::iterator ite_att; for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att) diff --git a/src/DataImporterClass.h b/src/DataImporterClass.h index 1091f63c613d91e9ecf48c0d9994c76c754189d2..b2db9918bc6fc423c7db2c37e187a3393d58c54a 100644 --- a/src/DataImporterClass.h +++ b/src/DataImporterClass.h @@ -56,6 +56,36 @@ namespace DataImporter_ns /*----- PROTECTED REGION END -----*/ // DataImporterClass::classes for dynamic creation +//========================================= +// Define classes for attributes +//========================================= +// Attribute RegularFileCounter class definition +class RegularFileCounterAttrib: public Tango::Attr +{ +public: + RegularFileCounterAttrib():Attr("RegularFileCounter", + Tango::DEV_ULONG, Tango::READ) {}; + ~RegularFileCounterAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<DataImporter *>(dev))->read_RegularFileCounter(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<DataImporter *>(dev))->is_RegularFileCounter_allowed(ty);} +}; + +// Attribute FailedFileCounter class definition +class FailedFileCounterAttrib: public Tango::Attr +{ +public: + FailedFileCounterAttrib():Attr("FailedFileCounter", + Tango::DEV_ULONG, Tango::READ) {}; + ~FailedFileCounterAttrib() {}; + virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att) + {(static_cast<DataImporter *>(dev))->read_FailedFileCounter(att);} + virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty) + {return (static_cast<DataImporter *>(dev))->is_FailedFileCounter_allowed(ty);} +}; + + //========================================= // Define classes for commands //========================================= @@ -105,6 +135,29 @@ public: {return (static_cast<DataImporter *>(dev))->is_Off_allowed(any);} }; +// Command ResetCounter class definition +class ResetCounterClass : public Tango::Command +{ +public: + ResetCounterClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out, + const char *in_desc, + const char *out_desc, + Tango::DispLevel level) + :Command(name,in,out,in_desc,out_desc, level) {}; + + ResetCounterClass(const char *name, + Tango::CmdArgType in, + Tango::CmdArgType out) + :Command(name,in,out) {}; + ~ResetCounterClass() {}; + + virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any); + virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any) + {return (static_cast<DataImporter *>(dev))->is_ResetCounter_allowed(any);} +}; + /** * The DataImporterClass singleton definition diff --git a/src/DataImporterStateMachine.cpp b/src/DataImporterStateMachine.cpp index e5a97508cbc3a2c01206ecd6b446a184f7ef364d..f9e6fdb3234c7ee1228dec9df2bd7d2794898222 100644 --- a/src/DataImporterStateMachine.cpp +++ b/src/DataImporterStateMachine.cpp @@ -54,6 +54,38 @@ namespace DataImporter_ns // Attributes Allowed Methods //================================================= +//-------------------------------------------------------- +/** + * Method : DataImporter::is_RegularFileCounter_allowed() + * Description : Execution allowed for RegularFileCounter attribute + */ +//-------------------------------------------------------- +bool DataImporter::is_RegularFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for RegularFileCounter attribute in read access. + /*----- PROTECTED REGION ID(DataImporter::RegularFileCounterStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // DataImporter::RegularFileCounterStateAllowed_READ + return true; +} + +//-------------------------------------------------------- +/** + * Method : DataImporter::is_FailedFileCounter_allowed() + * Description : Execution allowed for FailedFileCounter attribute + */ +//-------------------------------------------------------- +bool DataImporter::is_FailedFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type)) +{ + + // Not any excluded states for FailedFileCounter attribute in read access. + /*----- PROTECTED REGION ID(DataImporter::FailedFileCounterStateAllowed_READ) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // DataImporter::FailedFileCounterStateAllowed_READ + return true; +} + //================================================= // Commands Allowed Methods //================================================= @@ -100,4 +132,19 @@ bool DataImporter::is_Off_allowed(TANGO_UNUSED(const CORBA::Any &any)) return true; } +//-------------------------------------------------------- +/** + * Method : DataImporter::is_ResetCounter_allowed() + * Description : Execution allowed for ResetCounter attribute + */ +//-------------------------------------------------------- +bool DataImporter::is_ResetCounter_allowed(TANGO_UNUSED(const CORBA::Any &any)) +{ + // Not any excluded states for ResetCounter command. + /*----- PROTECTED REGION ID(DataImporter::ResetCounterStateAllowed) ENABLED START -----*/ + + /*----- PROTECTED REGION END -----*/ // DataImporter::ResetCounterStateAllowed + return true; +} + } // End of namespace diff --git a/src/PlainClient.cpp b/src/PlainClient.cpp index cea1a61e1343e7fcf9e9e3ea4e82330cadced6ac..88c77f52601ae14c73aaeaf73e577294a2b17962 100644 --- a/src/PlainClient.cpp +++ b/src/PlainClient.cpp @@ -1,4 +1,5 @@ #include <PlainClient.h> +#include <DataImporter.h> #include <boost/lexical_cast.hpp> #include <boost/bind.hpp> @@ -11,8 +12,8 @@ namespace DataImporter_ns //============================================================================== // PlainClient::PlainClient() //============================================================================== -PlainClient::PlainClient(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp) : Client(deviceImpl_p, configuration_sp), +PlainClient::PlainClient(DataImporter* dataImporter_p, + Configuration::SP configuration_sp) : Client(dataImporter_p, configuration_sp), m_plainSocket(m_ioService) { DEBUG_STREAM << "PlainClient::PlainClient()" << endl; @@ -31,10 +32,10 @@ PlainClient::~PlainClient() //============================================================================== // PlainClient::create() //============================================================================== -Client::SP PlainClient::create(Tango::DeviceImpl* deviceImpl_p, +Client::SP PlainClient::create(DataImporter* dataImporter_p, Configuration::SP configuration_sp) { - Client::SP c_sp(new PlainClient(deviceImpl_p, configuration_sp), + Client::SP c_sp(new PlainClient(dataImporter_p, configuration_sp), PlainClient::Deleter()); return c_sp; diff --git a/src/PlainClient.h b/src/PlainClient.h index 6b3b2889ebf506f5779992097ddcaa1cc41aa59e..7aeb61fcd5be013ecedc873e9b8832d102adcf67 100644 --- a/src/PlainClient.h +++ b/src/PlainClient.h @@ -12,7 +12,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor //------------------------------------------------------------------------------ - PlainClient(Tango::DeviceImpl*, Configuration::SP); + PlainClient(DataImporter*, Configuration::SP); virtual ~PlainClient(); @@ -28,7 +28,7 @@ public: //------------------------------------------------------------------------------ // [Public] Class creation method //------------------------------------------------------------------------------ - static Client::SP create(Tango::DeviceImpl*, Configuration::SP); + static Client::SP create(DataImporter*, Configuration::SP); protected: //------------------------------------------------------------------------------ diff --git a/src/ProtocolManager.cpp b/src/ProtocolManager.cpp index 61b684f5b7c4caa98150bfac9d62ae16d0518796..1175b5fa7c026108759d2fdeac0c7512fc0f1fcd 100644 --- a/src/ProtocolManager.cpp +++ b/src/ProtocolManager.cpp @@ -1,4 +1,6 @@ #include <ProtocolManager.h> +#include <DataImporter.h> + #include <boost/filesystem.hpp> namespace DataImporter_ns @@ -7,9 +9,9 @@ namespace DataImporter_ns //============================================================================== // ProtocolManager::ProtocolManager() //============================================================================== -ProtocolManager::ProtocolManager(Tango::DeviceImpl* deviceImpl_p, +ProtocolManager::ProtocolManager(DataImporter* dataImporter_p, Configuration::SP configuration_sp, DBManager::SP dBManager_sp) : - Tango::LogAdapter(deviceImpl_p), m_deviceImpl_p(deviceImpl_p), + Tango::LogAdapter(dataImporter_p), m_dataImporter_p(dataImporter_p), m_configuration_sp(configuration_sp), m_dBManager_sp(dBManager_sp) { DEBUG_STREAM << "ProtocolManager::ProtocolManager()" << endl; @@ -26,10 +28,10 @@ ProtocolManager::~ProtocolManager() //============================================================================== // ProtocolManager::create() //============================================================================== -ProtocolManager::SP ProtocolManager::create(Tango::DeviceImpl* deviceImpl_p, +ProtocolManager::SP ProtocolManager::create(DataImporter* dataImporter_p, Configuration::SP configuration_sp, DBManager::SP dBManager_sp) { - ProtocolManager::SP d_sp(new ProtocolManager(deviceImpl_p, configuration_sp, + ProtocolManager::SP d_sp(new ProtocolManager(dataImporter_p, configuration_sp, dBManager_sp), ProtocolManager::Deleter()); return d_sp; @@ -265,7 +267,7 @@ FileWrapper::SP ProtocolManager::processResponse(ResponseSP response_sp) int fileVersion = response_sp->file_version(); - std::string fileName = response_sp->file_name(); + std::string fileName = response_sp->file_name(); if(fileName.empty()) throw std::invalid_argument("Empty file path received"); @@ -276,7 +278,7 @@ FileWrapper::SP ProtocolManager::processResponse(ResponseSP response_sp) << fileName << " version " << fileVersion << " size " << fileSize << " from " << m_remoteEndpoint << endl; - return FileWrapper::create(m_deviceImpl_p, + return FileWrapper::create(m_dataImporter_p, m_configuration_sp->getStoragePath(), filePath, fileVersion, fileName, fileSize); } @@ -347,6 +349,8 @@ void ProtocolManager::setNewFileTransfered(FileWrapper::SP fileWrapper_sp) auxTransaction_sp->commit(); mainTransaction_sp->commit(); + + m_dataImporter_p->incrementRegularCounter(); } //============================================================================== @@ -384,6 +388,9 @@ void ProtocolManager::setFailedFileTransfered(FileWrapper::SP fileWrapper_sp) auxTransaction_sp->commit(); mainTransaction_sp->commit(); + + m_dataImporter_p->decrementFailedCounter(); + m_dataImporter_p->incrementRegularCounter(); } //============================================================================== @@ -440,6 +447,8 @@ void ProtocolManager::setNewFileFailed() auxTransaction_sp->commit(); mainTransaction_sp->commit(); + + m_dataImporter_p->incrementFailedCounter(); } //============================================================================== diff --git a/src/ProtocolManager.h b/src/ProtocolManager.h index 47c59185d7a1e7249430f96584c306f4b68e15a4..47234de8fd638e75d2734cc5253e1195ae59c385 100644 --- a/src/ProtocolManager.h +++ b/src/ProtocolManager.h @@ -14,6 +14,8 @@ namespace DataImporter_ns { +class DataImporter; + //Protocol buffer request class shared pointer typedef boost::shared_ptr<Request> RequestSP; @@ -32,7 +34,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ - ProtocolManager(Tango::DeviceImpl*, Configuration::SP, DBManager::SP); + ProtocolManager(DataImporter*, Configuration::SP, DBManager::SP); virtual ~ProtocolManager(); @@ -41,14 +43,14 @@ protected: class Deleter { public: - void operator()(ProtocolManager* d) { delete d; } + void operator()(ProtocolManager* p) { delete p; } }; public: //------------------------------------------------------------------------------ // [Public] Class creation method //------------------------------------------------------------------------------ - static ProtocolManager::SP create(Tango::DeviceImpl*, Configuration::SP, + static ProtocolManager::SP create(DataImporter*, Configuration::SP, DBManager::SP); //------------------------------------------------------------------------------ @@ -111,7 +113,7 @@ protected: // [Protected] Class variables //------------------------------------------------------------------------------ //Tango server class pointer - Tango::DeviceImpl* m_deviceImpl_p; + DataImporter* m_dataImporter_p; //Configuration parameters shared pointer Configuration::SP m_configuration_sp; diff --git a/src/SSLClient.cpp b/src/SSLClient.cpp index e3553e6fc0280c9202b7b8315e57cfa927cb3230..c520eb1a3429f45f62c5350c6770168d772ad830 100644 --- a/src/SSLClient.cpp +++ b/src/SSLClient.cpp @@ -1,4 +1,5 @@ #include <SSLClient.h> +#include <DataImporter.h> #include <boost/lexical_cast.hpp> #include <boost/bind.hpp> @@ -10,8 +11,8 @@ namespace DataImporter_ns //============================================================================== // SSLClient::SSLClient() //============================================================================== -SSLClient::SSLClient(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp) : Client(deviceImpl_p, configuration_sp), +SSLClient::SSLClient(DataImporter* dataImporter_p, + Configuration::SP configuration_sp) : Client(dataImporter_p, configuration_sp), m_sSLContext(boost::asio::ssl::context::sslv23), m_sSLSocket(m_ioService, m_sSLContext) { @@ -48,11 +49,11 @@ SSLClient::~SSLClient() //============================================================================== // SSLClient::create() //============================================================================== -Client::SP SSLClient::create(Tango::DeviceImpl* deviceImpl_p, +Client::SP SSLClient::create(DataImporter* dataImporter_p, Configuration::SP configuration_sp) { - Client::SP c_sp(new SSLClient(deviceImpl_p, configuration_sp), + Client::SP c_sp(new SSLClient(dataImporter_p, configuration_sp), SSLClient::Deleter()); return c_sp; diff --git a/src/SSLClient.h b/src/SSLClient.h index 9b7a360040e6857423a6fb1c1549672148f27cee..06f69eccc5783b0fb597ece462d8ea5df014925d 100644 --- a/src/SSLClient.h +++ b/src/SSLClient.h @@ -14,7 +14,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor //------------------------------------------------------------------------------ - SSLClient(Tango::DeviceImpl*, Configuration::SP); + SSLClient(DataImporter*, Configuration::SP); virtual ~SSLClient(); @@ -30,7 +30,7 @@ public: //------------------------------------------------------------------------------ // [Public] Class creation method //------------------------------------------------------------------------------ - static Client::SP create(Tango::DeviceImpl*, Configuration::SP); + static Client::SP create(DataImporter*, Configuration::SP); protected: //------------------------------------------------------------------------------