ParamGetSpeasyProxy.hh 2.05 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 local base
	 */
	const std::string& getParamId() const
	{
		return _paramId;
	}

	/*
	 * @brief Set param id in local base
	 */
	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();

	/*
	 * @overload DataWriter::getMinSampling
	 */
	virtual double getMinSampling();

	/*
	 * @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;

	SpeasyProxyParamType _type;

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

	/*
	 * @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_ */