gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnunet] 02/05: Handle cancellation of view updates


From: gnunet
Subject: [GNUnet-SVN] [gnunet] 02/05: Handle cancellation of view updates
Date: Wed, 26 Sep 2018 21:39:13 +0200

This is an automated email from the git hooks/post-receive script.

julius-buenger pushed a commit to branch master
in repository gnunet.

commit cf847c7470937fa160ccec6588acdc3c46c5e202
Author: Julius Bünger <address@hidden>
AuthorDate: Wed Sep 26 21:15:01 2018 +0200

    Handle cancellation of view updates
---
 src/rps/gnunet-service-rps.c | 25 +++++++++++++++++++++++++
 src/rps/rps-sampler_client.c |  1 -
 src/rps/rps_api.c            | 21 ++++++++++++++++++++-
 3 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c
index 3dd887d47..4e06f5a49 100644
--- a/src/rps/gnunet-service-rps.c
+++ b/src/rps/gnunet-service-rps.c
@@ -2733,6 +2733,27 @@ handle_client_view_request (void *cls,
 }
 
 
+static void
+handle_client_view_request_cancel (void *cls,
+                                   const struct GNUNET_MessageHeader *msg)
+{
+  struct ClientContext *cli_ctx = cls;
+  uint64_t num_updates;
+
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "Client does not want to receive updates of view any more.\n",
+       num_updates);
+
+  GNUNET_assert (NULL != cli_ctx);
+  cli_ctx->view_updates_left = 0;
+  if (GNUNET_YES == cli_ctx->stream_update)
+  {
+    destroy_cli_ctx (cli_ctx);
+  }
+  GNUNET_SERVICE_client_continue (cli_ctx->client);
+}
+
+
 /**
  * Handle RPS request for biased stream from the client.
  *
@@ -4079,6 +4100,10 @@ GNUNET_SERVICE_MAIN
    GNUNET_MESSAGE_TYPE_RPS_CS_DEBUG_VIEW_REQUEST,
    struct GNUNET_RPS_CS_DEBUG_ViewRequest,
    NULL),
+ GNUNET_MQ_hd_fixed_size (client_view_request_cancel,
+   GNUNET_MESSAGE_TYPE_RPS_CS_DEBUG_VIEW_CANCEL,
+   struct GNUNET_MessageHeader,
+   NULL),
  GNUNET_MQ_hd_fixed_size (client_stream_request,
    GNUNET_MESSAGE_TYPE_RPS_CS_DEBUG_STREAM_REQUEST,
    struct GNUNET_RPS_CS_DEBUG_StreamRequest,
diff --git a/src/rps/rps-sampler_client.c b/src/rps/rps-sampler_client.c
index da832a323..4904b9d43 100644
--- a/src/rps/rps-sampler_client.c
+++ b/src/rps/rps-sampler_client.c
@@ -201,7 +201,6 @@ RPS_sampler_mod_init (size_t init_size,
   max_size = 1000; // TODO make input to _samplers_init()
 
   sampler = GNUNET_new (struct RPS_Sampler);
-
   sampler->max_round_interval = max_round_interval;
   sampler->get_peers = sampler_mod_get_rand_peer;
   //sampler->sampler_elements = GNUNET_new_array(init_size, struct 
GNUNET_PeerIdentity);
diff --git a/src/rps/rps_api.c b/src/rps/rps_api.c
index 6e124644d..7d0674aff 100644
--- a/src/rps/rps_api.c
+++ b/src/rps/rps_api.c
@@ -344,6 +344,20 @@ GNUNET_RPS_view_request (struct GNUNET_RPS_Handle 
*rps_handle,
 }
 
 
+void
+GNUNET_RPS_view_request_cancel (struct GNUNET_RPS_Handle *rps_handle)
+{
+  struct GNUNET_MQ_Envelope *ev;
+
+  GNUNET_assert (NULL != rps_handle->view_update_cb);
+
+  rps_handle->view_update_cb = NULL;
+
+  ev = GNUNET_MQ_msg_header (GNUNET_MESSAGE_TYPE_RPS_CS_DEBUG_VIEW_CANCEL);
+  GNUNET_MQ_send (rps_handle->mq, ev);
+}
+
+
 /**
  * Request biased stream of peers that are being put into the sampler
  *
@@ -879,7 +893,12 @@ GNUNET_RPS_disconnect (struct GNUNET_RPS_Handle *h)
   if (NULL != h->stream_requests_head)
   {
     LOG (GNUNET_ERROR_TYPE_WARNING,
-        "Still waiting for requests\n");
+        "Still waiting for replies\n");
+  }
+  if (NULL != h->view_update_cb)
+  {
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+        "Still waiting for view updates\n");
   }
   GNUNET_free (h);
 }

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]