migrate secretsharing to new service API
[oweals/gnunet.git] / src / secretsharing / secretsharing_api.c
index 441164850029542d477886a4549770be8ea9dd2d..85df66c13b8f2692f8d0c930488e866d11c8e843 100644 (file)
  */
 struct GNUNET_SECRETSHARING_Session
 {
-  /**
-   * Client connected to the secretsharing service.
-   */
-  struct GNUNET_CLIENT_Connection *client;
 
   /**
    * Message queue for @e client.
@@ -65,10 +61,6 @@ struct GNUNET_SECRETSHARING_Session
  */
 struct GNUNET_SECRETSHARING_DecryptionHandle
 {
-  /**
-   * Client connected to the secretsharing service.
-   */
-  struct GNUNET_CLIENT_Connection *client;
 
   /**
    * Message queue for @e client.
@@ -226,8 +218,6 @@ GNUNET_SECRETSHARING_session_destroy (struct GNUNET_SECRETSHARING_Session *s)
 {
   GNUNET_MQ_destroy (s->mq);
   s->mq = NULL;
-  GNUNET_CLIENT_disconnect (s->client);
-  s->client = NULL;
   GNUNET_free (s);
 }
 
@@ -259,20 +249,24 @@ GNUNET_SECRETSHARING_create_session (const struct GNUNET_CONFIGURATION_Handle *c
                                      GNUNET_SECRETSHARING_SecretReadyCallback cb,
                                      void *cls)
 {
-  GNUNET_MQ_hd_var_size (secret_ready,
-                         GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_SECRET_READY,
-                         struct GNUNET_SECRETSHARING_SecretReadyMessage);
   struct GNUNET_SECRETSHARING_Session *s
     = GNUNET_new (struct GNUNET_SECRETSHARING_Session);
   struct GNUNET_MQ_MessageHandler mq_handlers[] = {
-    make_secret_ready_handler (s),
+    GNUNET_MQ_hd_var_size (secret_ready,
+                           GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_SECRET_READY,
+                           struct GNUNET_SECRETSHARING_SecretReadyMessage,
+                           s),
     GNUNET_MQ_handler_end ()
   };
   struct GNUNET_MQ_Envelope *ev;
   struct GNUNET_SECRETSHARING_CreateMessage *msg;
 
-  s->client = GNUNET_CLIENT_connect ("secretsharing", cfg);
-  if (NULL == s->client)
+  s->mq = GNUNET_CLIENT_connect (cfg,
+                                 "secretsharing",
+                                 mq_handlers,
+                                 &handle_session_client_error,
+                                 s);
+  if (NULL == s->mq)
   {
     /* secretsharing not configured correctly */
     GNUNET_break (0);
@@ -281,11 +275,6 @@ GNUNET_SECRETSHARING_create_session (const struct GNUNET_CONFIGURATION_Handle *c
   }
   s->secret_ready_cb = cb;
   s->secret_ready_cls = cls;
-  s->mq = GNUNET_MQ_queue_for_connection_client (s->client, mq_handlers,
-                                                 &handle_session_client_error,
-                                                 s);
-  GNUNET_assert (NULL != s->mq);
-
   ev = GNUNET_MQ_msg_extra (msg,
                             num_peers * sizeof (struct GNUNET_PeerIdentity),
                             GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_GENERATE);
@@ -295,7 +284,7 @@ GNUNET_SECRETSHARING_create_session (const struct GNUNET_CONFIGURATION_Handle *c
   msg->session_id = *session_id;
   msg->start = GNUNET_TIME_absolute_hton (start);
   msg->deadline = GNUNET_TIME_absolute_hton (deadline);
-  memcpy (&msg[1], peers, num_peers * sizeof (struct GNUNET_PeerIdentity));
+  GNUNET_memcpy (&msg[1], peers, num_peers * sizeof (struct GNUNET_PeerIdentity));
 
   GNUNET_MQ_send (s->mq, ev);
 
@@ -344,29 +333,31 @@ GNUNET_SECRETSHARING_decrypt (const struct GNUNET_CONFIGURATION_Handle *cfg,
                               GNUNET_SECRETSHARING_DecryptCallback decrypt_cb,
                               void *decrypt_cb_cls)
 {
-  GNUNET_MQ_hd_fixed_size (decrypt_done,
-                           GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_DECRYPT_DONE,
-                           struct GNUNET_SECRETSHARING_DecryptResponseMessage);
   struct GNUNET_SECRETSHARING_DecryptionHandle *s
     = GNUNET_new (struct GNUNET_SECRETSHARING_DecryptionHandle);
   struct GNUNET_MQ_MessageHandler mq_handlers[] = {
-    make_decrypt_done_handler (s),
+    GNUNET_MQ_hd_fixed_size (decrypt_done,
+                             GNUNET_MESSAGE_TYPE_SECRETSHARING_CLIENT_DECRYPT_DONE,
+                             struct GNUNET_SECRETSHARING_DecryptResponseMessage,
+                             s),
     GNUNET_MQ_handler_end ()
   };
   struct GNUNET_MQ_Envelope *ev;
   struct GNUNET_SECRETSHARING_DecryptRequestMessage *msg;
   size_t share_size;
 
-  s->client = GNUNET_CLIENT_connect ("secretsharing", cfg);
   s->decrypt_cb = decrypt_cb;
   s->decrypt_cls = decrypt_cb_cls;
-  GNUNET_assert (NULL != s->client);
-
-  s->mq = GNUNET_MQ_queue_for_connection_client (s->client, mq_handlers,
-                                                 &handle_decrypt_client_error,
-                                                 s);
-  GNUNET_assert (NULL != s->mq);
-
+  s->mq = GNUNET_CLIENT_connect (cfg,
+                                 "secretsharing",
+                                 mq_handlers,
+                                 &handle_decrypt_client_error,
+                                 s);
+  if (NULL == s->mq)
+  {
+    GNUNET_free (s);
+    return NULL;
+  }
   GNUNET_assert (GNUNET_OK ==
                  GNUNET_SECRETSHARING_share_write (share, NULL, 0,
                                                    &share_size));
@@ -505,8 +496,6 @@ GNUNET_SECRETSHARING_decrypt_cancel (struct GNUNET_SECRETSHARING_DecryptionHandl
 {
   GNUNET_MQ_destroy (dh->mq);
   dh->mq = NULL;
-  GNUNET_CLIENT_disconnect (dh->client);
-  dh->client = NULL;
   GNUNET_free (dh);
 }