+ if(action->resource_type==(surf_resource_t)surf_network_resource)
+ surf_network_resource->common_public->suspend(action);
+ else if(action->resource_type==(surf_resource_t)surf_cpu_resource)
+ surf_cpu_resource->common_public->suspend(action);
+ else DIE_IMPOSSIBLE;
+}
+
+static void action_resume(surf_action_t action)
+{
+ if(action->resource_type==(surf_resource_t)surf_network_resource)
+ surf_network_resource->common_public->resume(action);
+ else if(action->resource_type==(surf_resource_t)surf_cpu_resource)
+ surf_cpu_resource->common_public->resume(action);
+ else DIE_IMPOSSIBLE;
+}
+
+static int action_is_suspended(surf_action_t action)
+{
+ if(action->resource_type==(surf_resource_t)surf_network_resource)
+ return surf_network_resource->common_public->is_suspended(action);
+ if(action->resource_type==(surf_resource_t)surf_cpu_resource)
+ return surf_cpu_resource->common_public->is_suspended(action);
+ DIE_IMPOSSIBLE;
+}
+
+static surf_action_t communicate(void *workstation_src,
+ void *workstation_dst, double size,
+ double rate)
+{
+ return surf_network_resource->extension_public->
+ communicate(((workstation_CLM03_t) workstation_src)->network_card,
+ ((workstation_CLM03_t) workstation_dst)->network_card, size, rate);