#ifndef DBMANAGER_H #define DBMANAGER_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace MetadataExporter_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 class 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(); //------------------------------------------------------------------------------ // [Public] Retrieve from information schema method //------------------------------------------------------------------------------ typedef boost::tuple< boost::optional, boost::optional, boost::optional > InformationTuple; typedef std::vector< InformationTuple > InformationList; virtual InformationList retrieveInformation(std::string, std::string) throw(soci::soci_error); //------------------------------------------------------------------------------ // [Public] Retrieve new tuple method //------------------------------------------------------------------------------ typedef boost::shared_ptr< soci::rowset > RowsetSP; virtual RowsetSP retrieveNewTuples(std::string, std::string, std::tm) throw(soci::soci_error, std::out_of_range); 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 */