Guard network notification callback by check if state was changed Existed solution was to noisy and triggered a lot of XMPP pings. Change-Id: I6d95d5f7323e9a15fcc088b766ba903d83bccbb1 Reviewed-on: https://weave-review.googlesource.com/1381 Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/libweave/examples/provider/event_network.cc b/libweave/examples/provider/event_network.cc index d3a3391..ed308f0 100644 --- a/libweave/examples/provider/event_network.cc +++ b/libweave/examples/provider/event_network.cc
@@ -83,9 +83,14 @@ if (state != network_state_) { LOG(INFO) << "network state updated: " << weave::EnumToString(state); network_state_ = state; + + // In general it's better to send false notification than miss one. + // However current implementation can only send them very often on every + // UpdateNetworkStateCallback or just here, guarder with this if condition. + for (const auto& cb : callbacks_) + cb.Run(); } - for (const auto& cb : callbacks_) - cb.Run(); + // TODO(proppy): use netlink interface event instead of polling task_runner_->PostDelayedTask( FROM_HERE, base::Bind(&EventNetworkImpl::UpdateNetworkState,