[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17469 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17469 - gnunet/src/ats |
Date: |
Thu, 13 Oct 2011 23:01:22 +0200 |
Author: grothoff
Date: 2011-10-13 23:01:22 +0200 (Thu, 13 Oct 2011)
New Revision: 17469
Modified:
gnunet/src/ats/gnunet-service-ats.c
gnunet/src/ats/gnunet-service-ats_performance.c
gnunet/src/ats/gnunet-service-ats_scheduling.c
Log:
more client disconnect code
Modified: gnunet/src/ats/gnunet-service-ats.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats.c 2011-10-13 20:55:36 UTC (rev 17468)
+++ gnunet/src/ats/gnunet-service-ats.c 2011-10-13 21:01:22 UTC (rev 17469)
@@ -60,7 +60,6 @@
}
-
/**
* A client disconnected from us. Tear down the local client
* record.
Modified: gnunet/src/ats/gnunet-service-ats_performance.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_performance.c 2011-10-13 20:55:36 UTC
(rev 17468)
+++ gnunet/src/ats/gnunet-service-ats_performance.c 2011-10-13 21:01:22 UTC
(rev 17469)
@@ -48,13 +48,26 @@
* Tail of linked list of all clients to this service.
*/
static struct PerformanceClient *pc_tail;
+
+static struct PerformanceClient *
+find_client (struct GNUNET_SERVER_Client *client)
+{
+ struct PerformanceClient * pc;
+ for (pc = pc_head; pc != NULL; pc = pc->next)
+ if (pc->client == client)
+ return pc;
+ return NULL;
+}
+
+
void
GAS_add_performance_client (struct GNUNET_SERVER_Client *client)
{
struct PerformanceClient * pc;
+ GNUNET_break (NULL == find_client (client));
pc = GNUNET_malloc (sizeof (struct PerformanceClient));
pc->client = client;
GNUNET_CONTAINER_DLL_insert(pc_head, pc_tail, pc);
@@ -64,6 +77,14 @@
void
GAS_remove_performance_client (struct GNUNET_SERVER_Client *client)
{
+ struct PerformanceClient * pc;
+
+ pc = find_client (client);
+ if (NULL == pc)
+ return;
+ GNUNET_CONTAINER_DLL_remove (pc_head, pc_tail, pc);
+ GNUNET_SERVER_client_drop (client);
+ GNUNET_free (pc);
}
Modified: gnunet/src/ats/gnunet-service-ats_scheduling.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_scheduling.c 2011-10-13 20:55:36 UTC
(rev 17468)
+++ gnunet/src/ats/gnunet-service-ats_scheduling.c 2011-10-13 21:01:22 UTC
(rev 17469)
@@ -42,29 +42,50 @@
/**
* Head of linked list of all clients to this service.
*/
-static struct SchedulingClient *ac_head;
+static struct SchedulingClient *sc_head;
/**
* Tail of linked list of all clients to this service.
*/
-static struct SchedulingClient *ac_tail;
+static struct SchedulingClient *sc_tail;
+static struct SchedulingClient *
+find_client (struct GNUNET_SERVER_Client *client)
+{
+ struct SchedulingClient * sc;
+
+ for (sc = sc_head; sc != NULL; sc = sc->next)
+ if (sc->client == client)
+ return sc;
+ return NULL;
+}
+
+
void
GAS_add_scheduling_client (struct GNUNET_SERVER_Client *client)
{
- struct SchedulingClient *ac;
+ struct SchedulingClient *sc;
- ac = GNUNET_malloc (sizeof (struct SchedulingClient));
- ac->client = client;
+ GNUNET_break (NULL == find_client (client));
+ sc = GNUNET_malloc (sizeof (struct SchedulingClient));
+ sc->client = client;
GNUNET_SERVER_client_keep (client);
- GNUNET_CONTAINER_DLL_insert(ac_head, ac_tail, ac);
+ GNUNET_CONTAINER_DLL_insert(sc_head, sc_tail, sc);
}
void
GAS_remove_scheduling_client (struct GNUNET_SERVER_Client *client)
{
+ struct SchedulingClient * sc;
+
+ sc = find_client (client);
+ if (NULL == sc)
+ return;
+ GNUNET_CONTAINER_DLL_remove (sc_head, sc_tail, sc);
+ GNUNET_SERVER_client_drop (client);
+ GNUNET_free (sc);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17469 - gnunet/src/ats,
gnunet <=