[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r21033 - gnunet/src/ats,
gnunet <=