[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19120 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19120 - gnunet/src/ats |
Date: |
Fri, 13 Jan 2012 17:12:56 +0100 |
Author: wachs
Date: 2012-01-13 17:12:56 +0100 (Fri, 13 Jan 2012)
New Revision: 19120
Modified:
gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
Log:
- more ats
Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c 2012-01-13 14:49:41 UTC
(rev 19119)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c 2012-01-13 16:12:56 UTC
(rev 19120)
@@ -144,6 +144,7 @@
/* solve MLP problem */
res = glp_intopt(mlp->prob, &mlp->control_param_mlp);
+
if (res == 0)
{
/* The MLP problem instance has been successfully solved. */
@@ -199,6 +200,21 @@
}
/**
+ * Solves the MLP problem
+ * @return GNUNET_OK if could be solved, GNUNET_SYSERR on failure
+ */
+int
+mlp_solve_problem (struct GAS_MLP_Handle *mlp)
+{
+ int res;
+ mlp->last_execution = GNUNET_TIME_absolute_get ();
+ res = mlp_solve_lp_problem (mlp);
+ if (res == GNUNET_OK)
+ res = mlp_solve_mlp_problem (mlp);
+ return res;
+}
+
+/**
* Init the MLP problem solving component
*
* @param stats the GNUNET_STATISTICS handle
@@ -243,6 +259,7 @@
#endif
GAS_mlp->control_param_mlp.tm_lim = max_duration.rel_value;
+ GAS_mlp->last_execution = GNUNET_TIME_absolute_get_forever();
return GNUNET_OK;
}
@@ -258,7 +275,25 @@
void
GAS_mlp_address_update (struct GNUNET_CONTAINER_MultiHashMap * addresses,
struct ATS_Address *address)
{
+ int new;
+ GNUNET_STATISTICS_update (GAS_mlp->stats,"# LP address updates", 1,
GNUNET_NO);
+
+ /* We update a new address */
+ if (address->mlp_information == NULL)
+ {
+ new = GNUNET_YES;
+ address->mlp_information = GNUNET_malloc (sizeof (struct MLP_information));
+ }
+ else
+ new = GNUNET_NO;
+
+ /* Do the update */
+
+ /* Recalculate */
+ if (new == GNUNET_YES)
+ GAS_mlp->presolver_required = GNUNET_YES;
+ mlp_solve_problem (GAS_mlp);
}
/**
@@ -269,7 +304,20 @@
void
GAS_mlp_address_delete (struct GNUNET_CONTAINER_MultiHashMap * addresses,
struct ATS_Address *address)
{
+ GNUNET_STATISTICS_update (GAS_mlp->stats,"# LP address deletions", 1,
GNUNET_NO);
+ /* Free resources */
+ if (address->mlp_information != NULL)
+ {
+ GNUNET_free (address->mlp_information);
+ address->mlp_information = NULL;
+ }
+
+ /* Update problem */
+
+ /* Recalculate */
+ GAS_mlp->presolver_required = GNUNET_YES;
+ mlp_solve_problem (GAS_mlp);
}
/**
@@ -278,7 +326,9 @@
void
GAS_mlp_address_change_preference (struct GNUNET_CONTAINER_MultiHashMap *
addresses, struct ATS_Address *address)
{
+ GNUNET_STATISTICS_update (GAS_mlp->stats,"# LP address preference changes",
1, GNUNET_NO);
+
}
/**
Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.h 2012-01-13 14:49:41 UTC
(rev 19119)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.h 2012-01-13 16:12:56 UTC
(rev 19120)
@@ -96,6 +96,12 @@
/* statistics */
/**
+ * Time of last execution
+ */
+ struct GNUNET_TIME_Absolute last_execution;
+
+
+ /**
* How often was the LP problem solved
*/
unsigned int lp_solved;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19120 - gnunet/src/ats,
gnunet <=