diff --git a/net/cpp/include/ftl/net/universe.hpp b/net/cpp/include/ftl/net/universe.hpp index 11557f923f391160e0128932d26f2ae466d445e9..a1cfce0c84c12ae946f7ad25ca8fde77907b1d3c 100644 --- a/net/cpp/include/ftl/net/universe.hpp +++ b/net/cpp/include/ftl/net/universe.hpp @@ -204,7 +204,7 @@ void Universe::publish(const std::string &res, ARGS... args) { for (auto p : subs) { auto peer = getPeer(p); if (peer) { - *peer->send(res, args...); + peer->send(res, args...); } } } diff --git a/net/cpp/test/net_integration.cpp b/net/cpp/test/net_integration.cpp index 19a585423e8154293986a21fa509bbabcdaeb0cb..aa698dbe8668fd7082cba84d26ca4f7b3713c2d7 100644 --- a/net/cpp/test/net_integration.cpp +++ b/net/cpp/test/net_integration.cpp @@ -192,6 +192,33 @@ TEST_CASE("Universe::subscribe()", "") { } } +TEST_CASE("Universe::publish()", "") { + Universe a; + Universe b; + a.listen("tcp://localhost:7077"); + b.connect("tcp://localhost:7077"); + while (a.numberOfPeers() == 0) sleep_for(milliseconds(20)); + + SECTION("no subscribers") { + a.createResource("ftl://test"); + a.publish("ftl://test", 55); + } + + SECTION("one subscriber") { + int done = 0; + a.createResource("ftl://test"); + REQUIRE( b.subscribe("ftl://test", [&done](int a) { + done = a; + }) ); + sleep_for(milliseconds(50)); + + a.publish("ftl://test", 56); + sleep_for(milliseconds(50)); + + REQUIRE( done == 56 ); + } +} + /*TEST_CASE("net::listen()", "[net]") { SECTION("tcp any interface") {