Work in progress
authorBart Polot <bart@net.in.tum.de>
Fri, 8 Apr 2011 01:01:18 +0000 (01:01 +0000)
committerBart Polot <bart@net.in.tum.de>
Fri, 8 Apr 2011 01:01:18 +0000 (01:01 +0000)
src/include/gnunet_mesh_service_new.h
src/mesh/gnunet-service-mesh.c

index 4dd7383270f7898b980a7d349a64c9f1e69aeab3..3a0aa95076890b86028c6163ab88fb7a040d0097 100644 (file)
@@ -73,7 +73,8 @@ typedef int
                                  void **tunnel_ctx,
                                  const struct GNUNET_PeerIdentity *sender,
                                   const struct GNUNET_MessageHeader *message,
-                                 const struct GNUNET_TRANSPORT_ATS_Information *atsi);
+                                 const struct GNUNET_TRANSPORT_ATS_Information
+                                 *atsi);
 
 
 /**
@@ -108,10 +109,12 @@ struct GNUNET_MESH_MessageHandler
  *
  * @param cls closure (set from GNUNET_MESH_connect)
  * @param tunnel connection to the other end (henceforth invalid)
- * @param tunnel_ctx place where local state associated with the tunnel is stored
+ * @param tunnel_ctx place where local state associated
+ *                   with the tunnel is stored
  */
 typedef void (GNUNET_MESH_TunnelEndHandler)(void *cls,
-                                           const struct GNUNET_MESH_Tunnel *tunnel,
+                                           const struct GNUNET_MESH_Tunnel
+                                           *tunnel,
                                            void **tunnel_ctx);
 
 
@@ -125,14 +128,15 @@ typedef uint32_t GNUNET_MESH_ApplicationType;
  * Connect to the mesh service.
  *
  * @param cfg configuration to use
- * @param cls closure for the various callbacks that follow (including handlers in the handlers array)
+ * @param cls closure for the various callbacks that follow
+ *            (including handlers in the handlers array)
  * @param cleaner function called when an *inbound* tunnel is destroyed
  * @param handlers callbacks for messages we care about, NULL-terminated
- *                note that the mesh is allowed to drop notifications about inbound
- *                messages if the client does not process them fast enough (for this
- *                notification type, a bounded queue is used)
- * @return handle to the mesh service 
- *           NULL on error (in this case, init is never called)
+ *                note that the mesh is allowed to drop notifications about
+ *                inbound messages if the client does not process them fast
+ *                enough (for this notification type, a bounded queue is used)
+ * @return handle to the mesh service NULL on error
+ *         (in this case, init is never called)
  */
 struct GNUNET_MESH_Handle *
 GNUNET_MESH_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
@@ -157,7 +161,7 @@ void GNUNET_MESH_disconnect (struct GNUNET_MESH_Handle *handle);
  * @param peer peer identity the tunnel stopped working with
  */
 typedef void (*GNUNET_MESH_TunnelDisconnectHandler) (void *cls,
-                                                    const struct GNUNET_PeerIdentity *peer);
+                                        const struct GNUNET_PeerIdentity *peer);
 
 
 /**
@@ -168,14 +172,14 @@ typedef void (*GNUNET_MESH_TunnelDisconnectHandler) (void *cls,
  * @param atsi performance data for the connection
  */
 typedef void (*GNUNET_MESH_TunnelConnectHandler) (void *cls,
-                                                 const struct GNUNET_PeerIdentity *peer,
-                                                 const struct GNUNET_TRANSPORT_ATS_Information *atsi);
+                           const struct GNUNET_PeerIdentity *peer,
+                           const struct GNUNET_TRANSPORT_ATS_Information *atsi);
 
 
 
 /**
- * Create a new tunnel (we're initiator and will be allowed to add/remove peers and
- * to broadcast).
+ * Create a new tunnel (we're initiator and will be allowed to add/remove peers
+ * and to broadcast).
  *
  * @param h mesh handle
  * @param connect_handler function to call when peers are actually connected
@@ -184,9 +188,11 @@ typedef void (*GNUNET_MESH_TunnelConnectHandler) (void *cls,
  */
 struct GNUNET_MESH_Tunnel *
 GNUNET_MESH_tunnel_create (struct GNUNET_MESH_Handle *h,
-                          GNUNET_MESH_TunnelConnectHandler connect_handler,
-                          GNUNET_MESH_TunnelDisconnectHandler disconnect_handler,
-                          void *handler_cls);
+                           GNUNET_MESH_TunnelConnectHandler
+                           connect_handler,
+                           GNUNET_MESH_TunnelDisconnectHandler
+                           disconnect_handler,
+                           void *handler_cls);
 
 /**
  * Destroy an existing tunnel.
@@ -229,8 +235,8 @@ GNUNET_MESH_peer_request_connect_del (struct GNUNET_MESH_Tunnel *tunnel,
  *
  * @param tunnel handle to existing tunnel
  * @param timeout how long to try to establish a connection
- * @param app_type application type that must be supported by the peer (MESH should
- *                discover peer in proximity handling this type)
+ * @param app_type application type that must be supported by the peer
+ *                 (MESH should discover peer in proximity handling this type)
  */
 void
 GNUNET_MESH_peer_request_connect_by_type (struct GNUNET_MESH_Tunnel *tunnel,
@@ -254,7 +260,8 @@ struct GNUNET_MESH_TransmitHandle;
  * @param cork is corking allowed for this transmission?
  * @param priority how important is the message?
  * @param maxdelay how long can the message wait?
- * @param target destination for the message, NULL for multicast to all tunnel targets 
+ * @param target destination for the message
+ *               NULL for multicast to all tunnel targets 
  * @param notify_size how many bytes of buffer space does notify want?
  * @param notify function to call when buffer space is available;
  *        will be called with NULL on timeout or if the overall queue
index 145807338f319e32a96934d54a6810c5b350be0b..f6be64457d3705168729286bc2ec6a1cb61ef430 100644 (file)
@@ -279,6 +279,7 @@ struct Path
 };
 
 
+struct Client; /* FWD declaration */
 /**
  * Struct containing all information regarding a tunnel
  * For an intermediate node the improtant info used will be:
@@ -337,6 +338,11 @@ struct MESH_tunnel
      */
     struct Path                 *paths;
 
+    /**
+     * If this tunnel was created by a local client, what's its handle?
+     */
+    struct Client               *client;
+
     /**
      * Messages ready to transmit??? -- FIXME real queues needed
      */
@@ -347,10 +353,6 @@ struct MESH_tunnel
      */
     struct GNUNET_MessageHeader *msg_in;
 
-    /**
-     * If this tunnel was created by a local client, what's its handle?
-     */
-    struct GNUNET_SERVER_Client *initiator;
 };
 
 /**
@@ -391,8 +393,8 @@ struct Client
 /**
  * All the clients
  */
-// static struct Client            clients_head;
-// static struct Client            clients_tail;
+//static struct Client            clients_head;
+//static struct Client            clients_tail;
 
 /**
  * All the tunnels
@@ -522,7 +524,20 @@ handle_local_new_client (void *cls,
                          struct GNUNET_SERVER_Client *client,
                          const struct GNUNET_MessageHeader *message)
 {
-    return;
+    struct Client *c;
+    c = GNUNET_malloc(sizeof(struct Client));
+    c->handle = client;
+    //c->messages_subscribed = message->;
+    
+      /*client *c;
+  tunnel *t;
+
+  t = new;
+  GNUNET_CONTAINER_DLL_insert (c->my_tunnels_head,
+                               c->my_tunnels_tail,
+                               t);*/
+
+
 }
 
 /**
@@ -558,29 +573,23 @@ handle_local_network_traffic (void *cls,
 /**
  * Functions to handle messages from clients
  */
-/* MESSAGES DEFINED:
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT              272
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ANY     273
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ALL     274
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD     275
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL     276
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE 277
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL  278
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY       279
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATED       280
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_DESTROYED     281
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA                 282
-#define GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST       283
- */
 static struct GNUNET_SERVER_MessageHandler plugin_handlers[] = {
   {&handle_local_new_client, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT, 0},
-  {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD, 0},
-  {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL, 0},
-  {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE, sizeof(struct GNUNET_MESH_ConnectPeerByType)},
-  {&handle_local_connect, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL, 0},
-  {&handle_local_network_traffic, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY, 0},
-  {&handle_local_network_traffic, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA, 0}, /* FIXME needed? */
-  {&handle_local_network_traffic, NULL, GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST, 0}, /* FIXME needed? */
+  {&handle_local_connect, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_ADD, 0},
+  {&handle_local_connect, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_DEL, 0},
+  {&handle_local_connect, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_BY_TYPE,
+   sizeof(struct GNUNET_MESH_ConnectPeerByType)},
+  {&handle_local_connect, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_CONNECT_PEER_CANCEL, 0},
+  {&handle_local_network_traffic, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_TRANSMIT_READY, 0},
+  {&handle_local_network_traffic, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA, 0}, /* FIXME needed? */
+  {&handle_local_network_traffic, NULL,
+   GNUNET_MESSAGE_TYPE_MESH_LOCAL_DATA_BROADCAST, 0}, /* FIXME needed? */
   {NULL, NULL, 0, 0}
 };
 
@@ -678,12 +687,13 @@ run (void *cls,
 int
 main (int argc, char *const *argv)
 {
-  int ret;
-
-  ret = (GNUNET_OK ==
-         GNUNET_SERVICE_run (argc,
-                             argv,
-                             "mesh",
-                             GNUNET_SERVICE_OPTION_NONE, &run, NULL)) ? 0 : 1;
-  return ret;
-}
+    int ret;
+
+    ret = (GNUNET_OK ==
+           GNUNET_SERVICE_run (argc,
+                               argv,
+                               "mesh",
+                               GNUNET_SERVICE_OPTION_NONE,
+                               &run, NULL)) ? 0 : 1;
+    return ret;
+    }