gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r21033 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r21033 - gnunet/src/ats
Date: Thu, 19 Apr 2012 17:11:54 +0200

Author: wachs
Date: 2012-04-19 17:11:54 +0200 (Thu, 19 Apr 2012)
New Revision: 21033

Modified:
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
   gnunet/src/ats/perf_ats_mlp.c
   gnunet/src/ats/test_ats_mlp.c
   gnunet/src/ats/test_ats_mlp_averaging.c
Log:
- fixes


Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-04-19 14:58:38 UTC 
(rev 21032)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2012-04-19 15:11:54 UTC 
(rev 21033)
@@ -976,6 +976,7 @@
 
 int GAS_mlp_solve_problem (struct GAS_MLP_Handle *mlp, struct 
GAS_MLP_SolutionContext *ctx);
 
+
 static void
 mlp_scheduler (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
@@ -993,6 +994,7 @@
     GAS_mlp_solve_problem(mlp, &ctx);
 }
 
+
 /**
  * Solves the MLP problem
  *
@@ -1003,6 +1005,19 @@
 GAS_mlp_solve_problem (struct GAS_MLP_Handle *mlp, struct 
GAS_MLP_SolutionContext *ctx)
 {
   int res;
+  /* Check if solving is already running */
+  if (GNUNET_YES == mlp->semaphore)
+  {
+    if (mlp->mlp_task != GNUNET_SCHEDULER_NO_TASK)
+    {
+      GNUNET_SCHEDULER_cancel(mlp->mlp_task);
+      mlp->mlp_task = GNUNET_SCHEDULER_NO_TASK;
+    }
+    mlp->mlp_task = GNUNET_SCHEDULER_add_delayed (mlp->exec_interval, 
&mlp_scheduler, mlp);
+    return GNUNET_SYSERR;
+  }
+  mlp->semaphore = GNUNET_YES;
+
   mlp->last_execution = GNUNET_TIME_absolute_get ();
 
   ctx->lp_result = GNUNET_SYSERR;
@@ -1025,6 +1040,7 @@
   if (res != GNUNET_OK)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "LP Problem solving failed\n");
+    mlp->semaphore = GNUNET_NO;
     return GNUNET_SYSERR;
   }
 
@@ -1041,6 +1057,7 @@
   if (res != GNUNET_OK)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "MLP Problem solving failed\n");
+    mlp->semaphore = GNUNET_NO;
     return GNUNET_SYSERR;
   }
 #if WRITE_MLP
@@ -1085,7 +1102,8 @@
     GNUNET_SCHEDULER_cancel(mlp->mlp_task);
     mlp->mlp_task = GNUNET_SCHEDULER_NO_TASK;
   }
-  //mlp->mlp_task = GNUNET_SCHEDULER_add_delayed (mlp->exec_interval, 
&mlp_scheduler, mlp);
+  mlp->mlp_task = GNUNET_SCHEDULER_add_delayed (mlp->exec_interval, 
&mlp_scheduler, mlp);
+  mlp->semaphore = GNUNET_NO;
   return res;
 }
 
@@ -1360,7 +1378,7 @@
   mlp->b_min = b_min;
   mlp->n_min = n_min;
   mlp->m_q = GNUNET_ATS_QualityPropertiesCount;
-
+  mlp->semaphore = GNUNET_NO;
   return mlp;
 }
 

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2012-04-19 14:58:38 UTC 
(rev 21032)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2012-04-19 15:11:54 UTC 
(rev 21033)
@@ -139,6 +139,8 @@
    */
   int auto_solve;
 
+  int semaphore;
+
   /* state information */
 
   /**

Modified: gnunet/src/ats/perf_ats_mlp.c
===================================================================
--- gnunet/src/ats/perf_ats_mlp.c       2012-04-19 14:58:38 UTC (rev 21032)
+++ gnunet/src/ats/perf_ats_mlp.c       2012-04-19 15:11:54 UTC (rev 21033)
@@ -41,6 +41,7 @@
 static unsigned int peers;
 static unsigned int addresses;
 static unsigned int numeric;
+static unsigned int updates;
 
 static int start;
 static int end;

Modified: gnunet/src/ats/test_ats_mlp.c
===================================================================
--- gnunet/src/ats/test_ats_mlp.c       2012-04-19 14:58:38 UTC (rev 21032)
+++ gnunet/src/ats/test_ats_mlp.c       2012-04-19 15:11:54 UTC (rev 21033)
@@ -75,6 +75,7 @@
 #endif
   struct ATS_Address addr[10];
   struct ATS_PreferedAddress *res[10];
+  struct GAS_MLP_SolutionContext ctx;
 
   stats = GNUNET_STATISTICS_create("ats", cfg);
 
@@ -140,7 +141,9 @@
   GAS_mlp_address_update (mlp, addresses, &addr[2]);
   GNUNET_assert (mlp->addr_in_problem == 3);
 
-  GNUNET_assert (GNUNET_OK == GAS_mlp_solve_problem(mlp));
+  GNUNET_assert (GNUNET_OK == GAS_mlp_solve_problem(mlp, &ctx));
+  GNUNET_assert (GNUNET_OK == ctx.lp_result);
+  GNUNET_assert (GNUNET_OK == ctx.mlp_result);
 
   res[0] = GAS_mlp_get_preferred_address(mlp, addresses, &p[0]);
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Preferred address `%s' outbound 
bandwidth: %u Bps\n",res[0]->address->plugin, res[0]->bandwidth_out);

Modified: gnunet/src/ats/test_ats_mlp_averaging.c
===================================================================
--- gnunet/src/ats/test_ats_mlp_averaging.c     2012-04-19 14:58:38 UTC (rev 
21032)
+++ gnunet/src/ats/test_ats_mlp_averaging.c     2012-04-19 15:11:54 UTC (rev 
21033)
@@ -76,6 +76,7 @@
   struct ATS_Address addr[10];
   struct ATS_PreferedAddress *res[10];
   struct MLP_information *mlpi;
+  struct GAS_MLP_SolutionContext ctx;
 
   stats = GNUNET_STATISTICS_create("ats", cfg);
 
@@ -129,7 +130,9 @@
   GNUNET_assert (mlp->addr_in_problem == 1);
 
 
-  GNUNET_assert (GNUNET_OK == GAS_mlp_solve_problem(mlp));
+  GNUNET_assert (GNUNET_OK == GAS_mlp_solve_problem(mlp, &ctx));
+  GNUNET_assert (GNUNET_OK == ctx.lp_result);
+  GNUNET_assert (GNUNET_OK == ctx.mlp_result);
 
   res[0] = GAS_mlp_get_preferred_address(mlp, addresses, &p[0]);
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Preferred address `%s' outbound 
bandwidth: %u Bps\n",res[0]->address->plugin, res[0]->bandwidth_out);




reply via email to

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