Newer
Older
/*
*
* Created on: Mar 1, 2021
* Author: astrisw
*
*/
#ifndef BASEPROTOCOL_H_
#define BASEPROTOCOL_H_
#include <iostream>
#include <netinet/in.h>
#include <Base_Packet.h>
namespace inaf::oasbo::ConnectionProtocols{
/*
* 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;