Commit 62270bca authored by Marco De Marco's avatar Marco De Marco
Browse files

Protobuf request response classes added, database manager commented

parent d331bf55
Loading
Loading
Loading
Loading

proto/Request.proto

0 → 100644
+33 −0
Original line number Original line Diff line number Diff line
package DataExporter_ns;

message Request
{
	//Request type descriptor

	enum Type
	{
		AUTHORIZATION = 0;
		DATA = 1;
	}

	required Type type = 1;

	//Authorization request

	message Authorization
	{
		required string username = 1;
		required string password = 2;
	}

	optional Authorization authorization = 2;

	//Data request
	
	message Data
	{
		required string file_path = 1;
		required int32 file_version = 2;
		required string file_name = 3;
	}
}

proto/Response.proto

0 → 100644
+46 −0
Original line number Original line Diff line number Diff line
package DataExporter_ns;

message Response
{
	//Response type descriptor

	enum Type
	{
		AUTHORIZATION = 0;
		DATA = 1;
	}

	required Type type = 1;

	//Authorization response

	message Authorization
	{
		enum State
		{
			ACCEPTED = 0;
			REJECTED = 1;
		}
		
		required State state = 1;
		required string status = 2;
	}

	optional Authorization authorization = 2;

	//Data response

	message Data
	{
		enum State
		{
			ACCEPTED = 0;
			REJECTED = 1;
		}
		
		required State state = 1;
		required string status = 2;

		required uint64 size = 3;
	}
}
+37 −33
Original line number Original line Diff line number Diff line
@@ -31,17 +31,19 @@ protected:
	Configuration(std::string certificateFile, std::string privateKeyFile,
	Configuration(std::string certificateFile, std::string privateKeyFile,
        std::string dHTempFile, ExportedTablesMap exportedTablesMap,
        std::string dHTempFile, ExportedTablesMap exportedTablesMap,
        AuthorisedUsersMap authorisedUsersMap, std::string storagePath,
        AuthorisedUsersMap authorisedUsersMap, std::string storagePath,
        std::string localHost, unsigned int localPort, unsigned int workerNumber,
        std::string localHost, unsigned int localPort, unsigned int workerNumber) :
        std::string databaseHost, unsigned int databasePort,
//        std::string localHost, unsigned int localPort, unsigned int workerNumber,
        std::string databaseUsername, std::string databasePassword,
//        std::string databaseHost, unsigned int databasePort,
        unsigned int databaseConnectionNumber) :
//        std::string databaseUsername, std::string databasePassword,
//        unsigned int databaseConnectionNumber) :
        m_certificateFile(certificateFile), m_privateKeyFile(privateKeyFile),
        m_certificateFile(certificateFile), m_privateKeyFile(privateKeyFile),
        m_dHTempFile(dHTempFile), m_exportedTablesMap(exportedTablesMap),
        m_dHTempFile(dHTempFile), m_exportedTablesMap(exportedTablesMap),
        m_authorisedUsersMap(authorisedUsersMap), m_storagePath(storagePath),
        m_authorisedUsersMap(authorisedUsersMap), m_storagePath(storagePath),
         m_localHost(localHost), m_localPort(localPort), m_workerNumber(workerNumber),
        m_localHost(localHost), m_localPort(localPort), m_workerNumber(workerNumber) {}
        m_databaseHost(databaseHost), m_databasePort(databasePort),
//        m_localHost(localHost), m_localPort(localPort), m_workerNumber(workerNumber),
        m_databaseUsername(databaseUsername), m_databasePassword(databasePassword),
//        m_databaseHost(databaseHost), m_databasePort(databasePort),
        m_databaseConnectionNumber(databaseConnectionNumber) {}
//        m_databaseUsername(databaseUsername), m_databasePassword(databasePassword),
//        m_databaseConnectionNumber(databaseConnectionNumber) {}


	virtual ~Configuration() {}
	virtual ~Configuration() {}


@@ -61,15 +63,17 @@ public:
        std::string privateKeyFile, std::string dHTempFile,
        std::string privateKeyFile, std::string dHTempFile,
        ExportedTablesMap exportedTablesMap, AuthorisedUsersMap authorisedUsersMap,
        ExportedTablesMap exportedTablesMap, AuthorisedUsersMap authorisedUsersMap,
        std::string storagePath, std::string localHost,
        std::string storagePath, std::string localHost,
         unsigned int localPort, unsigned int workerNumber,
        unsigned int localPort, unsigned int workerNumber)
        std::string databaseHost, unsigned int databasePort,
//        unsigned int localPort, unsigned int workerNumber,
        std::string databaseUsername, std::string databasePassword,
//        std::string databaseHost, unsigned int databasePort,
        unsigned int databaseConnectionNumber)
//        std::string databaseUsername, std::string databasePassword,
//        unsigned int databaseConnectionNumber)
	{
	{
		Configuration::SP c_sp(new Configuration(certificateFile, privateKeyFile,
		Configuration::SP c_sp(new Configuration(certificateFile, privateKeyFile,
            dHTempFile, exportedTablesMap, authorisedUsersMap, storagePath,
            dHTempFile, exportedTablesMap, authorisedUsersMap, storagePath,
            localHost, localPort, workerNumber, databaseHost, databasePort,
            localHost, localPort, workerNumber),
            databaseUsername, databasePassword, databaseConnectionNumber),
//            localHost, localPort, workerNumber, databaseHost, databasePort,
//            databaseUsername, databasePassword, databaseConnectionNumber),
            Configuration::Deleter());
            Configuration::Deleter());


		return c_sp;
		return c_sp;
@@ -87,11 +91,11 @@ public:
	std::string getLocalHost() const { return m_localHost; }
	std::string getLocalHost() const { return m_localHost; }
	unsigned int getLocalPort() const { return m_localPort; }
	unsigned int getLocalPort() const { return m_localPort; }
	unsigned int getWorkerNumber() const { return m_workerNumber; }
	unsigned int getWorkerNumber() const { return m_workerNumber; }
	std::string getDatabaseHost() const { return m_databaseHost; }
//	std::string getDatabaseHost() const { return m_databaseHost; }
	unsigned int getDatabasePort() const { return m_databasePort; }
//	unsigned int getDatabasePort() const { return m_databasePort; }
	std::string getDatabaseUsername() const { return m_databaseUsername; }
//	std::string getDatabaseUsername() const { return m_databaseUsername; }
	std::string getDatabasePassword() const { return m_databasePassword; }
//	std::string getDatabasePassword() const { return m_databasePassword; }
    unsigned int getDatabaseConnectionNumber() const { return m_databaseConnectionNumber; }
//    unsigned int getDatabaseConnectionNumber() const { return m_databaseConnectionNumber; }


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//	[Public] Utilities methods
//	[Public] Utilities methods
@@ -155,20 +159,20 @@ protected:
	//Number of threads that call io service run methods
	//Number of threads that call io service run methods
	const unsigned int m_workerNumber;
	const unsigned int m_workerNumber;


	//Metadata database host
//	//Metadata database host
	const std::string m_databaseHost;
//	const std::string m_databaseHost;

//
	//Metadata database port
//	//Metadata database port
	const unsigned int m_databasePort;
//	const unsigned int m_databasePort;

//
	//Metadata database login username
//	//Metadata database login username
	const std::string m_databaseUsername;
//	const std::string m_databaseUsername;

//
	//Metadata database login password
//	//Metadata database login password
	const std::string m_databasePassword;
//	const std::string m_databasePassword;

//
    //Metadata database connections number
//    //Metadata database connections number
    const unsigned int m_databaseConnectionNumber;
//    const unsigned int m_databaseConnectionNumber;
};
};


}   //End of namespace
}   //End of namespace
+81 −80
Original line number Original line Diff line number Diff line
@@ -208,11 +208,11 @@ void DataExporter::get_device_property()
	dev_prop.push_back(Tango::DbDatum("LocalPort"));
	dev_prop.push_back(Tango::DbDatum("LocalPort"));
	dev_prop.push_back(Tango::DbDatum("WorkerNumber"));
	dev_prop.push_back(Tango::DbDatum("WorkerNumber"));
	dev_prop.push_back(Tango::DbDatum("EnableSSL"));
	dev_prop.push_back(Tango::DbDatum("EnableSSL"));
	dev_prop.push_back(Tango::DbDatum("DatabaseHost"));
//	dev_prop.push_back(Tango::DbDatum("DatabaseHost"));
	dev_prop.push_back(Tango::DbDatum("DatabasePort"));
//	dev_prop.push_back(Tango::DbDatum("DatabasePort"));
	dev_prop.push_back(Tango::DbDatum("DatabaseUsername"));
//	dev_prop.push_back(Tango::DbDatum("DatabaseUsername"));
	dev_prop.push_back(Tango::DbDatum("DatabasePassword"));
//	dev_prop.push_back(Tango::DbDatum("DatabasePassword"));
	dev_prop.push_back(Tango::DbDatum("DatabaseConnectionNumber"));
//	dev_prop.push_back(Tango::DbDatum("DatabaseConnectionNumber"));


	//	is there at least one property to be read ?
	//	is there at least one property to be read ?
	if (dev_prop.size()>0)
	if (dev_prop.size()>0)
@@ -337,60 +337,60 @@ void DataExporter::get_device_property()
		//	And try to extract EnableSSL value from database
		//	And try to extract EnableSSL value from database
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  enableSSL;
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  enableSSL;


		//	Try to initialize DatabaseHost from class property
//		//	Try to initialize DatabaseHost from class property
		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
//		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
		if (cl_prop.is_empty()==false)	cl_prop  >>  databaseHost;
//		if (cl_prop.is_empty()==false)	cl_prop  >>  databaseHost;
		else {
//		else {
			//	Try to initialize DatabaseHost from default device value
//			//	Try to initialize DatabaseHost from default device value
			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
//			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
			if (def_prop.is_empty()==false)	def_prop  >>  databaseHost;
//			if (def_prop.is_empty()==false)	def_prop  >>  databaseHost;
		}
//		}
		//	And try to extract DatabaseHost value from database
//		//	And try to extract DatabaseHost value from database
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databaseHost;
//		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databaseHost;

//
		//	Try to initialize DatabasePort from class property
//		//	Try to initialize DatabasePort from class property
		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
//		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
		if (cl_prop.is_empty()==false)	cl_prop  >>  databasePort;
//		if (cl_prop.is_empty()==false)	cl_prop  >>  databasePort;
		else {
//		else {
			//	Try to initialize DatabasePort from default device value
//			//	Try to initialize DatabasePort from default device value
			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
//			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
			if (def_prop.is_empty()==false)	def_prop  >>  databasePort;
//			if (def_prop.is_empty()==false)	def_prop  >>  databasePort;
		}
//		}
		//	And try to extract DatabasePort value from database
//		//	And try to extract DatabasePort value from database
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databasePort;
//		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databasePort;

//
		//	Try to initialize DatabaseUsername from class property
//		//	Try to initialize DatabaseUsername from class property
		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
//		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
		if (cl_prop.is_empty()==false)	cl_prop  >>  databaseUsername;
//		if (cl_prop.is_empty()==false)	cl_prop  >>  databaseUsername;
		else {
//		else {
			//	Try to initialize DatabaseUsername from default device value
//			//	Try to initialize DatabaseUsername from default device value
			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
//			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
			if (def_prop.is_empty()==false)	def_prop  >>  databaseUsername;
//			if (def_prop.is_empty()==false)	def_prop  >>  databaseUsername;
		}
//		}
		//	And try to extract DatabaseUsername value from database
//		//	And try to extract DatabaseUsername value from database
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databaseUsername;
//		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databaseUsername;

//
		//	Try to initialize DatabasePassword from class property
//		//	Try to initialize DatabasePassword from class property
		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
//		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
		if (cl_prop.is_empty()==false)	cl_prop  >>  databasePassword;
//		if (cl_prop.is_empty()==false)	cl_prop  >>  databasePassword;
		else {
//		else {
			//	Try to initialize DatabasePassword from default device value
//			//	Try to initialize DatabasePassword from default device value
			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
//			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
			if (def_prop.is_empty()==false)	def_prop  >>  databasePassword;
//			if (def_prop.is_empty()==false)	def_prop  >>  databasePassword;
		}
//		}
		//	And try to extract DatabasePassword value from database
//		//	And try to extract DatabasePassword value from database
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databasePassword;
//		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databasePassword;

//
		//	Try to initialize DatabaseConnectionNumber from class property
//		//	Try to initialize DatabaseConnectionNumber from class property
		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
//		cl_prop = ds_class->get_class_property(dev_prop[++i].name);
		if (cl_prop.is_empty()==false)	cl_prop  >>  databaseConnectionNumber;
//		if (cl_prop.is_empty()==false)	cl_prop  >>  databaseConnectionNumber;
		else {
//		else {
			//	Try to initialize DatabaseConnectionNumber from default device value
//			//	Try to initialize DatabaseConnectionNumber from default device value
			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
//			def_prop = ds_class->get_default_device_property(dev_prop[i].name);
			if (def_prop.is_empty()==false)	def_prop  >>  databaseConnectionNumber;
//			if (def_prop.is_empty()==false)	def_prop  >>  databaseConnectionNumber;
		}
//		}
		//	And try to extract DatabaseConnectionNumber value from database
//		//	And try to extract DatabaseConnectionNumber value from database
		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databaseConnectionNumber;
//		if (dev_prop[i].is_empty()==false)	dev_prop[i]  >>  databaseConnectionNumber;


	}
	}


@@ -440,26 +440,27 @@ void DataExporter::get_device_property()
        if(workerNumber<1 || workerNumber>MAX_WORKER_NUMBER)
        if(workerNumber<1 || workerNumber>MAX_WORKER_NUMBER)
            throw(invalid_argument("WorkerNumber property out of range or not defined"));
            throw(invalid_argument("WorkerNumber property out of range or not defined"));


        if(databaseHost.empty())
//        if(databaseHost.empty())
            throw(invalid_argument("DatabaseHost property is empty or not defined"));
//            throw(invalid_argument("DatabaseHost property is empty or not defined"));

//
        if(databasePort<1 || databasePort>MAX_DB_PORT)
//        if(databasePort<1 || databasePort>MAX_DB_PORT)
            throw(invalid_argument("DatabasePort property out of range or not defined"));
//            throw(invalid_argument("DatabasePort property out of range or not defined"));

//
        if(databaseUsername.empty())
//        if(databaseUsername.empty())
            throw(invalid_argument("DatabaseUsername property is empty or not defined"));
//            throw(invalid_argument("DatabaseUsername property is empty or not defined"));

//
        if(databasePassword.empty())
//        if(databasePassword.empty())
            throw(invalid_argument("DatabasePassword property is empty or not defined"));
//            throw(invalid_argument("DatabasePassword property is empty or not defined"));

//
        if(databaseConnectionNumber<1 || databaseConnectionNumber>MAX_DB_CONNECTION_NUMBER)
//        if(databaseConnectionNumber<1 || databaseConnectionNumber>MAX_DB_CONNECTION_NUMBER)
            throw(invalid_argument("DatabaseConnectionNumber property out of range or not defined"));
//            throw(invalid_argument("DatabaseConnectionNumber property out of range or not defined"));


        m_configuration_sp = Configuration::create(certificateFile,
        m_configuration_sp = Configuration::create(certificateFile,
            privateKeyFile, dHTempFile, exportedTablesMap, authorisedUsersMap,
            privateKeyFile, dHTempFile, exportedTablesMap, authorisedUsersMap,
            storagePath, localHost, localPort, workerNumber,
            storagePath, localHost, localPort, workerNumber);
            databaseHost, databasePort, databaseUsername, databasePassword,
//            storagePath, localHost, localPort, workerNumber,
            databaseConnectionNumber);
//            databaseHost, databasePort, databaseUsername, databasePassword,
//            databaseConnectionNumber);
    }
    }
    catch(invalid_argument& ex)
    catch(invalid_argument& ex)
    {
    {
+12 −12
Original line number Original line Diff line number Diff line
@@ -112,16 +112,16 @@ public:
	Tango::DevUShort	workerNumber;
	Tango::DevUShort	workerNumber;
	//	EnableSSL:	Enable or disable SSL connections
	//	EnableSSL:	Enable or disable SSL connections
	Tango::DevBoolean	enableSSL;
	Tango::DevBoolean	enableSSL;
	//	DatabaseHost:	Metadata database host
//	//	DatabaseHost:	Metadata database host
	string	databaseHost;
//	string	databaseHost;
	//	DatabasePort:	Metadata database port
//	//	DatabasePort:	Metadata database port
	Tango::DevULong	databasePort;
//	Tango::DevULong	databasePort;
	//	DatabaseUsername:	Metadata database login username
//	//	DatabaseUsername:	Metadata database login username
	string	databaseUsername;
//	string	databaseUsername;
	//	DatabasePassword:	Metadata database login password
//	//	DatabasePassword:	Metadata database login password
	string	databasePassword;
//	string	databasePassword;
	//	DatabaseConnectionNumber:	Number of database connection created
//	//	DatabaseConnectionNumber:	Number of database connection created
	Tango::DevUShort	databaseConnectionNumber;
//	Tango::DevUShort	databaseConnectionNumber;




//	Constructors and destructors
//	Constructors and destructors
Loading