Skip to content
Base_Protocol.h 1.22 KiB
Newer Older
Valerio Pastore's avatar
Valerio Pastore committed
/*
 *
 *  Created on: Mar 1, 2021
 *      Author: astrisw
 *
 */

#ifndef BASEPROTOCOL_H_
#define BASEPROTOCOL_H_

#include <iostream>
#include <netinet/in.h>

Valerio Pastore's avatar
Valerio Pastore committed
#include <PacketLib/Base_Packet.h>
Valerio Pastore's avatar
Valerio Pastore committed

namespace inaf::oasbo::ConnectionProtocols{
Valerio Pastore's avatar
Valerio Pastore committed
/*
 * class BaseSocket
 * Implementation of a socket that allows to communicate with the sender.
 * This parent class must be inherited in order to implement your own protocol,
 * methods connect() and readPacket must be overridden
 *
 * @member field host: address of the host machine
 * @member field port: listen port
 * @member field protocol: communication protocol.
 */
class BaseProtocol{
protected:
	std::string host;
	int port;
public:

	std::string getHost(){return host;}
	int getPort(){return port;}
	void setHost(std::string host){ this->host = host;}
	void setPort(int port){this->port = port;}

	virtual int connectToClient()=0;
	virtual int connectToServer()=0;

	template<typename Value, template<typename> typename Container>
	int rcvPacketFromCli(PacketLib::BasePacket<Container,Value> &);
	template<typename Value, template<typename> typename Container>
	int sendPacketToSrv(PacketLib::BasePacket<Container,Value> &);
	virtual ~BaseProtocol() = default;
Valerio Pastore's avatar
Valerio Pastore committed
};
Valerio Pastore's avatar
Valerio Pastore committed
#endif /* BASEPROTOCOL_H_ */