diff --git a/src/DBManager.cpp b/src/DBManager.cpp index 5068f4cb03295536986949205f6e699066902792..c5bfee7c2229e23eb1daacb039f4aa50082e4370 100644 --- a/src/DBManager.cpp +++ b/src/DBManager.cpp @@ -16,10 +16,6 @@ DBManager::DBManager(Tango::DeviceImpl* deviceImpl_p, m_configuration_sp(configuration_sp) { DEBUG_STREAM << "DBManager::DBManager()" << endl; - - unsigned int connectionNumber = m_configuration_sp->getDatabaseConnectionNumber(); - - m_connectionPool_sp.reset(new soci::connection_pool(connectionNumber)); } //============================================================================== @@ -51,6 +47,10 @@ void DBManager::connect() throw(soci::soci_error) 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(); @@ -61,12 +61,8 @@ void DBManager::connect() throw(soci::soci_error) INFO_STREAM << "DBManager::connect(): " << connection.str() << endl; #endif - unsigned int connectionNumber = m_configuration_sp->getDatabaseConnectionNumber(); - for(unsigned int i=0; iat(i).open(soci::mysql, connection.str()); - } } //============================================================================== @@ -78,12 +74,7 @@ void DBManager::disconnect() boost::mutex::scoped_lock lock(m_connectionPoolMutex); - unsigned int connectionNumber = m_configuration_sp->getDatabaseConnectionNumber(); - - for(unsigned int i=0; iat(i).close(); - } + m_connectionPool_sp.reset(); } //============================================================================== @@ -94,6 +85,9 @@ DBManager::InformationList DBManager::retrieveInformation(std::string schema, { DEBUG_STREAM << "DBManager::retrieveInformation()" << endl; + if(!m_connectionPool_sp) + throw soci::soci_error("Connection pool not initialized"); + soci::session session(*m_connectionPool_sp); if(session.get_backend() == NULL) @@ -119,12 +113,15 @@ DBManager::RowsetSP DBManager::retrieveNewTuples(std::string schema, { DEBUG_STREAM << "DBManager::retrieveNewTuples()" << endl; + if(!m_connectionPool_sp) + throw soci::soci_error("Connection pool not initialized"); + soci::session session(*m_connectionPool_sp); if(session.get_backend() == NULL) session.reconnect(); - //@workaround: this does not work: timestamp parameter not passed +// @workaround: this does not work: timestamp parameter not passed // RowsetSP rows(new soci::rowset((session.prepare << "select * from " // << schema << "." << table << " where update_time > :timestamp " // << "order by update_time asc", soci::use(update_time,"timestamp")))); diff --git a/src/PlainSession.cpp b/src/PlainSession.cpp index 44755d59350af2bb1b7d27316260a3f124b26105..497768b473cb83982a3df3d9dd85d94dfb4af0f0 100644 --- a/src/PlainSession.cpp +++ b/src/PlainSession.cpp @@ -145,7 +145,7 @@ void PlainSession::startWriteResponse() m_strand.wrap(boost::bind(&PlainSession::handleWriteResponse, shared_from_this(), boost::asio::placeholders::error))); } - catch(std::runtime_error& ec) + catch(std::exception& ec) { ERROR_STREAM << "SSLSession::startWriteResponse() " << ec.what() << " from " << m_remoteEndpoint << endl; diff --git a/src/PlainSession.h b/src/PlainSession.h index 16dcbcd0b7274d1976943f48bc08d286af9c67f4..88f4431079b539cbee62204c39a50a734da0d58f 100644 --- a/src/PlainSession.h +++ b/src/PlainSession.h @@ -46,7 +46,7 @@ public: protected: //------------------------------------------------------------------------------ -// [Protected] Utilities methods +// [Protected] Request response methods //------------------------------------------------------------------------------ virtual void startReadRequestHeader(); diff --git a/src/ProtocolManager.cpp b/src/ProtocolManager.cpp index 5d0cbbd4470be7e6ad0c4315d667827876b3abe0..693379a6a125009126ff228f358211a5f6d63802 100644 --- a/src/ProtocolManager.cpp +++ b/src/ProtocolManager.cpp @@ -100,13 +100,13 @@ ResponseSP ProtocolManager::prepareAuthroisation(RequestSP request_sp) response_sp->set_type(Response::AUTHORIZATION); - Response::Authorization* auth_resp = response_sp->mutable_authorization(); + Response::Authorization* authResp = response_sp->mutable_authorization(); if(!m_isAuthorised) { - const Request::Authorization& auth_req = request_sp->authorization(); - std::string username = auth_req.username(); - std::string password = auth_req.password(); + const Request::Authorization& authReq = request_sp->authorization(); + std::string username = authReq.username(); + std::string password = authReq.password(); if(m_configuration_sp->isUserAuthorized(username, password)) { @@ -115,8 +115,8 @@ ResponseSP ProtocolManager::prepareAuthroisation(RequestSP request_sp) m_isAuthorised = true; - auth_resp->set_state(Response::Authorization::ACCEPTED); - auth_resp->set_status("Authorization accepted"); + authResp->set_state(Response::Authorization::ACCEPTED); + authResp->set_status("Authorization accepted"); } else { @@ -125,8 +125,8 @@ ResponseSP ProtocolManager::prepareAuthroisation(RequestSP request_sp) m_isAuthorised = false; - auth_resp->set_state(Response::Authorization::REJECTED); - auth_resp->set_status("Invalid username or password"); + authResp->set_state(Response::Authorization::REJECTED); + authResp->set_status("Invalid username or password"); } } else @@ -134,8 +134,8 @@ ResponseSP ProtocolManager::prepareAuthroisation(RequestSP request_sp) WARN_STREAM << "ProtocolManager::prepareAuthroisation() " << "Already authorized from " << m_remoteEndpoint << endl; - auth_resp->set_state(Response::Authorization::REJECTED); - auth_resp->set_status("Already authorized"); + authResp->set_state(Response::Authorization::REJECTED); + authResp->set_status("Already authorized"); } return response_sp; @@ -173,7 +173,7 @@ ResponseSP ProtocolManager::prepareValidation(RequestSP request_sp) std::stringstream errorStream; errorStream << "Table " << m_validatedSchema << "." << m_validatedTable << " not exists"; - throw soci::soci_error(errorStream.str()); + throw std::runtime_error(errorStream.str()); } if(validationReq.columns_size() != (int)informationList.size()) @@ -181,7 +181,7 @@ ResponseSP ProtocolManager::prepareValidation(RequestSP request_sp) std::stringstream errorStream; errorStream << "Table " << m_validatedSchema << "." << m_validatedTable << " has different columns size"; - throw soci::soci_error(errorStream.str()); + throw std::runtime_error(errorStream.str()); } for(int i=0; i" << columnName << " " + << column.type() << "<->" << columnType << " " + << column.nullable() << "<->" << isNullable << endl; #endif } } diff --git a/src/SSLSession.cpp b/src/SSLSession.cpp index d361d8e925aa627a2f6981a2448c76157a3aeb76..d1de097dfa8b83ad28d46d0fe82532b08e8b6cee 100644 --- a/src/SSLSession.cpp +++ b/src/SSLSession.cpp @@ -181,7 +181,7 @@ void SSLSession::startWriteResponse() m_strand.wrap(boost::bind(&SSLSession::handleWriteResponse, shared_from_this(), boost::asio::placeholders::error))); } - catch(std::runtime_error& ec) + catch(std::exception& ec) { ERROR_STREAM << "SSLSession::startWriteResponse() " << ec.what() << " from " << m_remoteEndpoint << endl; diff --git a/src/SSLSession.h b/src/SSLSession.h index 6020f15edaf0e13c0f51febdfaee817ecb0fb494..decc6cbb0a7b12a96ae4a4d9fef119cf29473126 100644 --- a/src/SSLSession.h +++ b/src/SSLSession.h @@ -51,12 +51,15 @@ public: protected: //------------------------------------------------------------------------------ -// [Protected] Utilities methods +// [Protected] SSL handshake initialization methods //------------------------------------------------------------------------------ virtual void startHandShake(); virtual void handleHandShake(const boost::system::error_code&); +//------------------------------------------------------------------------------ +// [Protected] Request response methods +//------------------------------------------------------------------------------ virtual void startReadRequestHeader(); virtual void startReadRequestBody(boost::uint32_t);