Skip to content
Snippets Groups Projects
File_Receiver.h 1.42 KiB
Newer Older
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
Valerio Pastore committed
#pragma once

Valerio Pastore's avatar
Valerio Pastore committed
#include <Base_Receiver.h>
Valerio Pastore's avatar
Valerio Pastore committed
#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

Valerio Pastore's avatar
Valerio Pastore committed
namespace inaf::oasbo::Receivers {
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
Valerio Pastore committed
class FileReceiver: public BaseReceiver {
Valerio Pastore's avatar
Valerio Pastore committed
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;
	ssize_t filesize = 0;
	std::vector<std::string> filesToProcess;
	size_t filesCount = 0;
	int openNextFile();
Valerio Pastore's avatar
Valerio Pastore committed
	void resetPacket(PacketLib::BasePacket &pack, int bytes);
Valerio Pastore's avatar
Valerio Pastore committed
	std::string resolveEnvVar(std::string path);
Valerio Pastore's avatar
Valerio Pastore committed

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();
};
}