SET building is working now ... but SET itself seems to fail
[oweals/gnunet.git] / src / dv / plugin_transport_dv.c
index 9d1e06777eee3b64da29c2c3e21d3698e4c04a63..2acc3da3fdb1d2288a739ec2e6aad7cba128057e 100644 (file)
  */
 
 #include "platform.h"
+#include "gnunet_util_lib.h"
 #include "gnunet_protocols.h"
-#include "gnunet_connection_lib.h"
-#include "gnunet_server_lib.h"
-#include "gnunet_service_lib.h"
 #include "gnunet_statistics_service.h"
 #include "gnunet_dv_service.h"
 #include "gnunet_transport_service.h"
@@ -146,7 +144,7 @@ struct Plugin
   /**
    * Hash map of sessions (active and inactive).
    */
-  struct GNUNET_CONTAINER_MultiHashMap *sessions;
+  struct GNUNET_CONTAINER_MultiPeerMap *sessions;
 
   /**
    * Copy of the handler array where the closures are
@@ -162,7 +160,7 @@ struct Plugin
   /**
    * Tokenizer for boxed messages.
    */
-  struct GNUNET_SERVER_MessageStreamTokenizer *mst; 
+  struct GNUNET_SERVER_MessageStreamTokenizer *mst;
 
 };
 
@@ -204,11 +202,11 @@ unbox_cb (void *cls,
   struct Plugin *plugin = cls;
   struct Session *session = client;
   struct GNUNET_ATS_Information ats;
-  
+
   ats.type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
   ats.value = htonl (session->distance);
   session->active = GNUNET_YES;
-  plugin->env->receive (plugin->env->cls, 
+  plugin->env->receive (plugin->env->cls,
                        &session->sender,
                         message,
                        session, "", 0);
@@ -224,7 +222,7 @@ unbox_cb (void *cls,
  * @param cls closure with the plugin
  * @param sender sender of the message
  * @param distance how far did the message travel
- * @param msg actual message payload 
+ * @param msg actual message payload
  */
 static void
 handle_dv_message_received (void *cls,
@@ -236,9 +234,9 @@ handle_dv_message_received (void *cls,
   struct GNUNET_ATS_Information ats;
   struct Session *session;
 
-  session = GNUNET_CONTAINER_multihashmap_get (plugin->sessions,
-                                              &sender->hashPubKey);
-  if (NULL == session)    
+  session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
+                                              sender);
+  if (NULL == session)
   {
     GNUNET_break (0);
     return;
@@ -246,7 +244,7 @@ handle_dv_message_received (void *cls,
   if (GNUNET_MESSAGE_TYPE_DV_BOX == ntohs (msg->type))
   {
     /* need to unbox using MST */
-    GNUNET_SERVER_mst_receive (plugin->mst, 
+    GNUNET_SERVER_mst_receive (plugin->mst,
                               session,
                               (const char *) &msg[1],
                               ntohs (msg->size) - sizeof (struct GNUNET_MessageHeader),
@@ -272,7 +270,7 @@ handle_dv_message_received (void *cls,
  * @param peer newly connected peer
  * @param distance distance to the peer
  */
-static void 
+static void
 handle_dv_connect (void *cls,
                   const struct GNUNET_PeerIdentity *peer,
                   uint32_t distance)
@@ -280,22 +278,22 @@ handle_dv_connect (void *cls,
   struct Plugin *plugin = cls;
   struct Session *session;
 
-  session = GNUNET_CONTAINER_multihashmap_get (plugin->sessions,
-                                              &peer->hashPubKey);
-  if (NULL != session)    
+  session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
+                                              peer);
+  if (NULL != session)
   {
     GNUNET_break (0);
     session->distance = distance;
     if (GNUNET_YES == session->active)
       notify_distance_change (session);
-    return; /* nothing to do */  
+    return; /* nothing to do */
   }
   session = GNUNET_new (struct Session);
   session->sender = *peer;
   session->distance = distance;
   GNUNET_assert (GNUNET_YES ==
-                GNUNET_CONTAINER_multihashmap_put (plugin->sessions,
-                                                   &session->sender.hashPubKey,
+                GNUNET_CONTAINER_multipeermap_put (plugin->sessions,
+                                                   &session->sender,
                                                    session,
                                                    GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
 }
@@ -308,7 +306,7 @@ handle_dv_connect (void *cls,
  * @param peer connected peer
  * @param distance new distance to the peer
  */
-static void 
+static void
 handle_dv_distance_changed (void *cls,
                            const struct GNUNET_PeerIdentity *peer,
                            uint32_t distance)
@@ -316,9 +314,9 @@ handle_dv_distance_changed (void *cls,
   struct Plugin *plugin = cls;
   struct Session *session;
 
-  session = GNUNET_CONTAINER_multihashmap_get (plugin->sessions,
-                                              &peer->hashPubKey);
-  if (NULL == session)    
+  session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
+                                              peer);
+  if (NULL == session)
   {
     GNUNET_break (0);
     handle_dv_connect (plugin, peer, distance);
@@ -342,8 +340,8 @@ free_session (struct Session *session)
   struct PendingRequest *pr;
 
   GNUNET_assert (GNUNET_YES ==
-                GNUNET_CONTAINER_multihashmap_remove (plugin->sessions,
-                                                      &session->sender.hashPubKey,
+                GNUNET_CONTAINER_multipeermap_remove (plugin->sessions,
+                                                      &session->sender,
                                                       session));
   if (GNUNET_YES == session->active)
     plugin->env->session_end (plugin->env->cls,
@@ -372,16 +370,16 @@ free_session (struct Session *session)
  * @param cls closure with 'struct Plugin'
  * @param peer peer that disconnected
  */
-static void 
+static void
 handle_dv_disconnect (void *cls,
                      const struct GNUNET_PeerIdentity *peer)
 {
   struct Plugin *plugin = cls;
   struct Session *session;
 
-  session = GNUNET_CONTAINER_multihashmap_get (plugin->sessions,
-                                              &peer->hashPubKey);
-  if (NULL == session)    
+  session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
+                                              peer);
+  if (NULL == session)
     return; /* nothing to do */
   free_session (session);
 }
@@ -433,10 +431,10 @@ send_finished (void *cls,
  *         and does NOT mean that the message was not transmitted (DV)
  */
 static ssize_t
-dv_plugin_send (void *cls, 
+dv_plugin_send (void *cls,
                struct Session *session,
                 const char *msgbuf, size_t msgbuf_size, unsigned int priority,
-                struct GNUNET_TIME_Relative timeout, 
+                struct GNUNET_TIME_Relative timeout,
                 GNUNET_TRANSPORT_TransmitContinuation cont, void *cont_cls)
 {
   struct PendingRequest *pr;
@@ -486,10 +484,10 @@ dv_plugin_disconnect (void *cls, const struct GNUNET_PeerIdentity *target)
   struct Session *session;
   struct PendingRequest *pr;
 
-  session = GNUNET_CONTAINER_multihashmap_get (plugin->sessions,
-                                              &target->hashPubKey);
-  if (NULL == session)    
-    return; /* nothing to do */  
+  session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
+                                              target);
+  if (NULL == session)
+    return; /* nothing to do */
   while (NULL != (pr = session->pr_head))
   {
     GNUNET_CONTAINER_DLL_remove (session->pr_head,
@@ -550,7 +548,7 @@ dv_plugin_address_to_string (void *cls, const void *addr, size_t addrlen)
   if (0 != addrlen)
   {
     GNUNET_break (0); /* malformed */
-    return NULL; 
+    return NULL;
   }
   return "dv";
 }
@@ -590,7 +588,7 @@ dv_plugin_check_address (void *cls, const void *addr, size_t addrlen)
  * @param address the address
  * @return the session if the address is valid, NULL otherwise
  */
-static struct Session * 
+static struct Session *
 dv_get_session (void *cls,
                const struct GNUNET_HELLO_Address *address)
 {
@@ -599,8 +597,8 @@ dv_get_session (void *cls,
 
   if (0 != address->address_length)
     return NULL;
-  session = GNUNET_CONTAINER_multihashmap_get (plugin->sessions,
-                                              &address->peer.hashPubKey);
+  session = GNUNET_CONTAINER_multipeermap_get (plugin->sessions,
+                                              &address->peer);
   if (NULL == session)
     return NULL; /* not valid right now */
   session->active = GNUNET_YES;
@@ -620,7 +618,7 @@ dv_get_session (void *cls,
  * @param added length of created address
  * @return GNUNET_OK on success, GNUNET_SYSERR on failure
  */
-static int 
+static int
 dv_plugin_string_to_address (void *cls,
                             const char *addr,
                             uint16_t addrlen,
@@ -648,7 +646,7 @@ dv_plugin_string_to_address (void *cls,
  * @param session the session
  * @return the network type
  */
-static enum GNUNET_ATS_Network_Type 
+static enum GNUNET_ATS_Network_Type
 dv_get_network (void *cls,
                struct Session *session)
 {
@@ -672,7 +670,7 @@ libgnunet_plugin_transport_dv_init (void *cls)
 
   plugin = GNUNET_new (struct Plugin);
   plugin->env = env;
-  plugin->sessions = GNUNET_CONTAINER_multihashmap_create (1024 * 8, GNUNET_YES);
+  plugin->sessions = GNUNET_CONTAINER_multipeermap_create (1024 * 8, GNUNET_YES);
   plugin->mst = GNUNET_SERVER_mst_create (&unbox_cb,
                                          plugin);
   plugin->dvh = GNUNET_DV_service_connect (env->cfg,
@@ -683,8 +681,8 @@ libgnunet_plugin_transport_dv_init (void *cls)
                                           &handle_dv_message_received);
   if (NULL == plugin->dvh)
   {
-    GNUNET_CONTAINER_multihashmap_destroy (plugin->sessions);
-    GNUNET_SERVER_mst_destroy (plugin->mst);    
+    GNUNET_CONTAINER_multipeermap_destroy (plugin->sessions);
+    GNUNET_SERVER_mst_destroy (plugin->mst);
     GNUNET_free (plugin);
     return NULL;
   }
@@ -712,7 +710,7 @@ libgnunet_plugin_transport_dv_init (void *cls)
  */
 static int
 free_session_iterator (void *cls,
-                      const struct GNUNET_HashCode *key,
+                      const struct GNUNET_PeerIdentity *key,
                       void *value)
 {
   struct Session *session = value;
@@ -735,11 +733,11 @@ libgnunet_plugin_transport_dv_done (void *cls)
   struct Plugin *plugin = api->cls;
 
   GNUNET_DV_service_disconnect (plugin->dvh);
-  GNUNET_CONTAINER_multihashmap_iterate (plugin->sessions,
+  GNUNET_CONTAINER_multipeermap_iterate (plugin->sessions,
                                         &free_session_iterator,
                                         NULL);
-  GNUNET_CONTAINER_multihashmap_destroy (plugin->sessions);
-  GNUNET_SERVER_mst_destroy (plugin->mst);    
+  GNUNET_CONTAINER_multipeermap_destroy (plugin->sessions);
+  GNUNET_SERVER_mst_destroy (plugin->mst);
   GNUNET_free (plugin);
   GNUNET_free (api);
   return NULL;