Skip to content
Snippets Groups Projects
Select Git revision
  • e28aa4c602d6541c59ed040d6a73cb8ecaa547b2
  • master default
  • nodeCollections
  • immutable
  • cleanup
  • v0.0.1
6 results

MoveService.java

Blame
  • DBManager.h 3.13 KiB
    #ifndef DBMANAGER_H
    #define	DBMANAGER_H
    
    #include <Configuration.h>
    
    #include <tango.h>
    
    #include <ctime>
    
    #include <boost/tuple/tuple.hpp>
    #include <boost/optional/optional.hpp>
    #include <boost/scoped_ptr.hpp>
    #include <boost/thread/mutex.hpp>
    
    #include <soci/soci.h>
    #include <soci/error.h>
    #include <soci/row.h>
    #include <soci/rowset.h>
    #include <soci/boost-tuple.h>
    #include <soci/boost-optional.h>
    #include <soci/session.h>
    #include <soci/connection-pool.h>
    
    namespace MetadataExporter_ns
    {
    
    class DBManager : public Tango::LogAdapter
    {
    public:
    //------------------------------------------------------------------------------
    //  [Public] Shared pointer typedef
    //------------------------------------------------------------------------------
        typedef boost::shared_ptr<DBManager> 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();
    
    //------------------------------------------------------------------------------
    //  [Public] Retrieve information schema method
    //------------------------------------------------------------------------------
        typedef boost::tuple< boost::optional<std::string>, boost::optional<std::string>,
            boost::optional<std::string> > InformationTuple;
    
        typedef std::vector< InformationTuple > InformationList;
    
        virtual InformationList retrieveInformation(std::string,
            std::string) throw(soci::soci_error);
    
    //------------------------------------------------------------------------------
    //  [Public] Search new tuple method
    //------------------------------------------------------------------------------
        typedef std::vector<soci::row> MetadataList;
    
        virtual MetadataList retrieveNewTuples(std::string, std::string,
            std::tm) throw(soci::soci_error);
    
    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<soci::connection_pool> m_connectionPool_sp;
    };
    
    }   //End of namespace
    
    #endif	/* DBMANAGER_H */