#pragma once
#include <myapp/logging/logger.h>
#include <memory>
#include <string>
#include "rawdata.h"

namespace myapp::modbus {

class raw_tcp_client
{
public:
	static std::shared_ptr<raw_tcp_client> create(
		std::shared_ptr<logging::logger>,
		std::string const& connection_string);

	virtual ~raw_tcp_client() = default;

	virtual void connect() = 0;

	virtual std::unique_ptr<raw_data> request(raw_data&) = 0;
};

} /* namespace myapp::modbus */
