-static surf_action_t communicate(void *workstation_src,
- void *workstation_dst, double size,
- double rate)
+#ifdef HAVE_TRACING
+static void ws_action_set_category(surf_action_t action, const char *category)
+{
+ if (action->model_type == surf_network_model)
+ surf_network_model->set_category(action, category);
+ else if (action->model_type == surf_cpu_model)
+ surf_cpu_model->set_category(action, category);
+ else
+ DIE_IMPOSSIBLE;
+}
+#endif
+
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+static int ws_get_latency_limited(surf_action_t action)
+{
+ if (action->model_type == surf_network_model)
+ return surf_network_model->get_latency_limited(action);
+ else
+ return 0;
+}
+#endif
+
+static double ws_action_get_remains(surf_action_t action)
+{
+ if (action->model_type == surf_network_model)
+ return surf_network_model->get_remains(action);
+ if (action->model_type == surf_cpu_model)
+ return surf_cpu_model->get_remains(action);
+ DIE_IMPOSSIBLE;
+ return -1.0;
+}
+
+static surf_action_t ws_communicate(void *workstation_src,
+ void *workstation_dst, double size,
+ double rate)