Loading proto/Response.proto +7 −2 Original line number Diff line number Diff line Loading @@ -4,8 +4,13 @@ message Response { enum State { ACCEPTED = 0; REJECTED = 1; REQUEST_ACCEPTED = 0; ACCESS_DENY = 1; TABLE_NOT_EXPORTED = 2; METADATA_NOT_FOUND = 3; FILE_NOT_DOWNLOADED = 4; FILE_NOT_FOUND = 5; GENERIC_ERROR = 6; } required State state = 1; Loading src/DBManager.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ DBManager::DBManager(Tango::DeviceImpl* deviceImpl_p, } //============================================================================== // DBManager::DBManager() // DBManager::~DBManager() //============================================================================== DBManager::~DBManager() { Loading @@ -27,7 +27,7 @@ DBManager::~DBManager() } //============================================================================== // DBManager::DBManager() // DBManager::create() //============================================================================== DBManager::SP DBManager::create(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_sp) Loading Loading @@ -82,7 +82,7 @@ void DBManager::disconnect() //============================================================================== DBManager::FileTuple DBManager::retrieveFileInfo(std::string schema, std::string table, int version, std::string name) throw(soci::soci_error, std::runtime_error) throw(soci::soci_error) { DEBUG_STREAM << "DBManager::retrieveFileInfo()" << endl; Loading @@ -108,7 +108,7 @@ DBManager::FileTuple DBManager::retrieveFileInfo(std::string schema, std::stringstream errorStream; errorStream << "Table " << schema << "." << table << " does not contain file " << name << " version " << version; throw std::runtime_error(errorStream.str()); throw soci::soci_error(errorStream.str()); } if(fileTupleList.size()>1) Loading @@ -116,7 +116,7 @@ DBManager::FileTuple DBManager::retrieveFileInfo(std::string schema, std::stringstream errorStream; errorStream << "Table " << schema << "." << table << " has duplicate for file " << name << " version " << version; throw std::runtime_error(errorStream.str()); throw soci::soci_error(errorStream.str()); } return fileTupleList.at(0); Loading src/DBManager.h +2 −2 Original line number Diff line number Diff line Loading @@ -67,8 +67,8 @@ public: typedef boost::tuple< boost::optional<std::string>, boost::optional<std::string> > FileTuple; virtual FileTuple retrieveFileInfo(std::string, std::string, int, std::string) throw(soci::soci_error, std::runtime_error); virtual FileTuple retrieveFileInfo(std::string, std::string, int, std::string) throw(soci::soci_error); protected: //------------------------------------------------------------------------------ Loading src/FileManager.cpp 0 → 100644 +82 −0 Original line number Diff line number Diff line #include <FileManager.h> #include <stdexcept> namespace DataExporter_ns { //============================================================================== // FileManager::FileManager() //============================================================================== FileManager::FileManager(Tango::DeviceImpl* deviceImpl_p, boost::filesystem::path& path) : Tango::LogAdapter(deviceImpl_p) { DEBUG_STREAM << "FileManager::FileManager()" << endl; m_inputFileStream.open(path.string(), std::ios::binary | std::ios::ate); m_inputFileSize = m_inputFileStream.tellg(); m_inputFileStream.seekg(0, m_inputFileStream.beg); } //============================================================================== // FileManager::~FileManager() //============================================================================== FileManager::~FileManager() { DEBUG_STREAM << "FileManager::~FileManager()" << endl; m_inputFileStream.close(); } //============================================================================== // FileManager::create() //============================================================================== FileManager::SP FileManager::create(Tango::DeviceImpl* deviceImpl_p, boost::filesystem::path& path) { FileManager::SP d_sp(new FileManager(deviceImpl_p, path), FileManager::Deleter()); return d_sp; } //============================================================================== // FileManager::isOpen() //============================================================================== bool FileManager::isOpen() { return m_inputFileStream.is_open(); } //============================================================================== // FileManager::isCompleted() //============================================================================== bool FileManager::isCompleted() { return m_inputFileStream.tellg() >= m_inputFileSize; } //============================================================================== // FileManager::read() //============================================================================== void FileManager::read(std::vector<char>& writeBuff) throw(std::runtime_error) { if(m_inputFileStream.tellg() >= m_inputFileSize) throw std::runtime_error("Already completed"); int leftToRead = m_inputFileSize - m_inputFileStream.tellg(); int bufferSize = 0; if(leftToRead < BUFFER_SIZE) bufferSize = leftToRead; else bufferSize = BUFFER_SIZE; writeBuff.resize(bufferSize); m_inputFileStream.read(&writeBuff[0], bufferSize); } } src/FileManager.h 0 → 100644 +68 −0 Original line number Diff line number Diff line #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <Configuration.h> #include <tango.h> #include <boost/filesystem.hpp> namespace DataExporter_ns { class FileManager : public Tango::LogAdapter { public: //------------------------------------------------------------------------------ // [Public] Shared pointer typedef //------------------------------------------------------------------------------ typedef boost::shared_ptr<FileManager> SP; protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ FileManager(Tango::DeviceImpl*, boost::filesystem::path&); virtual ~FileManager(); class Deleter; friend Deleter; class Deleter { public: void operator()(FileManager* d) { delete d; } }; public: //------------------------------------------------------------------------------ // [Public] Class creation method //------------------------------------------------------------------------------ static FileManager::SP create(Tango::DeviceImpl*, boost::filesystem::path&); //------------------------------------------------------------------------------ // [Public] Input stream methods //------------------------------------------------------------------------------ virtual bool isOpen(); virtual bool isCompleted(); virtual void read(std::vector<char>&) throw(std::runtime_error); protected: //------------------------------------------------------------------------------ // [Protected] Class variables //------------------------------------------------------------------------------ //Input file size int m_inputFileSize; //Input file stream std::ifstream m_inputFileStream; //Read buffer size const int BUFFER_SIZE = 1024; }; } //End of namespace #endif /* FILEMANAGER_H */ Loading
proto/Response.proto +7 −2 Original line number Diff line number Diff line Loading @@ -4,8 +4,13 @@ message Response { enum State { ACCEPTED = 0; REJECTED = 1; REQUEST_ACCEPTED = 0; ACCESS_DENY = 1; TABLE_NOT_EXPORTED = 2; METADATA_NOT_FOUND = 3; FILE_NOT_DOWNLOADED = 4; FILE_NOT_FOUND = 5; GENERIC_ERROR = 6; } required State state = 1; Loading
src/DBManager.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ DBManager::DBManager(Tango::DeviceImpl* deviceImpl_p, } //============================================================================== // DBManager::DBManager() // DBManager::~DBManager() //============================================================================== DBManager::~DBManager() { Loading @@ -27,7 +27,7 @@ DBManager::~DBManager() } //============================================================================== // DBManager::DBManager() // DBManager::create() //============================================================================== DBManager::SP DBManager::create(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_sp) Loading Loading @@ -82,7 +82,7 @@ void DBManager::disconnect() //============================================================================== DBManager::FileTuple DBManager::retrieveFileInfo(std::string schema, std::string table, int version, std::string name) throw(soci::soci_error, std::runtime_error) throw(soci::soci_error) { DEBUG_STREAM << "DBManager::retrieveFileInfo()" << endl; Loading @@ -108,7 +108,7 @@ DBManager::FileTuple DBManager::retrieveFileInfo(std::string schema, std::stringstream errorStream; errorStream << "Table " << schema << "." << table << " does not contain file " << name << " version " << version; throw std::runtime_error(errorStream.str()); throw soci::soci_error(errorStream.str()); } if(fileTupleList.size()>1) Loading @@ -116,7 +116,7 @@ DBManager::FileTuple DBManager::retrieveFileInfo(std::string schema, std::stringstream errorStream; errorStream << "Table " << schema << "." << table << " has duplicate for file " << name << " version " << version; throw std::runtime_error(errorStream.str()); throw soci::soci_error(errorStream.str()); } return fileTupleList.at(0); Loading
src/DBManager.h +2 −2 Original line number Diff line number Diff line Loading @@ -67,8 +67,8 @@ public: typedef boost::tuple< boost::optional<std::string>, boost::optional<std::string> > FileTuple; virtual FileTuple retrieveFileInfo(std::string, std::string, int, std::string) throw(soci::soci_error, std::runtime_error); virtual FileTuple retrieveFileInfo(std::string, std::string, int, std::string) throw(soci::soci_error); protected: //------------------------------------------------------------------------------ Loading
src/FileManager.cpp 0 → 100644 +82 −0 Original line number Diff line number Diff line #include <FileManager.h> #include <stdexcept> namespace DataExporter_ns { //============================================================================== // FileManager::FileManager() //============================================================================== FileManager::FileManager(Tango::DeviceImpl* deviceImpl_p, boost::filesystem::path& path) : Tango::LogAdapter(deviceImpl_p) { DEBUG_STREAM << "FileManager::FileManager()" << endl; m_inputFileStream.open(path.string(), std::ios::binary | std::ios::ate); m_inputFileSize = m_inputFileStream.tellg(); m_inputFileStream.seekg(0, m_inputFileStream.beg); } //============================================================================== // FileManager::~FileManager() //============================================================================== FileManager::~FileManager() { DEBUG_STREAM << "FileManager::~FileManager()" << endl; m_inputFileStream.close(); } //============================================================================== // FileManager::create() //============================================================================== FileManager::SP FileManager::create(Tango::DeviceImpl* deviceImpl_p, boost::filesystem::path& path) { FileManager::SP d_sp(new FileManager(deviceImpl_p, path), FileManager::Deleter()); return d_sp; } //============================================================================== // FileManager::isOpen() //============================================================================== bool FileManager::isOpen() { return m_inputFileStream.is_open(); } //============================================================================== // FileManager::isCompleted() //============================================================================== bool FileManager::isCompleted() { return m_inputFileStream.tellg() >= m_inputFileSize; } //============================================================================== // FileManager::read() //============================================================================== void FileManager::read(std::vector<char>& writeBuff) throw(std::runtime_error) { if(m_inputFileStream.tellg() >= m_inputFileSize) throw std::runtime_error("Already completed"); int leftToRead = m_inputFileSize - m_inputFileStream.tellg(); int bufferSize = 0; if(leftToRead < BUFFER_SIZE) bufferSize = leftToRead; else bufferSize = BUFFER_SIZE; writeBuff.resize(bufferSize); m_inputFileStream.read(&writeBuff[0], bufferSize); } }
src/FileManager.h 0 → 100644 +68 −0 Original line number Diff line number Diff line #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <Configuration.h> #include <tango.h> #include <boost/filesystem.hpp> namespace DataExporter_ns { class FileManager : public Tango::LogAdapter { public: //------------------------------------------------------------------------------ // [Public] Shared pointer typedef //------------------------------------------------------------------------------ typedef boost::shared_ptr<FileManager> SP; protected: //------------------------------------------------------------------------------ // [Protected] Constructor destructor deleter //------------------------------------------------------------------------------ FileManager(Tango::DeviceImpl*, boost::filesystem::path&); virtual ~FileManager(); class Deleter; friend Deleter; class Deleter { public: void operator()(FileManager* d) { delete d; } }; public: //------------------------------------------------------------------------------ // [Public] Class creation method //------------------------------------------------------------------------------ static FileManager::SP create(Tango::DeviceImpl*, boost::filesystem::path&); //------------------------------------------------------------------------------ // [Public] Input stream methods //------------------------------------------------------------------------------ virtual bool isOpen(); virtual bool isCompleted(); virtual void read(std::vector<char>&) throw(std::runtime_error); protected: //------------------------------------------------------------------------------ // [Protected] Class variables //------------------------------------------------------------------------------ //Input file size int m_inputFileSize; //Input file stream std::ifstream m_inputFileStream; //Read buffer size const int BUFFER_SIZE = 1024; }; } //End of namespace #endif /* FILEMANAGER_H */