gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r27123 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r27123 - gnunet/src/mesh
Date: Tue, 14 May 2013 13:59:48 +0200

Author: bartpolot
Date: 2013-05-14 13:59:48 +0200 (Tue, 14 May 2013)
New Revision: 27123

Added:
   gnunet/src/mesh/mesh_path.c
   gnunet/src/mesh/mesh_path.h
Modified:
   gnunet/src/mesh/Makefile.am
   gnunet/src/mesh/gnunet-service-mesh-new.c
Log:
- Remove old tree lib


Modified: gnunet/src/mesh/Makefile.am
===================================================================
--- gnunet/src/mesh/Makefile.am 2013-05-14 11:51:53 UTC (rev 27122)
+++ gnunet/src/mesh/Makefile.am 2013-05-14 11:59:48 UTC (rev 27123)
@@ -1,4 +1,4 @@
-INCLUDES = -I$(top_srcdir)/src/include
+NCLUDES = -I$(top_srcdir)/src/include
 
 if MINGW
   WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
@@ -102,7 +102,7 @@
 
 gnunet_service_mesh_new_SOURCES = \
  gnunet-service-mesh-new.c \
- mesh_tunnel_tree.c \
+ mesh_path.c \
  mesh_common.c
 gnunet_service_mesh_new_CFLAGS = $(AM_CFLAGS)
 gnunet_service_mesh_new_LDADD = \
@@ -156,7 +156,7 @@
 test_mesh_api_LDADD = \
  $(top_builddir)/src/util/libgnunetutil.la \
  $(top_builddir)/src/testing/libgnunettesting.la \
- $(top_builddir)/src/mesh/libgnunetmesh.la
+ $(top_builddir)/src/mesh/libgnunetmesh2.la
 test_mesh_api_DEPENDENCIES = \
   libgnunetmesh.la \
    $(top_builddir)/src/util/libgnunetutil.la

Modified: gnunet/src/mesh/gnunet-service-mesh-new.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh-new.c   2013-05-14 11:51:53 UTC (rev 
27122)
+++ gnunet/src/mesh/gnunet-service-mesh-new.c   2013-05-14 11:59:48 UTC (rev 
27123)
@@ -48,7 +48,7 @@
 #include "platform.h"
 #include "mesh2.h"
 #include "mesh2_protocol.h"
-#include "mesh_tunnel_tree.h"
+#include "mesh_path.h"
 #include "block_mesh.h"
 #include "gnunet_dht_service.h"
 #include "gnunet_statistics_service.h"
@@ -309,7 +309,7 @@
     /**
      * State of the tunnel.
      */
-  MeshTunnelState state;
+  enum MeshTunnelState state;
 
     /**
      * Local tunnel number ( >= GNUNET_MESH_LOCAL_TUNNEL_ID_CLI or 0 )

Added: gnunet/src/mesh/mesh_path.c
===================================================================
--- gnunet/src/mesh/mesh_path.c                         (rev 0)
+++ gnunet/src/mesh/mesh_path.c 2013-05-14 11:59:48 UTC (rev 27123)
@@ -0,0 +1,125 @@
+/*
+     This file is part of GNUnet.
+     (C) 2001 - 2013 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 3, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file mesh/mesh_path.c
+ * @brief Path handling functions
+ * @author Bartlomiej Polot
+ */
+
+#include "mesh2.h"
+#include "mesh_path.h"
+
+
+/**
+ * Create a new path
+ *
+ * @param length How many hops will the path have.
+ *
+ * @return A newly allocated path with a peer array of the specified length.
+ */
+struct MeshPeerPath *
+path_new (unsigned int length)
+{
+  struct MeshPeerPath *p;
+
+  p = GNUNET_malloc (sizeof (struct MeshPeerPath));
+  if (length > 0)
+  {
+    p->length = length;
+    p->peers = GNUNET_malloc (length * sizeof (GNUNET_PEER_Id));
+  }
+  return p;
+}
+
+
+/**
+ * Invert the path
+ *
+ * @param path the path to invert
+ */
+void
+path_invert (struct MeshPeerPath *path)
+{
+  GNUNET_PEER_Id aux;
+  unsigned int i;
+
+  for (i = 0; i < path->length / 2; i++)
+  {
+    aux = path->peers[i];
+    path->peers[i] = path->peers[path->length - i - 1];
+    path->peers[path->length - i - 1] = aux;
+  }
+}
+
+
+/**
+ * Duplicate a path, incrementing short peer's rc.
+ *
+ * @param path The path to duplicate.
+ */
+struct MeshPeerPath *
+path_duplicate (struct MeshPeerPath *path)
+{
+  struct MeshPeerPath *aux;
+  unsigned int i;
+
+  aux = path_new (path->length);
+  memcpy (aux->peers, path->peers, path->length * sizeof (GNUNET_PEER_Id));
+  for (i = 0; i < path->length; i++)
+    GNUNET_PEER_change_rc (path->peers[i], 1);
+  return aux;
+}
+
+
+/**
+ * Get the length of a path.
+ *
+ * @param path The path to measure, with the local peer at any point of it.
+ *
+ * @return Number of hops to reach destination.
+ *         UINT_MAX in case the peer is not in the path.
+ */
+unsigned int
+path_get_length (struct MeshPeerPath *path)
+{
+  if (NULL == path)
+    return UINT_MAX;
+  return path->length;
+}
+
+
+/**
+ * Destroy the path and free any allocated resources linked to it
+ *
+ * @param p the path to destroy
+ *
+ * @return GNUNET_OK on success
+ */
+int
+path_destroy (struct MeshPeerPath *p)
+{
+  if (NULL == p)
+    return GNUNET_OK;
+  GNUNET_PEER_decrement_rcs (p->peers, p->length);
+  GNUNET_free_non_null (p->peers);
+  GNUNET_free (p);
+  return GNUNET_OK;
+}

Added: gnunet/src/mesh/mesh_path.h
===================================================================
--- gnunet/src/mesh/mesh_path.h                         (rev 0)
+++ gnunet/src/mesh/mesh_path.h 2013-05-14 11:59:48 UTC (rev 27123)
@@ -0,0 +1,133 @@
+/*
+     This file is part of GNUnet.
+     (C) 2001 - 2013 Christian Grothoff (and other contributing authors)
+
+     GNUnet is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published
+     by the Free Software Foundation; either version 3, or (at your
+     option) any later version.
+
+     GNUnet is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with GNUnet; see the file COPYING.  If not, write to the
+     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+     Boston, MA 02111-1307, USA.
+*/
+
+/**
+ * @file mesh/mesh_path.h
+ * @brief Path handling functions
+ * @author Bartlomiej Polot
+ */
+
+#ifndef MESH_PATH_H
+#define MESH_PATH_H
+
+#ifdef __cplusplus
+extern "C"
+{
+  #if 0                           /* keep Emacsens' auto-indent happy */
+}
+#endif
+#endif
+
+#include "mesh2.h"
+
+/******************************************************************************/
+/************************      DATA STRUCTURES     
****************************/
+/******************************************************************************/
+
+/**
+ * Information regarding a possible path to reach a single peer
+ */
+struct MeshPeerPath
+{
+
+    /**
+     * Linked list
+     */
+  struct MeshPeerPath *next;
+  struct MeshPeerPath *prev;
+
+    /**
+     * List of all the peers that form the path from origin to target.
+     */
+  GNUNET_PEER_Id *peers;
+
+    /**
+     * Number of peers (hops) in the path
+     */
+  unsigned int length;
+
+};
+
+/******************************************************************************/
+/*************************        FUNCTIONS       
*****************************/
+/******************************************************************************/
+
+/**
+ * Create a new path.
+ *
+ * @param length How many hops will the path have.
+ *
+ * @return A newly allocated path with a peer array of the specified length.
+ */
+struct MeshPeerPath *
+path_new (unsigned int length);
+
+
+/**
+ * Invert the path.
+ *
+ * @param path The path to invert.
+ */
+void
+path_invert (struct MeshPeerPath *path);
+
+
+/**
+ * Duplicate a path, incrementing short peer's rc.
+ *
+ * @param path The path to duplicate.
+ */
+struct MeshPeerPath *
+path_duplicate (struct MeshPeerPath *path);
+
+
+/**
+ * Get the length of a path.
+ *
+ * @param path The path to measure, with the local peer at any point of it.
+ *
+ * @return Number of hops to reach destination.
+ *         UINT_MAX in case the peer is not in the path.
+ */
+unsigned int
+path_get_length (struct MeshPeerPath *path);
+
+
+/**
+ * Destroy the path and free any allocated resources linked to it
+ *
+ * @param p the path to destroy
+ *
+ * @return GNUNET_OK on success
+ */
+int
+path_destroy (struct MeshPeerPath *p);
+
+
+#if 0                           /* keep Emacsens' auto-indent happy */
+{
+  #endif
+  #ifdef __cplusplus
+}
+#endif
+
+
+/* ifndef MESH_PATH_H */
+#endif
\ No newline at end of file




reply via email to

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