added simulation
[oweals/gnunet.git] / src / ats / libgnunet_plugin_ats_mlp.c
index 0a4c842626faa73b87a25110206be672e92885cc..07f77161fcfa137608d47a84a4650a709c10fd99 100644 (file)
@@ -1157,13 +1157,13 @@ GAS_mlp_solve_problem (void *solver)
   mlp->control_param_lp.presolve = GLP_YES;
   /* Run LP solver */
 
-  notify(mlp, GAS_OP_SOLVE_LP_START, GAS_STAT_SUCCESS,
+  notify(mlp, GAS_OP_SOLVE_MLP_LP_START, GAS_STAT_SUCCESS,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
   LOG(GNUNET_ERROR_TYPE_DEBUG,
       "Running LP solver %s\n",
       (GLP_YES == mlp->control_param_lp.presolve)? "with presolver": "without presolver");
   res_lp = mlp_solve_lp_problem(mlp);
-  notify(mlp, GAS_OP_SOLVE_LP_STOP,
+  notify(mlp, GAS_OP_SOLVE_MLP_LP_STOP,
       (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
 
@@ -1172,10 +1172,10 @@ GAS_mlp_solve_problem (void *solver)
 
   /* Run MLP solver */
   LOG(GNUNET_ERROR_TYPE_DEBUG, "Running MLP solver \n");
-  notify(mlp, GAS_OP_SOLVE_MLP_START, GAS_STAT_SUCCESS,
+  notify(mlp, GAS_OP_SOLVE_MLP_MLP_START, GAS_STAT_SUCCESS,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
   res_mip = mlp_solve_mlp_problem(mlp);
-  notify(mlp, GAS_OP_SOLVE_MLP_STOP,
+  notify(mlp, GAS_OP_SOLVE_MLP_MLP_STOP,
       (GNUNET_OK == res_lp) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
       (GNUNET_YES == mlp->mlp_prob_changed) ? GAS_INFO_FULL : GAS_INFO_UPDATED);
   notify(mlp, GAS_OP_SOLVE_STOP,
@@ -1205,11 +1205,17 @@ GAS_mlp_solve_problem (void *solver)
   mlp->ps.p_elements = mlp->p.num_elements;
 
   /* Propagate result*/
+  notify(mlp, GAS_OP_SOLVE_UPDATE_NOTIFICATION_START,
+      (GNUNET_OK == res_lp) && (GNUNET_OK == res_mip) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
+      GAS_INFO_NONE);
   if ((GNUNET_OK == res_lp) && (GNUNET_OK == res_mip))
     {
       GNUNET_CONTAINER_multipeermap_iterate(mlp->addresses,
           &mlp_propagate_results, mlp);
     }
+  notify(mlp, GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP,
+      (GNUNET_OK == res_lp) && (GNUNET_OK == res_mip) ? GAS_STAT_SUCCESS : GAS_STAT_FAIL,
+      GAS_INFO_NONE);
 
   struct GNUNET_TIME_Absolute time = GNUNET_TIME_absolute_get();
   if (GNUNET_YES == mlp->write_mip_mps)
@@ -1260,6 +1266,12 @@ GAS_mlp_address_add (void *solver,
   GNUNET_assert (NULL != solver);
   GNUNET_assert (NULL != address);
 
+  if (GNUNET_ATS_NetworkTypeCount <= network)
+  {
+   GNUNET_break (0);
+   return;
+  }
+
   if (NULL == address->solver_information)
   {
       address->solver_information = GNUNET_new (struct MLP_information);
@@ -1423,6 +1435,12 @@ GAS_mlp_address_change_network (void *solver,
   GNUNET_assert (NULL != solver);
   GNUNET_assert (NULL != address);
 
+  if (GNUNET_ATS_NetworkTypeCount <= new_network)
+  {
+   GNUNET_break (0);
+   return;
+  }
+
   if (NULL == mlpi)
   {
     GNUNET_break (0);
@@ -1782,8 +1800,9 @@ GAS_mlp_address_change_preference (void *solver,
     return;
   }
   p->f = get_peer_pref_value (mlp, peer);
+  /*
   LOG (GNUNET_ERROR_TYPE_ERROR, "PEER PREF: %s %.2f\n",
-      GNUNET_i2s(peer), p->f);
+      GNUNET_i2s(peer), p->f);*/
   mlp_create_problem_update_value (&mlp->p, p->r_c9, mlp->p.c_r, -p->f, __LINE__);
 
   /* Problem size changed: new address for peer with pending request */