|
|
- /**
- * @file P2PServer.cpp
- *
- * Created on: 17.01.2017
- * @author Piotr Dergun
- */
-
- #include "P2PServer.h"
-
- P2PServer::P2PServer()
- {
- this->seedIp = "";
- this->peerIp = "";
- this->seedPort = 0;
- this->peerPort = 0;
- this->sim = NULL;
- }
-
- P2PServer::P2PServer(string hostname, string ip, string mask) : Node(hostname, ip, mask)
- {
- this->seedIp = "";
- this->peerIp = "";
- this->seedPort = 0;
- this->peerPort = 0;
- this->sim = NULL;
- }
-
- P2PServer::~P2PServer()
- {
- }
-
- void P2PServer::onRecv()
- {
- stringstream ss;
- while (true)
- {
- ss.str("");
- Packet p = this->recv();
-
- if (p.getSrcPort() != 0)
- {
- ss << "onRecv() Received \"" << p.getMsg() << "\" from " << p.getSrcIp() << ":" << p.getSrcPort();
- this->print(ss.str());
- sleep(2);
-
- if (p.getMsg() == "getRemoteIPPort")
- {
- this->seedIp = p.getSrcIp();
- this->seedPort = p.getSrcPort();
- }
- else if (p.getMsg() == "helloDownload")
- {
- this->peerIp = p.getSrcIp();
- this->peerPort = p.getSrcPort();
- }
-
- if (this->seedPort != 0 && this->peerPort != 0)
- {
- ss.str("");
- ss << "peerConnectionInfo:" << this->peerIp << ":" << this->peerPort;
- Packet pp(ss.str());
- pp.setDstIp(this->seedIp);
- pp.setDstPort(this->seedPort);
- pp.setSrcPort(p.getDstPort());
- ss.str("");
-
- if (this->sim)
- this->sim->print("Sending to seed information about peer IP and port");
- ss << "Sending \"" << pp.getMsg() << "\" to " << pp.getDstIp() << ":" << pp.getDstPort();
- this->print(ss.str());
- this->send(pp);
- sleep(3);
- }
- }
- else
- {
- #ifndef DEBUG
- this->print("onRecv() sleeping...");
- #endif
- sleep(1);
- }
- }
- }
-
- const Simulation* P2PServer::getSim()
- {
- return sim;
- }
-
- void P2PServer::setSim(Simulation* sim)
- {
- this->sim = sim;
- }
|