Commit 2c738a6e authored by Marco De Marco's avatar Marco De Marco
Browse files

End of day commit, not completed

parent b77078dd
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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;
+5 −5
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ DBManager::DBManager(Tango::DeviceImpl* deviceImpl_p,
}

//==============================================================================
//      DBManager::DBManager()
//      DBManager::~DBManager()
//==============================================================================
DBManager::~DBManager()
{
@@ -27,7 +27,7 @@ DBManager::~DBManager()
}

//==============================================================================
//      DBManager::DBManager()
//      DBManager::create()
//==============================================================================
DBManager::SP DBManager::create(Tango::DeviceImpl* deviceImpl_p,
    Configuration::SP configuration_sp)
@@ -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;

@@ -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)
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -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:
//------------------------------------------------------------------------------

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