Skip to content
Snippets Groups Projects
File_Receiver.h 1.34 KiB
Newer Older
Valerio Pastore's avatar
Valerio Pastore committed
/*
 *
 *  Created on: Mar 1, 2021
 *      Author: astrisw
 */
#pragma once

#include <Base_Protocol.h>
#include <Base_Configurator.h>
#include <fstream>

Valerio Pastore's avatar
.  
Valerio Pastore committed
#ifndef RAW_FILES_PATH
#define RAW_FILES_PATH std::string(std::getenv("HOME")).append("/BIAS/config/RawTestFiles")
#endif
Valerio Pastore's avatar
Valerio Pastore committed

namespace inaf::oasbo::ConnectionProtocols {

class FileReceiver: public BaseProtocol {
protected:
	FileReceiver(std::string source, int rate);
	FileReceiver(std::string source);
Valerio Pastore's avatar
.  
Valerio Pastore committed
	FileReceiver();
Valerio Pastore's avatar
Valerio Pastore committed
	std::ifstream *ifile = nullptr;
	void resetPacket(PacketLib::BasePacket &pack, int bytes);

public:
	int rate;

	~FileReceiver();

	std::string getHost() override;
	void setHost(std::string host) override;

	int connectToClient() override;
	int closeConnectionToClient() override;
	bool isConnectedToClient() const override;
	int receiveFromClient(PacketLib::BasePacket&) override;

	friend class FileReceiverBuilder;
};
class FileReceiverBuilder {
protected:
	FileReceiver *rcv;
	std::string sourceFile;
public:
	std::string config_target { "filereceiver" };
	std::string source_key { "source" };
	std::string rate_key { "rate" };

Valerio Pastore's avatar
.  
Valerio Pastore committed
	FileReceiverBuilder();
Valerio Pastore's avatar
Valerio Pastore committed
	~FileReceiverBuilder();
	void reset();
	FileReceiverBuilder* configFrom(Configurators::BaseConfigurator &conf);
	FileReceiverBuilder* setSource(std::string source);
	FileReceiverBuilder* setRate(int rate);
	FileReceiver* getReceiver();
};
}