gnunet-svn
[Top][All Lists]
Advanced

[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;




reply via email to

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