diff --git a/libretroshare/src/tests/network_simulator/gui/gui.pro b/libretroshare/src/tests/network_simulator/gui/gui.pro index 8add96fb3..4f4bd987a 100644 --- a/libretroshare/src/tests/network_simulator/gui/gui.pro +++ b/libretroshare/src/tests/network_simulator/gui/gui.pro @@ -8,6 +8,8 @@ INCLUDEPATH *= ../../.. .. TARGET = NetworkSim DESTDIR = bin +PRE_TARGETDEPS = ../nscore/nscore.pro + SOURCES = main.cpp NetworkViewer.cpp NetworkSimulatorGUI.cpp \ TurtleRouterStatistics.cpp RsAutoUpdatePage.cpp diff --git a/libretroshare/src/tests/network_simulator/nscore/FakeComponents.h b/libretroshare/src/tests/network_simulator/nscore/FakeComponents.h index 1fea8c479..b54ed8681 100644 --- a/libretroshare/src/tests/network_simulator/nscore/FakeComponents.h +++ b/libretroshare/src/tests/network_simulator/nscore/FakeComponents.h @@ -29,6 +29,7 @@ class FakePublisher: public pqiPublisher virtual bool sendItem(RsRawItem *item) { _item_queue.push_back(item) ; + return true ; } RsRawItem *outgoing() diff --git a/libretroshare/src/tests/network_simulator/nscore/MonitoredGRouterClient.cpp b/libretroshare/src/tests/network_simulator/nscore/MonitoredGRouterClient.cpp new file mode 100644 index 000000000..f1fbe333a --- /dev/null +++ b/libretroshare/src/tests/network_simulator/nscore/MonitoredGRouterClient.cpp @@ -0,0 +1,24 @@ +#include "MonitoredGRouterClient.h" + +const uint32_t MonitoredGRouterClient::GROUTER_CLIENT_SERVICE_ID_00 = 0x0111 ; + +void MonitoredGRouterClient::receiveGRouterData(const GRouterKeyId& destination_key,const RsGRouterGenericDataItem *item) +{ + std::cerr << "received one global grouter item for key " << destination_key << std::endl; +} + +void MonitoredGRouterClient::provideKey(const GRouterKeyId& key_id) +{ + _grouter->registerKey(key_id,GROUTER_CLIENT_SERVICE_ID_00,"test grouter address") ; + + std::cerr << "Registered new key " << key_id << " for service " << std::hex << GROUTER_CLIENT_SERVICE_ID_00 << std::dec << std::endl; +} + +void MonitoredGRouterClient::sendMessage(const GRouterKeyId& destination_key_id) const +{ + RsGRouterGenericDataItem *item = new RsGRouterGenericDataItem ; + item->data_size = 1000 + (RSRandom::random_u32()%1000) ; + item->data_bytes = (unsigned char *)malloc(item->data_size) ; + + _grouter->sendData(destination_key_id,item) ; +} diff --git a/libretroshare/src/tests/network_simulator/nscore/MonitoredGRouterClient.h b/libretroshare/src/tests/network_simulator/nscore/MonitoredGRouterClient.h new file mode 100644 index 000000000..a778c8c37 --- /dev/null +++ b/libretroshare/src/tests/network_simulator/nscore/MonitoredGRouterClient.h @@ -0,0 +1,23 @@ +#pragma once + +#include + +class MonitoredGRouterClient: public GRouterClientService +{ + public: + static const uint32_t GROUTER_CLIENT_SERVICE_ID_00 ; + + // Derived from grouterclientservice.h + // + virtual void connectToGlobalRouter(p3GRouter *p) { _grouter = p ; p->registerClientService(GROUTER_CLIENT_SERVICE_ID_00,this) ; } + virtual void receiveGRouterData(const GRouterKeyId& destination_key,const RsGRouterGenericDataItem *item); + + // Own functionality + // + void sendMessage(const GRouterKeyId& destination_key) const ; + void provideKey(const GRouterKeyId& key) ; + + private: + p3GRouter *_grouter ; +}; + diff --git a/libretroshare/src/tests/network_simulator/nscore/MonitoredTurtle.cpp b/libretroshare/src/tests/network_simulator/nscore/MonitoredTurtleClient.cpp similarity index 92% rename from libretroshare/src/tests/network_simulator/nscore/MonitoredTurtle.cpp rename to libretroshare/src/tests/network_simulator/nscore/MonitoredTurtleClient.cpp index 4de7bec6b..3ed946ac3 100644 --- a/libretroshare/src/tests/network_simulator/nscore/MonitoredTurtle.cpp +++ b/libretroshare/src/tests/network_simulator/nscore/MonitoredTurtleClient.cpp @@ -1,4 +1,4 @@ -#include "MonitoredTurtle.h" +#include "MonitoredTurtleClient.h" bool MonitoredTurtleClient::handleTunnelRequest(const TurtleFileHash& hash,const RsPeerId& peer_id) { diff --git a/libretroshare/src/tests/network_simulator/nscore/MonitoredTurtle.h b/libretroshare/src/tests/network_simulator/nscore/MonitoredTurtleClient.h similarity index 100% rename from libretroshare/src/tests/network_simulator/nscore/MonitoredTurtle.h rename to libretroshare/src/tests/network_simulator/nscore/MonitoredTurtleClient.h diff --git a/libretroshare/src/tests/network_simulator/nscore/Network.cpp b/libretroshare/src/tests/network_simulator/nscore/Network.cpp index 7164d3f47..003eca98f 100644 --- a/libretroshare/src/tests/network_simulator/nscore/Network.cpp +++ b/libretroshare/src/tests/network_simulator/nscore/Network.cpp @@ -15,7 +15,7 @@ #include #include #include "Network.h" -#include "MonitoredTurtle.h" +#include "MonitoredTurtleClient.h" #include "FakeComponents.h" bool Network::initRandom(uint32_t nb_nodes,float connexion_probability) diff --git a/libretroshare/src/tests/network_simulator/nscore/PeerNode.cpp b/libretroshare/src/tests/network_simulator/nscore/PeerNode.cpp index 9a944565d..e5dfe0575 100644 --- a/libretroshare/src/tests/network_simulator/nscore/PeerNode.cpp +++ b/libretroshare/src/tests/network_simulator/nscore/PeerNode.cpp @@ -1,6 +1,7 @@ #include "PeerNode.h" #include "FakeComponents.h" -#include "MonitoredTurtle.h" +#include "MonitoredTurtleClient.h" +#include "MonitoredGRouterClient.h" PeerNode::PeerNode(const RsPeerId& id,const std::list& friends) : _id(id) @@ -15,20 +16,24 @@ PeerNode::PeerNode(const RsPeerId& id,const std::list& friends) _service_server = new p3ServiceServer(_publisher,ctrl); - ftServer *ft_server = new ftServer(peer_mgr,ctrl) ; - - _service_server->addService(_turtle = new p3turtle(ctrl,link_mgr),true) ; - - _ftserver = new MonitoredTurtleClient ; - _ftserver->connectToTurtleRouter(_turtle) ; - RsServicePermissions perms; perms.mDefaultAllowed = true ; perms.mServiceId = RS_SERVICE_TYPE_TURTLE ; ctrl->updateServicePermissions(RS_SERVICE_TYPE_TURTLE,perms) ; - // add a turtle router. + + // Turtle business + + _service_server->addService(_turtle = new p3turtle(ctrl,link_mgr),true) ; + _turtle_client = new MonitoredTurtleClient ; + _turtle_client->connectToTurtleRouter(_turtle) ; + + // global router business. // + + _service_server->addService(_grouter = new p3GRouter(ctrl,link_mgr),true) ; + _grouter_client = new MonitoredGRouterClient ; + _grouter_client->connectToGlobalRouter(_grouter) ; } PeerNode::~PeerNode() @@ -54,13 +59,13 @@ RsRawItem *PeerNode::outgoing() void PeerNode::provideFileHash(const RsFileHash& hash) { _provided_hashes.insert(hash) ; - _ftserver->provideFileHash(hash) ; + _turtle_client->provideFileHash(hash) ; } void PeerNode::manageFileHash(const RsFileHash& hash) { _managed_hashes.insert(hash) ; - _turtle->monitorTunnels(hash,_ftserver) ; + _turtle->monitorTunnels(hash,_turtle_client) ; } void PeerNode::getTrafficInfo(NodeTrafficInfo& info) diff --git a/libretroshare/src/tests/network_simulator/nscore/PeerNode.h b/libretroshare/src/tests/network_simulator/nscore/PeerNode.h index f047dfedc..d49193941 100644 --- a/libretroshare/src/tests/network_simulator/nscore/PeerNode.h +++ b/libretroshare/src/tests/network_simulator/nscore/PeerNode.h @@ -3,10 +3,11 @@ #include #include -class MonitoredTurtleRouter ; class MonitoredTurtleClient ; +class MonitoredGRouterClient ; class RsTurtle ; class p3turtle ; +class p3GRouter ; class pqiPublisher ; class RsRawItem ; class p3ServiceServer ; @@ -30,10 +31,10 @@ class PeerNode void tick() ; - const RsTurtle *turtle_service() const { return _turtle ; } - // Turtle-related methods // + const RsTurtle *turtle_service() const { return _turtle ; } + void manageFileHash(const RsFileHash& hash) ; void provideFileHash(const RsFileHash& hash) ; @@ -42,13 +43,23 @@ class PeerNode void getTrafficInfo(NodeTrafficInfo& trinfo) ; // + // GRouter-related methods + // private: p3ServiceServer *_service_server ; - p3turtle *_turtle ; - MonitoredTurtleClient *_ftserver ; pqiPublisher *_publisher ; RsPeerId _id ; + // turtle stuff + // + p3turtle *_turtle ; + MonitoredTurtleClient *_turtle_client ; + + // grouter stuff + // + p3GRouter *_grouter ; + MonitoredGRouterClient *_grouter_client ; + std::set _provided_hashes ; std::set _managed_hashes ; }; diff --git a/libretroshare/src/tests/network_simulator/nscore/core.pro b/libretroshare/src/tests/network_simulator/nscore/nscore.pro similarity index 58% rename from libretroshare/src/tests/network_simulator/nscore/core.pro rename to libretroshare/src/tests/network_simulator/nscore/nscore.pro index 7c2b39623..5a3989a15 100644 --- a/libretroshare/src/tests/network_simulator/nscore/core.pro +++ b/libretroshare/src/tests/network_simulator/nscore/nscore.pro @@ -8,11 +8,13 @@ TARGET = nscore SOURCES = Network.cpp \ PeerNode.cpp \ MonitoredRsPeers.cpp \ - MonitoredTurtle.cpp + MonitoredTurtleClient.cpp \ + MonitoredGRouterClient.cpp HEADERS = Network.h \ PeerNode.h \ - MonitoredTurtle.h \ - MonitoredRsPeers.h + MonitoredRsPeers.h \ + MonitoredTurtleClient.h \ + MonitoredGRouterClient.h DESTDIR = ../lib