doxy
[oweals/gnunet.git] / src / core / core_api_iterate_peers.c
index 0cc28e538a4250a81a7a4b1e791cbee730e23202..7db94861843f8651ba9a4de27fe0705af05891f0 100644 (file)
@@ -79,8 +79,8 @@ receive_info (void *cls, const struct GNUNET_MessageHeader *msg)
        (ntohs (msg->size) == sizeof (struct GNUNET_MessageHeader))))
   {
     if (request_context->peer_cb != NULL)
-      request_context->peer_cb (request_context->cb_cls, NULL, NULL);
-    GNUNET_CLIENT_disconnect (request_context->client, GNUNET_NO);
+      request_context->peer_cb (request_context->cb_cls, NULL, NULL, 0);
+    GNUNET_CLIENT_disconnect (request_context->client);
     GNUNET_free (request_context);
     return;
   }
@@ -92,34 +92,34 @@ receive_info (void *cls, const struct GNUNET_MessageHeader *msg)
   {
     GNUNET_break (0);
     if (request_context->peer_cb != NULL)
-      request_context->peer_cb (request_context->cb_cls, NULL, NULL);
-    GNUNET_CLIENT_disconnect (request_context->client, GNUNET_NO);
+      request_context->peer_cb (request_context->cb_cls, NULL, NULL, 0);
+    GNUNET_CLIENT_disconnect (request_context->client);
     GNUNET_free (request_context);
     return;
   }
   connect_message = (const struct ConnectNotifyMessage *) msg;
   ats_count = ntohl (connect_message->ats_count);
-  if ((msize !=
-       sizeof (struct ConnectNotifyMessage) +
-       ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information)) ||
-      (GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR !=
-       ntohl ((&connect_message->ats)[ats_count].type)))
+  if (msize !=
+      sizeof (struct ConnectNotifyMessage) +
+      ats_count * sizeof (struct GNUNET_ATS_Information))
   {
     GNUNET_break (0);
     if (request_context->peer_cb != NULL)
-      request_context->peer_cb (request_context->cb_cls, NULL, NULL);
-    GNUNET_CLIENT_disconnect (request_context->client, GNUNET_NO);
+      request_context->peer_cb (request_context->cb_cls, NULL, NULL, 0);
+    GNUNET_CLIENT_disconnect (request_context->client);
     GNUNET_free (request_context);
     return;
   }
   /* Normal case */
   if (request_context->peer_cb != NULL)
     request_context->peer_cb (request_context->cb_cls, &connect_message->peer,
-                              &connect_message->ats);
+                              (const struct GNUNET_ATS_Information *)
+                              &connect_message[1], ats_count);
   GNUNET_CLIENT_receive (request_context->client, &receive_info,
                          request_context, GNUNET_TIME_UNIT_FOREVER_REL);
 }
 
+
 /**
  * Function called to notify a client about the socket
  * begin ready to queue more data.  "buf" will be
@@ -144,10 +144,8 @@ transmit_request (void *cls, size_t size, void *buf)
     msize =
         sizeof (struct GNUNET_MessageHeader) +
         sizeof (struct GNUNET_PeerIdentity);
-
   if ((size < msize) || (buf == NULL))
     return 0;
-
   msg = (struct GNUNET_MessageHeader *) buf;
   msg->size = htons (msize);
   if (peer != NULL)
@@ -161,50 +159,7 @@ transmit_request (void *cls, size_t size, void *buf)
   return msize;
 }
 
-/**
- * Iterate over all currently connected peers.
- * Calls peer_cb with each connected peer, and then
- * once with NULL to indicate that all peers have
- * been handled.
- *
- * @param cfg configuration to use
- * @param peer the specific peer to check for
- * @param peer_cb function to call with the peer information
- * @param cb_cls closure for peer_cb
- *
- * @return GNUNET_OK if iterating, GNUNET_SYSERR on error
- */
-int
-GNUNET_CORE_is_peer_connected (const struct GNUNET_CONFIGURATION_Handle *cfg,
-                               struct GNUNET_PeerIdentity *peer,
-                               GNUNET_CORE_ConnectEventHandler peer_cb,
-                               void *cb_cls)
-{
-  struct GNUNET_CORE_RequestContext *request_context;
-  struct GNUNET_CLIENT_Connection *client;
-
-  client = GNUNET_CLIENT_connect ("core", cfg);
-  if (client == NULL)
-    return GNUNET_SYSERR;
-  GNUNET_assert (peer != NULL);
-  request_context = GNUNET_malloc (sizeof (struct GNUNET_CORE_RequestContext));
-  request_context->client = client;
-  request_context->peer_cb = peer_cb;
-  request_context->cb_cls = cb_cls;
-  request_context->peer = peer;
 
-  request_context->th =
-      GNUNET_CLIENT_notify_transmit_ready (client,
-                                           sizeof (struct GNUNET_MessageHeader)
-                                           +
-                                           sizeof (struct GNUNET_PeerIdentity),
-                                           GNUNET_TIME_relative_get_forever (),
-                                           GNUNET_YES, &transmit_request, peer);
-  GNUNET_assert (request_context->th != NULL);
-  GNUNET_CLIENT_receive (client, &receive_info, request_context,
-                         GNUNET_TIME_relative_get_forever ());
-  return GNUNET_OK;
-}
 
 /**
  * Iterate over all currently connected peers.
@@ -237,11 +192,11 @@ GNUNET_CORE_iterate_peers (const struct GNUNET_CONFIGURATION_Handle *cfg,
   request_context->th =
       GNUNET_CLIENT_notify_transmit_ready (client,
                                            sizeof (struct GNUNET_MessageHeader),
-                                           GNUNET_TIME_relative_get_forever (),
+                                           GNUNET_TIME_UNIT_FOREVER_REL,
                                            GNUNET_YES, &transmit_request, NULL);
 
   GNUNET_CLIENT_receive (client, &receive_info, request_context,
-                         GNUNET_TIME_relative_get_forever ());
+                         GNUNET_TIME_UNIT_FOREVER_REL);
   return GNUNET_OK;
 }