gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r16615 - in gnunet/src: include util


From: gnunet
Subject: [GNUnet-SVN] r16615 - in gnunet/src: include util
Date: Fri, 26 Aug 2011 13:42:39 +0200

Author: wachs
Date: 2011-08-26 13:42:39 +0200 (Fri, 26 Aug 2011)
New Revision: 16615

Modified:
   gnunet/src/include/gnunet_server_lib.h
   gnunet/src/util/server.c
Log:
changes to server lib

Added a unique ID to struct GNUNET_SERVER_Client to be able to distinguish 
between different clients



Modified: gnunet/src/include/gnunet_server_lib.h
===================================================================
--- gnunet/src/include/gnunet_server_lib.h      2011-08-25 15:10:42 UTC (rev 
16614)
+++ gnunet/src/include/gnunet_server_lib.h      2011-08-26 11:42:39 UTC (rev 
16615)
@@ -326,6 +326,16 @@
 
 
 /**
+ * Retrieve the unique id from the opaque defined GNUNET_SERVER_Client
+ *
+ * @param client the client
+ * @return the unique id
+ */
+uint64_t
+GNUNET_SERVER_client_get_id (struct GNUNET_SERVER_Client *client);
+
+
+/**
  * Functions with this signature are called whenever a client
  * is disconnected on the network level.
  *

Modified: gnunet/src/util/server.c
===================================================================
--- gnunet/src/util/server.c    2011-08-25 15:10:42 UTC (rev 16614)
+++ gnunet/src/util/server.c    2011-08-26 11:42:39 UTC (rev 16615)
@@ -247,6 +247,11 @@
    * Type of last message processed (for warn_no_receive_done).
    */
   uint16_t warn_type;
+
+  /**
+   * unique identifier to distinguish between clients
+   */
+  uint64_t id;
 };
 
 
@@ -933,6 +938,18 @@
 
 
 /**
+ * Get a unique identifier for each GNUNET_SERVER_Client
+ */
+static uint64_t
+get_client_id (void)
+{
+  static uint64_t id;
+
+  GNUNET_assert (id < ULONG_LONG_MAX);
+  return (id++);
+}
+
+/**
  * Add a TCP socket-based connection to the set of handles managed by
  * this server.  Use this function for outgoing (P2P) connections that
  * we initiated (and where this server should process incoming
@@ -963,6 +980,7 @@
   client->receive_pending = GNUNET_YES;
   client->callback = NULL;
   client->callback_cls = NULL;
+  client->id = get_client_id ();
   GNUNET_CONNECTION_receive (client->connection,
                              GNUNET_SERVER_MAX_MESSAGE_SIZE - 1,
                              client->idle_timeout, &process_incoming, client);
@@ -1275,6 +1293,18 @@
 
 
 /**
+ * Retrieve the unique id from the opaque defined GNUNET_SERVER_Client
+ *
+ * @param client the client
+ * @return the unique id
+ */
+uint64_t
+GNUNET_SERVER_client_get_id (struct GNUNET_SERVER_Client *client)
+{
+  return client->id;
+}
+
+/**
  * Resume receiving from this client, we are done processing the
  * current request.  This function must be called from within each
  * GNUNET_SERVER_MessageCallback (or its respective continuations).




reply via email to

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