Skip to content
Snippets Groups Projects
File_Receiver.h 1.22 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>


namespace inaf::oasbo::ConnectionProtocols {

class FileReceiver: public BaseProtocol {
protected:
	FileReceiver(std::string source, int rate);
	FileReceiver(std::string source);
	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" };

	FileReceiverBuilder(std::string source);
	~FileReceiverBuilder();
	void reset();
	FileReceiverBuilder* configFrom(Configurators::BaseConfigurator &conf);
	FileReceiverBuilder* setSource(std::string source);
	FileReceiverBuilder* setRate(int rate);
	FileReceiver* getReceiver();
};
}