ParamGetSpeasyProxy.hh 3.43 KB
/*
 * ParamGetSpeasyProxy.hh
 *
 *  Created on: April 25, 2024
 *  Author: AKKODIS - Furkan
 */ 

#ifndef PARAMGETSPEASYPROXY_HH_
#define PARAMGETSPEASYPROXY_HH_

#include <set>
#include <string>
#include <boost/shared_ptr.hpp>
#include "ParamGet.hh"
#include "TimeStamp.hh"
#include "Pusher.hh"

using namespace AMDA::Parameters;

namespace AMDA {

namespace SpeasyProxyInterface {

//used class
class ParamData;

/**
 * @class ParamGetSpeasyProxy
 * @brief It is a DataWriter for a Parameter get from speasy proxy.
 */
class ParamGetSpeasyProxy: public ParamGet_CRTP<ParamGetSpeasyProxy>
{
public:

	/*
	 * @brief Constructor
	 */
	ParamGetSpeasyProxy(Parameter &parameter);

	ParamGetSpeasyProxy(const ParamGetSpeasyProxy &pParamGetSpeasyProxy, Parameter &parameter);

	/*
	 * @brief Destructor
	 */
	virtual ~ParamGetSpeasyProxy();

	/*
	 * @brief Get param id in speasy xml
	 */
	const std::string& getParamId() const
	{
		return _paramId;
	}

	/*
	 * @brief Set param id in speasy xml
	 */
	void setParamId(const char* paramId)
	{
		_paramId = paramId;
	}

	/**
	 *  @overload DataWriter::write - Write data in dataParam and return the number of data writed.
	 */
	virtual unsigned int write();

	/*
	 * @brief Get param type in speasy xml
	 */
	SpeasyProxyParamType getType()
	{
		return _type;
	}

	/*
	 * @brief Set param type in speasy xml
	 */
	void setType(SpeasyProxyParamType type)
	{
		_type = type;
	}

	/*
	 * @brief Get param dim1 size in speasy xml
	 */
	int getDim1(void)
	{
		return _dim1;
	}

	/*
	 * @brief Set param dim1 size in speasy xml
	 */
	void setDim1(int size)
	{
		_dim1 = size;
	}

	/*
	 * @brief Get param dim2 size in speasy xml
	 */
	int getDim2(void)
	{
		return _dim2;
	}

	/*
	 * @brief Set param dim2 size in speasy xml
	 */
	void setDim2(int size)
	{
		_dim2 = size;
	}

	/*
	 * @brief Get param min sampling in speasy xml
	 */
	double getMinSampling(void)
	{
		return _minSampling;
	}

	/*
	 * @brief Set param min sampling in speasy xml
	 */
	void setMinSampling(double minSampling)
	{
		_minSampling = minSampling;
	}

	// /*
	//  * @brief Get param max sampling in speasy xml
	//  */
	// double getMaxSampling(void)
	// {
	// 	return _maxSampling;
	// }

	// /*
	//  * @brief Set param max sampling in speasy xml
	//  */
	// void setMaxSampling(double maxSampling)
	// {
	// 	_maxSampling = maxSampling;
	// }

	/*
	 * @brief Init
	 */
	TimeStamp init();

	/**
	 * @overload DataWriter::updateInfo update parameter info in relation to the ParamGet
	 */
	virtual void updateInfo(Parameter & parameter);

protected:

	std::string readFile(const std::string& filename);


	std::string download(const std::string& pPath);


	/*
	 * @brief Local Param Id
	 */
	std::string _paramId;

	/*
	 * @brief Local Param type
	 */

	SpeasyProxyParamType _type;

	/*
	 * @brief Local Param dim1 size
	 */
	int _dim1;

	/*
	 * @brief Local Param dim2 size
	 */
	int _dim2;

	/*
	 * @brief Local Param min sampling
	 */
	double _minSampling;

	// /*
	//  * @brief Local Param max sampling
	//  */
	// double _maxSampling;


	SpeasyProxyContainerType _container;
	
	 /*
	  * @brief Time of xml file or 0
	  */
	TimeStamp _timeStamp;

	TimeIntervalList::iterator _currentInterval;

	/*
	 * @brief Data pusher
	 */
	PusherBase *_pusher;

};

typedef boost::shared_ptr<ParamGetSpeasyProxy> ParamGetSpeasyProxySPtr;
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream);

} /* namespace SpeasyProxyInterface */
} /* namespace AMDA */
#endif /* PARAMGETSPEASYPROXY_HH_ */