From 01111a8d3cf3fdbbe85b2ea031ba934296295a71 Mon Sep 17 00:00:00 2001 From: Marco De Marco Date: Thu, 12 Dec 2013 10:57:02 +0100 Subject: [PATCH] Database protocol added --- proto/Request.proto | 2 + src/Configuration.h | 70 +++++++------ src/DBManager.cpp | 80 +++++++++++++++ src/DBManager.h | 80 +++++++++++++++ src/DataExporter.cpp | 165 +++++++++++++++---------------- src/DataExporter.h | 31 +++--- src/DataExporter.xmi | 10 +- src/DataExporterClass.cpp | 26 ----- src/DataExporterClass.h | 2 - src/DataExporterStateMachine.cpp | 6 +- src/PlainServer.cpp | 3 +- src/PlainSession.cpp | 12 +-- src/PlainSession.h | 7 +- src/ProtocolManager.cpp | 18 ++-- src/ProtocolManager.h | 14 ++- src/Request.pb.cc | 64 ++++++++++-- src/Request.pb.h | 52 +++++++++- src/SSLServer.cpp | 3 +- src/SSLSession.cpp | 12 +-- src/SSLSession.h | 10 +- src/Server.cpp | 6 +- src/Server.h | 6 +- src/Session.cpp | 7 +- src/Session.h | 5 +- 24 files changed, 445 insertions(+), 246 deletions(-) create mode 100644 src/DBManager.cpp create mode 100644 src/DBManager.h diff --git a/proto/Request.proto b/proto/Request.proto index ba7f0fe..d8c4278 100644 --- a/proto/Request.proto +++ b/proto/Request.proto @@ -30,4 +30,6 @@ message Request required int32 file_version = 2; required string file_name = 3; } + + optional Data data = 3; } diff --git a/src/Configuration.h b/src/Configuration.h index 1350104..e3cccf6 100644 --- a/src/Configuration.h +++ b/src/Configuration.h @@ -31,19 +31,17 @@ protected: Configuration(std::string certificateFile, std::string privateKeyFile, std::string dHTempFile, ExportedTablesMap exportedTablesMap, AuthorisedUsersMap authorisedUsersMap, std::string storagePath, - std::string localHost, unsigned int localPort, unsigned int workerNumber) : -// std::string localHost, unsigned int localPort, unsigned int workerNumber, -// std::string databaseHost, unsigned int databasePort, -// std::string databaseUsername, std::string databasePassword, -// unsigned int databaseConnectionNumber) : + std::string localHost, unsigned int localPort, unsigned int workerNumber, + std::string databaseHost, unsigned int databasePort, + std::string databaseUsername, std::string databasePassword, + unsigned int databaseConnectionNumber) : m_certificateFile(certificateFile), m_privateKeyFile(privateKeyFile), m_dHTempFile(dHTempFile), m_exportedTablesMap(exportedTablesMap), m_authorisedUsersMap(authorisedUsersMap), m_storagePath(storagePath), - m_localHost(localHost), m_localPort(localPort), m_workerNumber(workerNumber) {} -// m_localHost(localHost), m_localPort(localPort), m_workerNumber(workerNumber), -// m_databaseHost(databaseHost), m_databasePort(databasePort), -// m_databaseUsername(databaseUsername), m_databasePassword(databasePassword), -// m_databaseConnectionNumber(databaseConnectionNumber) {} + m_localHost(localHost), m_localPort(localPort), m_workerNumber(workerNumber), + m_databaseHost(databaseHost), m_databasePort(databasePort), + m_databaseUsername(databaseUsername), m_databasePassword(databasePassword), + m_databaseConnectionNumber(databaseConnectionNumber) {} virtual ~Configuration() {} @@ -63,17 +61,15 @@ public: std::string privateKeyFile, std::string dHTempFile, ExportedTablesMap exportedTablesMap, AuthorisedUsersMap authorisedUsersMap, std::string storagePath, std::string localHost, - unsigned int localPort, unsigned int workerNumber) -// unsigned int localPort, unsigned int workerNumber, -// std::string databaseHost, unsigned int databasePort, -// std::string databaseUsername, std::string databasePassword, -// unsigned int databaseConnectionNumber) + unsigned int localPort, unsigned int workerNumber, + std::string databaseHost, unsigned int databasePort, + std::string databaseUsername, std::string databasePassword, + unsigned int databaseConnectionNumber) { Configuration::SP c_sp(new Configuration(certificateFile, privateKeyFile, dHTempFile, exportedTablesMap, authorisedUsersMap, storagePath, - localHost, localPort, workerNumber), -// localHost, localPort, workerNumber, databaseHost, databasePort, -// databaseUsername, databasePassword, databaseConnectionNumber), + localHost, localPort, workerNumber, databaseHost, databasePort, + databaseUsername, databasePassword, databaseConnectionNumber), Configuration::Deleter()); return c_sp; @@ -91,11 +87,11 @@ public: std::string getLocalHost() const { return m_localHost; } unsigned int getLocalPort() const { return m_localPort; } unsigned int getWorkerNumber() const { return m_workerNumber; } -// std::string getDatabaseHost() const { return m_databaseHost; } -// unsigned int getDatabasePort() const { return m_databasePort; } -// std::string getDatabaseUsername() const { return m_databaseUsername; } -// std::string getDatabasePassword() const { return m_databasePassword; } -// unsigned int getDatabaseConnectionNumber() const { return m_databaseConnectionNumber; } + std::string getDatabaseHost() const { return m_databaseHost; } + unsigned int getDatabasePort() const { return m_databasePort; } + std::string getDatabaseUsername() const { return m_databaseUsername; } + std::string getDatabasePassword() const { return m_databasePassword; } + unsigned int getDatabaseConnectionNumber() const { return m_databaseConnectionNumber; } //------------------------------------------------------------------------------ // [Public] Utilities methods @@ -159,20 +155,20 @@ protected: //Number of threads that call io service run methods const unsigned int m_workerNumber; -// //Metadata database host -// const std::string m_databaseHost; -// -// //Metadata database port -// const unsigned int m_databasePort; -// -// //Metadata database login username -// const std::string m_databaseUsername; -// -// //Metadata database login password -// const std::string m_databasePassword; -// -// //Metadata database connections number -// const unsigned int m_databaseConnectionNumber; + //Metadata database host + const std::string m_databaseHost; + + //Metadata database port + const unsigned int m_databasePort; + + //Metadata database login username + const std::string m_databaseUsername; + + //Metadata database login password + const std::string m_databasePassword; + + //Metadata database connections number + const unsigned int m_databaseConnectionNumber; }; } //End of namespace diff --git a/src/DBManager.cpp b/src/DBManager.cpp new file mode 100644 index 0000000..e59e6f8 --- /dev/null +++ b/src/DBManager.cpp @@ -0,0 +1,80 @@ +#include + +#include + +#include +#include + +namespace DataExporter_ns +{ + +//============================================================================== +// DBManager::DBManager() +//============================================================================== +DBManager::DBManager(Tango::DeviceImpl* deviceImpl_p, + Configuration::SP configuration_sp) : Tango::LogAdapter(deviceImpl_p), + m_configuration_sp(configuration_sp) +{ + DEBUG_STREAM << "DBManager::DBManager()" << endl; +} + +//============================================================================== +// DBManager::DBManager() +//============================================================================== +DBManager::~DBManager() +{ + DEBUG_STREAM << "DBManager::~DBManager()" << endl; +} + +//============================================================================== +// DBManager::DBManager() +//============================================================================== +DBManager::SP DBManager::create(Tango::DeviceImpl* deviceImpl_p, + Configuration::SP configuration_sp) +{ + DBManager::SP d_sp(new DBManager(deviceImpl_p, configuration_sp), + DBManager::Deleter()); + + return d_sp; +} + +//============================================================================== +// DBManager::connect() +//============================================================================== +void DBManager::connect() throw(soci::soci_error) +{ + DEBUG_STREAM << "DBManager::connect()" << endl; + + boost::mutex::scoped_lock lock(m_connectionPoolMutex); + + unsigned int connectionNumber = m_configuration_sp->getDatabaseConnectionNumber(); + + m_connectionPool_sp.reset(new soci::connection_pool(connectionNumber)); + + std::stringstream connection; + connection << " host=" << m_configuration_sp->getDatabaseHost(); + connection << " port=" << m_configuration_sp->getDatabasePort(); + connection << " user=" << m_configuration_sp->getDatabaseUsername(); + connection << " password=" << m_configuration_sp->getDatabasePassword(); + + #ifdef VERBOSE_DEBUG + INFO_STREAM << "DBManager::connect(): " << connection.str() << endl; + #endif + + for(unsigned int i=0; iat(i).open(soci::mysql, connection.str()); +} + +//============================================================================== +// DBManager::disconnect() +//============================================================================== +void DBManager::disconnect() +{ + DEBUG_STREAM << "DBManager::disconnect()" << endl; + + boost::mutex::scoped_lock lock(m_connectionPoolMutex); + + m_connectionPool_sp.reset(); +} + +} //namespace diff --git a/src/DBManager.h b/src/DBManager.h new file mode 100644 index 0000000..30c9659 --- /dev/null +++ b/src/DBManager.h @@ -0,0 +1,80 @@ +#ifndef DBMANAGER_H +#define DBMANAGER_H + +#include + +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace DataExporter_ns +{ + +class DBManager : public Tango::LogAdapter +{ +public: +//------------------------------------------------------------------------------ +// [Public] Shared pointer typedef +//------------------------------------------------------------------------------ + typedef boost::shared_ptr SP; + +protected: +//------------------------------------------------------------------------------ +// [Protected] Constructor destructor deleter +//------------------------------------------------------------------------------ + DBManager(Tango::DeviceImpl*, Configuration::SP); + + virtual ~DBManager(); + + class Deleter; + friend Deleter; + class Deleter + { + public: + void operator()(DBManager* d) { delete d; } + }; + +public: +//------------------------------------------------------------------------------ +// [Public] Class creation method +//------------------------------------------------------------------------------ + static DBManager::SP create(Tango::DeviceImpl*, Configuration::SP); + +//------------------------------------------------------------------------------ +// [Public] Connection management methods +//------------------------------------------------------------------------------ + virtual void connect() throw(soci::soci_error); + + virtual void disconnect(); + +protected: +//------------------------------------------------------------------------------ +// [Protected] Class variables +//------------------------------------------------------------------------------ + //Configuration shared pointer + Configuration::SP m_configuration_sp; + + //Connection pool mutex + boost::mutex m_connectionPoolMutex; + + //Database connection pool scoped pointer + boost::scoped_ptr m_connectionPool_sp; +}; + +} //End of namespace + +#endif /* DBMANAGER_H */ diff --git a/src/DataExporter.cpp b/src/DataExporter.cpp index 27f7f44..33e2d6f 100644 --- a/src/DataExporter.cpp +++ b/src/DataExporter.cpp @@ -208,11 +208,11 @@ void DataExporter::get_device_property() dev_prop.push_back(Tango::DbDatum("LocalPort")); dev_prop.push_back(Tango::DbDatum("WorkerNumber")); dev_prop.push_back(Tango::DbDatum("EnableSSL")); -// dev_prop.push_back(Tango::DbDatum("DatabaseHost")); -// 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("DatabaseHost")); + 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")); // is there at least one property to be read ? if (dev_prop.size()>0) @@ -337,60 +337,60 @@ void DataExporter::get_device_property() // And try to extract EnableSSL value from database if (dev_prop[i].is_empty()==false) dev_prop[i] >> enableSSL; -// // Try to initialize DatabaseHost from class property -// cl_prop = ds_class->get_class_property(dev_prop[++i].name); -// if (cl_prop.is_empty()==false) cl_prop >> databaseHost; -// else { -// // Try to initialize DatabaseHost from default device value -// def_prop = ds_class->get_default_device_property(dev_prop[i].name); -// if (def_prop.is_empty()==false) def_prop >> databaseHost; -// } -// // And try to extract DatabaseHost value from database -// if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseHost; -// -// // Try to initialize DatabasePort from class property -// cl_prop = ds_class->get_class_property(dev_prop[++i].name); -// if (cl_prop.is_empty()==false) cl_prop >> databasePort; -// else { -// // Try to initialize DatabasePort from default device value -// def_prop = ds_class->get_default_device_property(dev_prop[i].name); -// if (def_prop.is_empty()==false) def_prop >> databasePort; -// } -// // And try to extract DatabasePort value from database -// if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePort; -// -// // Try to initialize DatabaseUsername from class property -// cl_prop = ds_class->get_class_property(dev_prop[++i].name); -// if (cl_prop.is_empty()==false) cl_prop >> databaseUsername; -// else { -// // Try to initialize DatabaseUsername from default device value -// def_prop = ds_class->get_default_device_property(dev_prop[i].name); -// if (def_prop.is_empty()==false) def_prop >> databaseUsername; -// } -// // And try to extract DatabaseUsername value from database -// if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseUsername; -// -// // Try to initialize DatabasePassword from class property -// cl_prop = ds_class->get_class_property(dev_prop[++i].name); -// if (cl_prop.is_empty()==false) cl_prop >> databasePassword; -// else { -// // Try to initialize DatabasePassword from default device value -// def_prop = ds_class->get_default_device_property(dev_prop[i].name); -// if (def_prop.is_empty()==false) def_prop >> databasePassword; -// } -// // And try to extract DatabasePassword value from database -// if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePassword; -// -// // Try to initialize DatabaseConnectionNumber from class property -// cl_prop = ds_class->get_class_property(dev_prop[++i].name); -// if (cl_prop.is_empty()==false) cl_prop >> databaseConnectionNumber; -// else { -// // Try to initialize DatabaseConnectionNumber from default device value -// def_prop = ds_class->get_default_device_property(dev_prop[i].name); -// if (def_prop.is_empty()==false) def_prop >> databaseConnectionNumber; -// } -// // And try to extract DatabaseConnectionNumber value from database -// if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseConnectionNumber; + // Try to initialize DatabaseHost from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> databaseHost; + else { + // Try to initialize DatabaseHost from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> databaseHost; + } + // And try to extract DatabaseHost value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseHost; + + // Try to initialize DatabasePort from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> databasePort; + else { + // Try to initialize DatabasePort from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> databasePort; + } + // And try to extract DatabasePort value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePort; + + // Try to initialize DatabaseUsername from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> databaseUsername; + else { + // Try to initialize DatabaseUsername from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> databaseUsername; + } + // And try to extract DatabaseUsername value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseUsername; + + // Try to initialize DatabasePassword from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> databasePassword; + else { + // Try to initialize DatabasePassword from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> databasePassword; + } + // And try to extract DatabasePassword value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> databasePassword; + + // Try to initialize DatabaseConnectionNumber from class property + cl_prop = ds_class->get_class_property(dev_prop[++i].name); + if (cl_prop.is_empty()==false) cl_prop >> databaseConnectionNumber; + else { + // Try to initialize DatabaseConnectionNumber from default device value + def_prop = ds_class->get_default_device_property(dev_prop[i].name); + if (def_prop.is_empty()==false) def_prop >> databaseConnectionNumber; + } + // And try to extract DatabaseConnectionNumber value from database + if (dev_prop[i].is_empty()==false) dev_prop[i] >> databaseConnectionNumber; } @@ -434,33 +434,32 @@ void DataExporter::get_device_property() if(localHost.empty()) throw(invalid_argument("LocalHost property is empty or not defined")); - if(localPort<1 || localPort>MAX_LOCAL_PORT) + if(localPort<1 || localPort>MAX_PORT_NUMBER) throw(invalid_argument("LocalPort property out of range or not defined")); if(workerNumber<1 || workerNumber>MAX_WORKER_NUMBER) throw(invalid_argument("WorkerNumber property out of range or not defined")); -// if(databaseHost.empty()) -// throw(invalid_argument("DatabaseHost property is empty or not defined")); -// -// if(databasePort<1 || databasePort>MAX_DB_PORT) -// throw(invalid_argument("DatabasePort property out of range or not defined")); -// -// if(databaseUsername.empty()) -// throw(invalid_argument("DatabaseUsername property is empty or not defined")); -// -// if(databasePassword.empty()) -// throw(invalid_argument("DatabasePassword property is empty or not defined")); -// -// if(databaseConnectionNumber<1 || databaseConnectionNumber>MAX_DB_CONNECTION_NUMBER) -// throw(invalid_argument("DatabaseConnectionNumber property out of range or not defined")); + if(databaseHost.empty()) + throw(invalid_argument("DatabaseHost property is empty or not defined")); + + if(databasePort<1 || databasePort>MAX_PORT_NUMBER) + throw(invalid_argument("DatabasePort property out of range or not defined")); + + if(databaseUsername.empty()) + throw(invalid_argument("DatabaseUsername property is empty or not defined")); + + if(databasePassword.empty()) + throw(invalid_argument("DatabasePassword property is empty or not defined")); + + if(databaseConnectionNumber<1 || databaseConnectionNumber>MAX_DB_CONNECTION_NUMBER) + throw(invalid_argument("DatabaseConnectionNumber property out of range or not defined")); m_configuration_sp = Configuration::create(certificateFile, privateKeyFile, dHTempFile, exportedTablesMap, authorisedUsersMap, - storagePath, localHost, localPort, workerNumber); -// storagePath, localHost, localPort, workerNumber, -// databaseHost, databasePort, databaseUsername, databasePassword, -// databaseConnectionNumber); + storagePath, localHost, localPort, workerNumber, + databaseHost, databasePort, databaseUsername, databasePassword, + databaseConnectionNumber); } catch(invalid_argument& ex) { @@ -481,7 +480,7 @@ void DataExporter::get_device_property() //-------------------------------------------------------- void DataExporter::always_executed_hook() { - INFO_STREAM << "DataExporter::always_executed_hook() " << device_name << endl; + DEBUG_STREAM << "DataExporter::always_executed_hook() " << device_name << endl; /*----- PROTECTED REGION ID(DataExporter::always_executed_hook) ENABLED START -----*/ if(get_state() != Tango::FAULT) @@ -549,14 +548,14 @@ void DataExporter::on() } catch(std::exception& ex) { - set_state(Tango::FAULT); + set_state(Tango::ALARM); std::stringstream error_stream; error_stream << "DataExporter::On() " << ex.what() << std::endl; set_status(error_stream.str()); } catch(...) { - set_state(Tango::FAULT); + set_state(Tango::ALARM); set_status("DataExporter::On() unknown error"); } @@ -581,14 +580,14 @@ void DataExporter::off() } catch(std::exception& ex) { - set_state(Tango::FAULT); + set_state(Tango::ALARM); std::stringstream error_stream; error_stream << "DataExporter::Off() " << ex.what() << std::endl; set_status(error_stream.str()); } catch(...) { - set_state(Tango::FAULT); + set_state(Tango::ALARM); set_status("DataExporter::Off() unknown error"); } diff --git a/src/DataExporter.h b/src/DataExporter.h index 633a037..9f1a61e 100644 --- a/src/DataExporter.h +++ b/src/DataExporter.h @@ -73,17 +73,14 @@ class DataExporter : public TANGO_BASE_CLASS //Server base class shared pointer Server::SP m_server_sp; - //Max local port number allowed value - static const unsigned int MAX_LOCAL_PORT = 65535; + //Max port number allowed value + static const unsigned int MAX_PORT_NUMBER = 65535; //Max number of worker thread allowed static const unsigned int MAX_WORKER_NUMBER = 100; -// //Max number of database connection allowed -// static const unsigned int MAX_DB_CONNECTION_NUMBER = 100; -// -// //Max database port number allowed value -// static const unsigned int MAX_DB_PORT = 65535; + //Max number of database connection allowed + static const unsigned int MAX_DB_CONNECTION_NUMBER = 100; /*----- PROTECTED REGION END -----*/ // DataExporter::Data Members @@ -112,16 +109,16 @@ public: Tango::DevUShort workerNumber; // EnableSSL: Enable or disable SSL connections Tango::DevBoolean enableSSL; -// // DatabaseHost: Metadata database host -// string databaseHost; -// // DatabasePort: Metadata database port -// Tango::DevULong databasePort; -// // DatabaseUsername: Metadata database login username -// string databaseUsername; -// // DatabasePassword: Metadata database login password -// string databasePassword; -// // DatabaseConnectionNumber: Number of database connection created -// Tango::DevUShort databaseConnectionNumber; + // DatabaseHost: Metadata database host + string databaseHost; + // DatabasePort: Metadata database port + Tango::DevULong databasePort; + // DatabaseUsername: Metadata database login username + string databaseUsername; + // DatabasePassword: Metadata database login password + string databasePassword; + // DatabaseConnectionNumber: Number of database connection created + Tango::DevUShort databaseConnectionNumber; // Constructors and destructors diff --git a/src/DataExporter.xmi b/src/DataExporter.xmi index 2267959..d2254df 100644 --- a/src/DataExporter.xmi +++ b/src/DataExporter.xmi @@ -25,10 +25,6 @@ - - - - @@ -120,6 +116,7 @@ ON FAULT + ALARM @@ -138,7 +135,10 @@ - + + + + diff --git a/src/DataExporterClass.cpp b/src/DataExporterClass.cpp index cc082b6..dbe5274 100644 --- a/src/DataExporterClass.cpp +++ b/src/DataExporterClass.cpp @@ -262,7 +262,6 @@ void DataExporterClass::get_class_property() cl_prop.push_back(Tango::DbDatum("DHTempFile")); cl_prop.push_back(Tango::DbDatum("ExportedTables")); cl_prop.push_back(Tango::DbDatum("AuthorisedUsers")); - cl_prop.push_back(Tango::DbDatum("StoragePath")); // Call database and extract values if (Tango::Util::instance()->_UseDb==true) @@ -330,18 +329,6 @@ void DataExporterClass::get_class_property() cl_prop[i] << authorisedUsers; } } - // Try to extract StoragePath value - if (cl_prop[++i].is_empty()==false) cl_prop[i] >> storagePath; - else - { - // Check default value for StoragePath - def_prop = get_default_class_property(cl_prop[i].name); - if (def_prop.is_empty()==false) - { - def_prop >> storagePath; - cl_prop[i] << storagePath; - } - } /*----- PROTECTED REGION ID(DataExporterClass::get_class_property_after) ENABLED START -----*/ // Check class property data members init @@ -430,19 +417,6 @@ void DataExporterClass::set_default_property() cl_def_prop.push_back(data); add_wiz_class_prop(prop_name, prop_desc, prop_def); } - else - add_wiz_class_prop(prop_name, prop_desc); - prop_name = "StoragePath"; - prop_desc = "Absolute path to storage"; - prop_def = ""; - vect_data.clear(); - if (prop_def.length()>0) - { - Tango::DbDatum data(prop_name); - data << vect_data ; - cl_def_prop.push_back(data); - add_wiz_class_prop(prop_name, prop_desc, prop_def); - } else add_wiz_class_prop(prop_name, prop_desc); diff --git a/src/DataExporterClass.h b/src/DataExporterClass.h index 86bd2c2..4fd51d3 100644 --- a/src/DataExporterClass.h +++ b/src/DataExporterClass.h @@ -135,8 +135,6 @@ class DataExporterClass : public Tango::DeviceClass // AuthorisedUsers: Authorised user list: one user per row // [username password] vector authorisedUsers; - // StoragePath: Absolute path to storage - string storagePath; public: // write class properties data members Tango::DbData cl_prop; diff --git a/src/DataExporterStateMachine.cpp b/src/DataExporterStateMachine.cpp index 77ea472..8d089b3 100644 --- a/src/DataExporterStateMachine.cpp +++ b/src/DataExporterStateMachine.cpp @@ -43,7 +43,8 @@ //================================================================ // ON | Data exporter is in ON state (ready to incoming connections) // OFF | Data exporter is in OFF state (not ready for incoming connections) -// FAULT | Data exporter is in FAULT state (an error occurred) +// FAULT | Data exporter is in FAULT state (not ready to propagate data) +// ALARM | Data exporter is in ALARM state (not ready to propagate data) namespace DataExporter_ns @@ -66,7 +67,8 @@ bool DataExporter::is_On_allowed(TANGO_UNUSED(const CORBA::Any &any)) { // Compare device state with not allowed states. if (get_state()==Tango::ON || - get_state()==Tango::FAULT) + get_state()==Tango::FAULT || + get_state()==Tango::ALARM) { /*----- PROTECTED REGION ID(DataExporter::OnStateAllowed) ENABLED START -----*/ diff --git a/src/PlainServer.cpp b/src/PlainServer.cpp index 4dc7cf1..22c083e 100644 --- a/src/PlainServer.cpp +++ b/src/PlainServer.cpp @@ -42,8 +42,7 @@ void PlainServer::startAccept() DEBUG_STREAM << "PlainServer::startAccept()" << endl; Session::SP session_sp = PlainSession::create(m_deviceImpl_p, - m_configuration_sp, m_ioService_sp); -// m_configuration_sp, m_dBManager_sp, m_ioService_sp); + m_configuration_sp, m_dBManager_sp, m_ioService_sp); m_acceptor_sp->async_accept(session_sp->getSocket(), boost::bind(&PlainServer::handleAccept, this, diff --git a/src/PlainSession.cpp b/src/PlainSession.cpp index 5b76b85..79994d4 100644 --- a/src/PlainSession.cpp +++ b/src/PlainSession.cpp @@ -10,11 +10,9 @@ namespace DataExporter_ns // PlainSession::PlainSession() //============================================================================== PlainSession::PlainSession(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp, -// Configuration::SP configuration_sp, DBManager::SP dBManager_sp, + Configuration::SP configuration_sp, DBManager::SP dBManager_sp, boost::shared_ptr ioService_sp) : - Session::Session(deviceImpl_p,configuration_sp, ioService_sp), -// Session::Session(deviceImpl_p,configuration_sp, dBManager_sp, ioService_sp), + Session::Session(deviceImpl_p,configuration_sp, dBManager_sp, ioService_sp), m_plainSocket(*ioService_sp) { DEBUG_STREAM << "PlainSession::PlainSession()" << endl; @@ -41,13 +39,11 @@ PlainSession::~PlainSession() // PlainSession::create() //============================================================================== Session::SP PlainSession::create(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp, -// Configuration::SP configuration_sp, DBManager::SP dBManager_sp, + Configuration::SP configuration_sp, DBManager::SP dBManager_sp, boost::shared_ptr ioService_sp) { Session::SP s_sp(new PlainSession(deviceImpl_p, configuration_sp, - ioService_sp), PlainSession::Deleter()); -// dBManager_sp, ioService_sp), PlainSession::Deleter()); + dBManager_sp, ioService_sp), PlainSession::Deleter()); return s_sp; } diff --git a/src/PlainSession.h b/src/PlainSession.h index 0756f40..73ef35e 100644 --- a/src/PlainSession.h +++ b/src/PlainSession.h @@ -17,8 +17,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ -// PlainSession(Tango::DeviceImpl*, Configuration::SP, DBManager::SP, - PlainSession(Tango::DeviceImpl*, Configuration::SP, + PlainSession(Tango::DeviceImpl*, Configuration::SP, DBManager::SP, boost::shared_ptr); virtual ~PlainSession(); @@ -36,9 +35,7 @@ public: // [Public] Class creation method //------------------------------------------------------------------------------ static Session::SP create(Tango::DeviceImpl*, Configuration::SP, - boost::shared_ptr); -// static Session::SP create(Tango::DeviceImpl*, Configuration::SP, -// DBManager::SP, boost::shared_ptr); + DBManager::SP, boost::shared_ptr); //------------------------------------------------------------------------------ // [Public] Incoming connection methods diff --git a/src/ProtocolManager.cpp b/src/ProtocolManager.cpp index 59354eb..0f93eb7 100644 --- a/src/ProtocolManager.cpp +++ b/src/ProtocolManager.cpp @@ -9,12 +9,9 @@ namespace DataExporter_ns // ProtocolManager::ProtocolManager() //============================================================================== ProtocolManager::ProtocolManager(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp) : Tango::LogAdapter(deviceImpl_p), - m_configuration_sp(configuration_sp) -//ProtocolManager::ProtocolManager(Tango::DeviceImpl* deviceImpl_p, -// Configuration::SP configuration_sp, DBManager::SP dBManager_sp) : -// Tango::LogAdapter(deviceImpl_p), m_configuration_sp(configuration_sp), -// m_dBManager_sp(dBManager_sp) + Configuration::SP configuration_sp, DBManager::SP dBManager_sp) : + Tango::LogAdapter(deviceImpl_p), m_configuration_sp(configuration_sp), + m_dBManager_sp(dBManager_sp) { DEBUG_STREAM << "ProtocolManager::ProtocolManager()" << endl; @@ -33,13 +30,10 @@ ProtocolManager::~ProtocolManager() // ProtocolManager::create() //============================================================================== ProtocolManager::SP ProtocolManager::create(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp) -// Configuration::SP configuration_sp, DBManager::SP dBManager_sp) + Configuration::SP configuration_sp, DBManager::SP dBManager_sp) { - ProtocolManager::SP d_sp(new ProtocolManager(deviceImpl_p, configuration_sp), - ProtocolManager::Deleter()); -// ProtocolManager::SP d_sp(new ProtocolManager(deviceImpl_p, configuration_sp, -// dBManager_sp), ProtocolManager::Deleter()); + ProtocolManager::SP d_sp(new ProtocolManager(deviceImpl_p, configuration_sp, + dBManager_sp), ProtocolManager::Deleter()); return d_sp; } diff --git a/src/ProtocolManager.h b/src/ProtocolManager.h index 275dd8b..ea48ee9 100644 --- a/src/ProtocolManager.h +++ b/src/ProtocolManager.h @@ -4,7 +4,7 @@ #include #include #include -//#include +#include #include @@ -29,8 +29,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ -// ProtocolManager(Tango::DeviceImpl*, Configuration::SP, DBManager::SP); - ProtocolManager(Tango::DeviceImpl*, Configuration::SP); + ProtocolManager(Tango::DeviceImpl*, Configuration::SP, DBManager::SP); virtual ~ProtocolManager(); @@ -46,9 +45,8 @@ public: //------------------------------------------------------------------------------ // [Public] Class creation method //------------------------------------------------------------------------------ - static ProtocolManager::SP create(Tango::DeviceImpl*, Configuration::SP); -// static ProtocolManager::SP create(Tango::DeviceImpl*, Configuration::SP, -// DBManager::SP); + static ProtocolManager::SP create(Tango::DeviceImpl*, Configuration::SP, + DBManager::SP); //------------------------------------------------------------------------------ // [Public] Remote endpoint setter method @@ -72,8 +70,8 @@ protected: //Configuration parameters shared pointer Configuration::SP m_configuration_sp; -// //Database manger shared pointer -// DBManager::SP m_dBManager_sp; + //Database manger shared pointer + DBManager::SP m_dBManager_sp; //Client is authorised bool m_isAuthorised; diff --git a/src/Request.pb.cc b/src/Request.pb.cc index fb0c54c..fce1c57 100644 --- a/src/Request.pb.cc +++ b/src/Request.pb.cc @@ -41,9 +41,10 @@ void protobuf_AssignDesc_Request_2eproto() { "Request.proto"); GOOGLE_CHECK(file != NULL); Request_descriptor_ = file->message_type(0); - static const int Request_offsets_[2] = { + static const int Request_offsets_[3] = { GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Request, type_), GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Request, authorization_), + GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Request, data_), }; Request_reflection_ = new ::google::protobuf::internal::GeneratedMessageReflection( @@ -128,14 +129,15 @@ void protobuf_AddDesc_Request_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( - "\n\rRequest.proto\022\017DataExporter_ns\"\223\002\n\007Req" + "\n\rRequest.proto\022\017DataExporter_ns\"\300\002\n\007Req" "uest\022+\n\004type\030\001 \002(\0162\035.DataExporter_ns.Req" "uest.Type\022=\n\rauthorization\030\002 \001(\0132&.DataE" - "xporter_ns.Request.Authorization\0323\n\rAuth" - "orization\022\020\n\010username\030\001 \002(\t\022\020\n\010password\030" - "\002 \002(\t\032B\n\004Data\022\021\n\tfile_path\030\001 \002(\t\022\024\n\014file" - "_version\030\002 \002(\005\022\021\n\tfile_name\030\003 \002(\t\"#\n\004Typ" - "e\022\021\n\rAUTHORIZATION\020\000\022\010\n\004DATA\020\001", 310); + "xporter_ns.Request.Authorization\022+\n\004data" + "\030\003 \001(\0132\035.DataExporter_ns.Request.Data\0323\n" + "\rAuthorization\022\020\n\010username\030\001 \002(\t\022\020\n\010pass" + "word\030\002 \002(\t\032B\n\004Data\022\021\n\tfile_path\030\001 \002(\t\022\024\n" + "\014file_version\030\002 \002(\005\022\021\n\tfile_name\030\003 \002(\t\"#" + "\n\004Type\022\021\n\rAUTHORIZATION\020\000\022\010\n\004DATA\020\001", 355); ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( "Request.proto", &protobuf_RegisterTypes); Request::default_instance_ = new Request(); @@ -786,6 +788,7 @@ void Request_Data::Swap(Request_Data* other) { #ifndef _MSC_VER const int Request::kTypeFieldNumber; const int Request::kAuthorizationFieldNumber; +const int Request::kDataFieldNumber; #endif // !_MSC_VER Request::Request() @@ -795,6 +798,7 @@ Request::Request() void Request::InitAsDefaultInstance() { authorization_ = const_cast< ::DataExporter_ns::Request_Authorization*>(&::DataExporter_ns::Request_Authorization::default_instance()); + data_ = const_cast< ::DataExporter_ns::Request_Data*>(&::DataExporter_ns::Request_Data::default_instance()); } Request::Request(const Request& from) @@ -807,6 +811,7 @@ void Request::SharedCtor() { _cached_size_ = 0; type_ = 0; authorization_ = NULL; + data_ = NULL; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -817,6 +822,7 @@ Request::~Request() { void Request::SharedDtor() { if (this != default_instance_) { delete authorization_; + delete data_; } } @@ -847,6 +853,9 @@ void Request::Clear() { if (has_authorization()) { if (authorization_ != NULL) authorization_->::DataExporter_ns::Request_Authorization::Clear(); } + if (has_data()) { + if (data_ != NULL) data_->::DataExporter_ns::Request_Data::Clear(); + } } ::memset(_has_bits_, 0, sizeof(_has_bits_)); mutable_unknown_fields()->Clear(); @@ -888,6 +897,20 @@ bool Request::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(26)) goto parse_data; + break; + } + + // optional .DataExporter_ns.Request.Data data = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_data: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_data())); + } else { + goto handle_uninterpreted; + } if (input->ExpectAtEnd()) return true; break; } @@ -922,6 +945,12 @@ void Request::SerializeWithCachedSizes( 2, this->authorization(), output); } + // optional .DataExporter_ns.Request.Data data = 3; + if (has_data()) { + ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( + 3, this->data(), output); + } + if (!unknown_fields().empty()) { ::google::protobuf::internal::WireFormat::SerializeUnknownFields( unknown_fields(), output); @@ -943,6 +972,13 @@ void Request::SerializeWithCachedSizes( 2, this->authorization(), target); } + // optional .DataExporter_ns.Request.Data data = 3; + if (has_data()) { + target = ::google::protobuf::internal::WireFormatLite:: + WriteMessageNoVirtualToArray( + 3, this->data(), target); + } + if (!unknown_fields().empty()) { target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( unknown_fields(), target); @@ -967,6 +1003,13 @@ int Request::ByteSize() const { this->authorization()); } + // optional .DataExporter_ns.Request.Data data = 3; + if (has_data()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->data()); + } + } if (!unknown_fields().empty()) { total_size += @@ -1000,6 +1043,9 @@ void Request::MergeFrom(const Request& from) { if (from.has_authorization()) { mutable_authorization()->::DataExporter_ns::Request_Authorization::MergeFrom(from.authorization()); } + if (from.has_data()) { + mutable_data()->::DataExporter_ns::Request_Data::MergeFrom(from.data()); + } } mutable_unknown_fields()->MergeFrom(from.unknown_fields()); } @@ -1022,6 +1068,9 @@ bool Request::IsInitialized() const { if (has_authorization()) { if (!this->authorization().IsInitialized()) return false; } + if (has_data()) { + if (!this->data().IsInitialized()) return false; + } return true; } @@ -1029,6 +1078,7 @@ void Request::Swap(Request* other) { if (other != this) { std::swap(type_, other->type_); std::swap(authorization_, other->authorization_); + std::swap(data_, other->data_); std::swap(_has_bits_[0], other->_has_bits_[0]); _unknown_fields_.Swap(&other->_unknown_fields_); std::swap(_cached_size_, other->_cached_size_); diff --git a/src/Request.pb.h b/src/Request.pb.h index c96caf7..bfc7129 100644 --- a/src/Request.pb.h +++ b/src/Request.pb.h @@ -370,20 +370,32 @@ class Request : public ::google::protobuf::Message { inline ::DataExporter_ns::Request_Authorization* release_authorization(); inline void set_allocated_authorization(::DataExporter_ns::Request_Authorization* authorization); + // optional .DataExporter_ns.Request.Data data = 3; + inline bool has_data() const; + inline void clear_data(); + static const int kDataFieldNumber = 3; + inline const ::DataExporter_ns::Request_Data& data() const; + inline ::DataExporter_ns::Request_Data* mutable_data(); + inline ::DataExporter_ns::Request_Data* release_data(); + inline void set_allocated_data(::DataExporter_ns::Request_Data* data); + // @@protoc_insertion_point(class_scope:DataExporter_ns.Request) private: inline void set_has_type(); inline void clear_has_type(); inline void set_has_authorization(); inline void clear_has_authorization(); + inline void set_has_data(); + inline void clear_has_data(); ::google::protobuf::UnknownFieldSet _unknown_fields_; ::DataExporter_ns::Request_Authorization* authorization_; + ::DataExporter_ns::Request_Data* data_; int type_; mutable int _cached_size_; - ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; friend void protobuf_AddDesc_Request_2eproto(); friend void protobuf_AssignDesc_Request_2eproto(); @@ -770,6 +782,44 @@ inline void Request::set_allocated_authorization(::DataExporter_ns::Request_Auth } } +// optional .DataExporter_ns.Request.Data data = 3; +inline bool Request::has_data() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Request::set_has_data() { + _has_bits_[0] |= 0x00000004u; +} +inline void Request::clear_has_data() { + _has_bits_[0] &= ~0x00000004u; +} +inline void Request::clear_data() { + if (data_ != NULL) data_->::DataExporter_ns::Request_Data::Clear(); + clear_has_data(); +} +inline const ::DataExporter_ns::Request_Data& Request::data() const { + return data_ != NULL ? *data_ : *default_instance_->data_; +} +inline ::DataExporter_ns::Request_Data* Request::mutable_data() { + set_has_data(); + if (data_ == NULL) data_ = new ::DataExporter_ns::Request_Data; + return data_; +} +inline ::DataExporter_ns::Request_Data* Request::release_data() { + clear_has_data(); + ::DataExporter_ns::Request_Data* temp = data_; + data_ = NULL; + return temp; +} +inline void Request::set_allocated_data(::DataExporter_ns::Request_Data* data) { + delete data_; + data_ = data; + if (data) { + set_has_data(); + } else { + clear_has_data(); + } +} + // @@protoc_insertion_point(namespace_scope) diff --git a/src/SSLServer.cpp b/src/SSLServer.cpp index 2b896c7..4bc67ff 100644 --- a/src/SSLServer.cpp +++ b/src/SSLServer.cpp @@ -67,8 +67,7 @@ void SSLServer::startAccept() DEBUG_STREAM << "SSLServer::startAccept()" << endl; Session::SP session_sp = SSLSession::create(m_deviceImpl_p, - m_configuration_sp, m_ioService_sp, m_context_sp); -// m_configuration_sp, m_dBManager_sp, m_ioService_sp, m_context_sp); + m_configuration_sp, m_dBManager_sp, m_ioService_sp, m_context_sp); m_acceptor_sp->async_accept(session_sp->getSocket(), boost::bind(&SSLServer::handleAccept, this, diff --git a/src/SSLSession.cpp b/src/SSLSession.cpp index 705bc0f..8f2a896 100644 --- a/src/SSLSession.cpp +++ b/src/SSLSession.cpp @@ -10,12 +10,10 @@ namespace DataExporter_ns // SSLSession::SSLSession() //============================================================================== SSLSession::SSLSession(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp, -// Configuration::SP configuration_sp, DBManager::SP dBManager_sp, + Configuration::SP configuration_sp, DBManager::SP dBManager_sp, boost::shared_ptr ioService_sp, boost::shared_ptr context_sp) : - Session::Session(deviceImpl_p, configuration_sp, ioService_sp), -// Session::Session(deviceImpl_p, configuration_sp, dBManager_sp, ioService_sp), + Session::Session(deviceImpl_p, configuration_sp, dBManager_sp, ioService_sp), m_sslSocket(*ioService_sp, *context_sp) { DEBUG_STREAM << "SSLSession::SSLSession()" << endl; @@ -45,14 +43,12 @@ SSLSession::~SSLSession() // SSLSession::create() //============================================================================== Session::SP SSLSession::create(Tango::DeviceImpl* deviceImpl_p, - Configuration::SP configuration_sp, -// Configuration::SP configuration_sp, DBManager::SP dBManager_sp, + Configuration::SP configuration_sp, DBManager::SP dBManager_sp, boost::shared_ptr ioService_sp, boost::shared_ptr context_sp) { Session::SP s_sp(new SSLSession(deviceImpl_p, configuration_sp, - ioService_sp, context_sp), SSLSession::Deleter()); -// dBManager_sp, ioService_sp, context_sp), SSLSession::Deleter()); + dBManager_sp, ioService_sp, context_sp), SSLSession::Deleter()); return s_sp; } diff --git a/src/SSLSession.h b/src/SSLSession.h index 4eb9022..3fe39d4 100644 --- a/src/SSLSession.h +++ b/src/SSLSession.h @@ -18,12 +18,9 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ - SSLSession(Tango::DeviceImpl*, Configuration::SP, + SSLSession(Tango::DeviceImpl*, Configuration::SP, DBManager::SP, boost::shared_ptr, boost::shared_ptr); -// SSLSession(Tango::DeviceImpl*, Configuration::SP, DBManager::SP, -// boost::shared_ptr, -// boost::shared_ptr); virtual ~SSLSession(); @@ -40,11 +37,8 @@ public: // [Public] Class creation method //------------------------------------------------------------------------------ static Session::SP create(Tango::DeviceImpl*, Configuration::SP, - boost::shared_ptr, + DBManager::SP, boost::shared_ptr, boost::shared_ptr); -// static Session::SP create(Tango::DeviceImpl*, Configuration::SP, -// DBManager::SP, boost::shared_ptr, -// boost::shared_ptr); //------------------------------------------------------------------------------ // [Public] Incoming connection methods diff --git a/src/Server.cpp b/src/Server.cpp index 18afa49..2e87b40 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -19,7 +19,7 @@ Server::Server(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(deviceImpl_p, configuration_sp); m_ioService_sp.reset(new boost::asio::io_service); @@ -60,7 +60,7 @@ void Server::start() throw(std::runtime_error) { DEBUG_STREAM << "Server::start()" << endl; -// m_dBManager_sp->connect(); + m_dBManager_sp->connect(); m_ioService_sp->reset(); @@ -126,7 +126,7 @@ void Server::stop() throw(std::runtime_error) m_threadGroup_sp.reset(); -// m_dBManager_sp->disconnect(); + m_dBManager_sp->disconnect(); } //============================================================================== // Server::readState() diff --git a/src/Server.h b/src/Server.h index 9f4fe37..9d030a6 100644 --- a/src/Server.h +++ b/src/Server.h @@ -2,7 +2,7 @@ #define SERVER_H #include -//#include +#include #include #include @@ -69,8 +69,8 @@ protected: //Configuration parameters shared pointer Configuration::SP m_configuration_sp; -// //Database data access class -// DBManager::SP m_dBManager_sp; + //Database data access class + DBManager::SP m_dBManager_sp; //Io service used for async operations boost::shared_ptr m_ioService_sp; diff --git a/src/Session.cpp b/src/Session.cpp index 2e3ce04..481de1e 100644 --- a/src/Session.cpp +++ b/src/Session.cpp @@ -7,15 +7,14 @@ namespace DataExporter_ns // Session::Session() //============================================================================== Session::Session(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_sp, - boost::shared_ptr ioService_sp) : -// DBManager::SP dBManager_sp, boost::shared_ptr ioService_sp) : + DBManager::SP dBManager_sp, boost::shared_ptr ioService_sp) : Tango::LogAdapter(deviceImpl_p), m_configuration_sp(configuration_sp), m_strand(*ioService_sp) { DEBUG_STREAM << "Session::Session()" << endl; -// m_protocolManager_sp = ProtocolManager::create(deviceImpl_p, -// configuration_sp, dBManager_sp); + m_protocolManager_sp = ProtocolManager::create(deviceImpl_p, + configuration_sp, dBManager_sp); } //============================================================================== diff --git a/src/Session.h b/src/Session.h index 69b9fef..ed022a6 100644 --- a/src/Session.h +++ b/src/Session.h @@ -3,7 +3,7 @@ #include #include -//#include +#include #include @@ -26,8 +26,7 @@ protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ -// Session(Tango::DeviceImpl*, Configuration::SP, DBManager::SP, - Session(Tango::DeviceImpl*, Configuration::SP, + Session(Tango::DeviceImpl*, Configuration::SP, DBManager::SP, boost::shared_ptr); virtual ~Session(); -- GitLab