guix-env: some update.
[oweals/gnunet.git] / src / ats / gnunet-ats-solver-eval.h
index 0a7270bef39ac49117190d99400b0bbebf44f960..4136605a7cf35875e790f8c8a01fcac98dfa608b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  This file is part of GNUnet.
- (C) 2010-2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2010-2013 GNUnet e.V.
 
  GNUnet is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
  You should have received a copy of the GNU General Public License
  along with GNUnet; see the file COPYING.  If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
  */
 /**
  * @file ats-tests/ats-testing-experiment.c
@@ -70,7 +70,7 @@ struct SolverHandle
   /**
    * Solver handle
    */
-  void *solver;
+  struct GNUNET_ATS_SolverFunctions *sf;
 
   /**
    * Address hashmap
@@ -92,10 +92,10 @@ struct LoggingFileHandle
   struct LoggingFileHandle *prev;
 
   /* peer id */
-  int pid;
+  long long unsigned int pid;
 
   /* address id */
-  int aid;
+  long long unsigned int aid;
 
   struct GNUNET_DISK_FileHandle *f_hd;
 
@@ -118,10 +118,11 @@ struct LoggingPeer
   struct LoggingPeer *prev;
   struct LoggingPeer *next;
 
-  int id;
+  long long unsigned int id;
   struct GNUNET_PeerIdentity peer_id;
-  double pref_abs[GNUNET_ATS_PreferenceCount];
-  double pref_norm[GNUNET_ATS_PreferenceCount];
+  double pref_abs[GNUNET_ATS_PREFERENCE_END];
+  double pref_norm[GNUNET_ATS_PREFERENCE_END];
+  int is_requested;
 
   struct LoggingAddress *addr_head;
   struct LoggingAddress *addr_tail;
@@ -132,12 +133,11 @@ struct LoggingAddress
   struct LoggingAddress *next;
   struct LoggingAddress *prev;
 
-  int aid;
+  long long unsigned int aid;
   int active;
-  int used;
   uint32_t network;
-  struct GNUNET_BANDWIDTH_Value32NBO assigned_bw_in;
-  struct GNUNET_BANDWIDTH_Value32NBO assigned_bw_out;
+  uint32_t assigned_bw_in;
+  uint32_t assigned_bw_out;
 
   double prop_abs[GNUNET_ATS_PropertyCount];
   double prop_norm[GNUNET_ATS_PropertyCount];
@@ -149,12 +149,17 @@ struct TestPeer
   struct TestPeer *prev;
   struct TestPeer *next;
 
-  int id;
+
+  long long unsigned int id;
+  int is_requested;
   struct GNUNET_PeerIdentity peer_id;
 
   double pref_abs[GNUNET_ATS_PreferenceCount];
   double pref_norm[GNUNET_ATS_PreferenceCount];
 
+  uint32_t assigned_bw_in;
+  uint32_t assigned_bw_out;
+
   struct TestAddress *addr_head;
   struct TestAddress *addr_tail;
 };
@@ -165,7 +170,7 @@ struct TestAddress
   struct TestAddress *next;
   struct TestAddress *prev;
 
-  int aid;
+  long long unsigned int aid;
   struct ATS_Address *ats_addr;
   uint32_t network;
 
@@ -194,8 +199,9 @@ struct GNUNET_ATS_TEST_Operation
   long long unsigned int address_id;
   long long unsigned int peer_id;
   long long unsigned int client_id;
+
   long long unsigned int address_session;
-  long long unsigned int address_network;
+  unsigned int address_network;
   char*address;
   char*plugin;
 
@@ -204,11 +210,12 @@ struct GNUNET_ATS_TEST_Operation
   long long unsigned int max_rate;
   struct GNUNET_TIME_Relative period;
   struct GNUNET_TIME_Relative frequency;
+  struct GNUNET_TIME_Relative feedback_delay;
 
   enum OperationType type;
   enum GeneratorType gen_type;
   enum GNUNET_ATS_PreferenceKind pref_type;
-  enum GNUNET_ATS_Property prop_type;
+  // enum GNUNET_ATS_Property prop_type;
 };
 
 struct Episode
@@ -223,7 +230,7 @@ struct Episode
 
 struct LoggingHandle
 {
-  GNUNET_SCHEDULER_TaskIdentifier logging_task;
+  struct GNUNET_SCHEDULER_Task * logging_task;
   struct GNUNET_TIME_Relative log_freq;
 
   /* DLL list for logging time steps */
@@ -236,6 +243,9 @@ struct Experiment
   char *name;
   char *log_prefix;
   char *cfg_file;
+  char *log_output_dir;
+  int log_append_time_stamp;
+
   struct GNUNET_TIME_Relative log_freq;
   struct GNUNET_TIME_Relative max_duration;
   struct GNUNET_TIME_Relative total_duration;
@@ -245,8 +255,8 @@ struct Experiment
 
   struct GNUNET_CONFIGURATION_Handle *cfg;
 
-  GNUNET_SCHEDULER_TaskIdentifier experiment_timeout_task;
-  GNUNET_SCHEDULER_TaskIdentifier episode_timeout_task;
+  struct GNUNET_SCHEDULER_Task * experiment_timeout_task;
+  struct GNUNET_SCHEDULER_Task * episode_timeout_task;
   struct Episode *cur;
 
   GNUNET_ATS_TESTING_EpisodeDoneCallback ep_done_cb;
@@ -260,7 +270,7 @@ struct PreferenceGenerator
 
   enum GeneratorType type;
 
-  unsigned int peer;
+  long long unsigned int peer;
   unsigned int client_id;
 
   enum GNUNET_ATS_PreferenceKind kind;
@@ -269,10 +279,30 @@ struct PreferenceGenerator
   long int max_value;
   struct GNUNET_TIME_Relative duration_period;
   struct GNUNET_TIME_Relative frequency;
+  struct GNUNET_TIME_Relative feedback_frequency;
 
-  GNUNET_SCHEDULER_TaskIdentifier set_task;
+  struct GNUNET_SCHEDULER_Task * set_task;
+  struct GNUNET_SCHEDULER_Task * feedback_task;
   struct GNUNET_TIME_Absolute next_ping_transmission;
   struct GNUNET_TIME_Absolute time_start;
+
+
+  /* Feedback */
+  uint32_t feedback_bw_out_acc;
+  uint32_t feedback_bw_in_acc;
+  uint32_t feedback_delay_acc;
+
+  double pref_bw_old;
+  double pref_latency_old;
+
+  struct GNUNET_TIME_Absolute feedback_last;
+
+  struct GNUNET_TIME_Absolute feedback_last_bw_update;
+  struct GNUNET_TIME_Absolute feedback_last_delay_update;
+  uint32_t last_assigned_bw_in;
+  uint32_t last_assigned_bw_out;
+  double last_delay_value;
+
 };
 
 
@@ -283,8 +313,8 @@ struct PropertyGenerator
 
   enum GeneratorType type;
 
-  unsigned int peer;
-  unsigned int address_id;
+  long long unsigned int peer;
+  long long unsigned int address_id;
 
   struct TestPeer *test_peer;
   struct TestAddress *test_address;
@@ -295,7 +325,7 @@ struct PropertyGenerator
   struct GNUNET_TIME_Relative duration_period;
   struct GNUNET_TIME_Relative frequency;
 
-  GNUNET_SCHEDULER_TaskIdentifier set_task;
+  struct GNUNET_SCHEDULER_Task * set_task;
   struct GNUNET_TIME_Absolute next_ping_transmission;
   struct GNUNET_TIME_Absolute time_start;
 };