- /*
- * Node.h
- *
- * Created on: 10.01.2017
- * Author: piotrek
- */
-
- #ifndef NODE_H_
- #define NODE_H_
-
- #include "common.h"
- #include "Packet.h"
- #include "Log.h"
-
- typedef struct {
- string ip;
- string mask;
- string network;
- string gatewayIp;
- } NetConf;
-
- class Node : public Log
- {
- private:
- queue<Packet>rcvBuffer; // kolejka z pakietami do przetworzenia
- map<Node*, bool> connectedNodes; // referencje do węzłów, z którymi jest podłączony
- NetConf netConf; // konfiguracja sieciowa
- string hostname; // nazwa węzła
- void setNetwork();
- protected:
- Node * findConnection(string ip);
- Packet recv();
- string ipToString(unsigned int ip);
- unsigned int stringToIp(string ip);
- string calculateNetwork(string ip, string mask);
- void split(const string &s, char delim, vector<string> &elems);
- vector<string> split(const string &s, char delim);
-
- public:
- Node();
- Node(string hostname);
- Node(string hostname, string ip, string mask);
- Node(string hostname, string ip, string mask, string gatewayIp);
- virtual ~Node();
- bool connectNode(Node *node, bool isExternal = false, bool firstConnected = false);
-
- int send(Packet packet, bool isRouter = false);
- void putPacket(Packet packet);
-
- // settery
- void setHostname(string hostname);
- void setIp(string ip);
- void setMask(string mask);
- void setGatewayIp(string gatewayIp);
-
- // gettery
- string getHostname();
- string getIp();
- string getMask();
- string getNetwork();
- string getGatewayIp();
-
- virtual void onRecv(); // wirtualna metoda na odbiór i dalszą akcję
- };
-
- #endif /* NODE_H_ */
|