Symulacja NAT na przedmiot Symulacje Komputerowe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

66 lines
1.5 KiB

/**
* @file Peer.h
*
* Created on: 17.01.2017
* @author Piotr Dergun
*/
#ifndef PEER_H_
#define PEER_H_
#include "common.h"
#include "Node.h"
#include "Simulation.h"
class Peer : public Node
{
/** flaga definiująca czy węzeł jest seedem (true) */
bool sender;
/** źródłowy port węzła */
int srcPort;
/** adres IP drugiej strony */
string remoteIp;
/** port drugiej strony */
int remotePort;
/** numer części danych pobrany/odebrany */
int partId;
/** wskaźnik do obiektu symulacji w celu pisania w jego logu */
Simulation *sim;
public:
Peer();
Peer(string hostname, string ip, string mask, string gatewayIp);
virtual ~Peer() {};
/**
* wykonuje i rozdziela akcje seeda/peera jeżeli węzeł otrzyma pakiet
*/
virtual void onRecv();
/**
* wykonuje połączenie z serwerem p2p w celu otrzymania informacji
* o drugiej stronie lub wysyłając żądanie pobrania pliku
* @param serverIp adres IP serwera
* @param serverPort port serwera
*/
void connectToServer(string serverIp, int serverPort);
/* mutuatory */
bool isSender() const;
void setSender(bool sender);
const Simulation* getSim();
void setSim(Simulation* sim);
protected:
/**
* wysyła dane do peera, jeżeli obiekt jest nadawcą (seedem)
*/
void sendData();
/**
* wysyła odpowiedź o odebraniu danych, jeżeli obiekt jest odbiorcą (peerem)
* @param dstIp port docelowy seeda
* @param dstPort port docelowy seeda
*/
void sendAck(string dstIp, int dstPort);
};
#endif /* PEER_H_ */