diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-10-13 10:27:47 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-10-13 10:27:47 +0200 |
| commit | ad1a9858cd0d15b1090a0977098b98307875f07c (patch) | |
| tree | ebc47df56b6198dad000bc7147354b7912c9fbf7 | |
| parent | 7bca48bc5b5e37a3a8b0b23e57b88d069fa50589 (diff) | |
| download | cmix-ad1a9858cd0d15b1090a0977098b98307875f07c.tar.gz cmix-ad1a9858cd0d15b1090a0977098b98307875f07c.tar.bz2 cmix-ad1a9858cd0d15b1090a0977098b98307875f07c.zip | |
Added a stop condition for the client,
When all the nodes have send a bye to the client, the client will
shut down.
| -rw-r--r-- | client/cmixclient.cpp | 11 | ||||
| -rw-r--r-- | libcmix-network/client.cpp | 5 | ||||
| -rw-r--r-- | libcmix-network/client.hpp | 2 | ||||
| -rw-r--r-- | libcmix-network/protobufclient.hpp | 4 |
4 files changed, 19 insertions, 3 deletions
diff --git a/client/cmixclient.cpp b/client/cmixclient.cpp index 1ffd904..933ad0e 100644 --- a/client/cmixclient.cpp +++ b/client/cmixclient.cpp @@ -43,14 +43,19 @@ void CMixClient::handle_message(int node_id, cmix_proto::CMixMessage message) handle_key_exchange(node_id, *message.mutable_keyexchange()); return; } + case cmix_proto::CMixMessage::ContentsCase::kBye: { + network_connections.at(node_id).close(); + if(std::all_of(network_connections.begin(), network_connections.end(), [](SenderReceiver const& c) { return c.is_open(); })) { + break; + } else { + return; + } + } default: { BOOST_LOG_TRIVIAL(error) << "Received unknown message"; } } - for(auto&& connection : network_connections) { - connection.close(); - } io_service.stop(); } diff --git a/libcmix-network/client.cpp b/libcmix-network/client.cpp index 755989b..09ea98c 100644 --- a/libcmix-network/client.cpp +++ b/libcmix-network/client.cpp @@ -84,3 +84,8 @@ void Client::close() void Client::on_done(Client::OnDoneFT f) { done = f; } + +bool Client::is_open() const +{ + return socket.is_open(); +} diff --git a/libcmix-network/client.hpp b/libcmix-network/client.hpp index 7bfea7d..7b88282 100644 --- a/libcmix-network/client.hpp +++ b/libcmix-network/client.hpp @@ -125,5 +125,7 @@ public: */ void on_done(OnDoneFT f); + bool is_open() const; + }; diff --git a/libcmix-network/protobufclient.hpp b/libcmix-network/protobufclient.hpp index 1c97cfa..077ce62 100644 --- a/libcmix-network/protobufclient.hpp +++ b/libcmix-network/protobufclient.hpp @@ -128,6 +128,10 @@ public: client.on_done(f); } + bool is_open() const{ + return client.is_open(); + } + friend Receiver make_receiver(Receiver&& r); friend SenderReceiver make_sender_receiver(SenderReceiver&& r); |
