return 0;
}
-static void action_free(surf_action_t action)
+static int action_free(surf_action_t action)
{
if(action->resource_type==(surf_resource_t)surf_network_resource)
- surf_network_resource->common_public->action_free(action);
+ return surf_network_resource->common_public->action_free(action);
else if(action->resource_type==(surf_resource_t)surf_cpu_resource)
- surf_cpu_resource->common_public->action_free(action);
+ return surf_cpu_resource->common_public->action_free(action);
+ else DIE_IMPOSSIBLE;
+ return 0;
+}
+
+
+static void action_use(surf_action_t action)
+{
+ if(action->resource_type==(surf_resource_t)surf_network_resource)
+ surf_network_resource->common_public->action_use(action);
+ else if(action->resource_type==(surf_resource_t)surf_cpu_resource)
+ surf_cpu_resource->common_public->action_use(action);
else DIE_IMPOSSIBLE;
return;
}
DIE_IMPOSSIBLE;
}
+static void action_set_max_duration(surf_action_t action, double duration)
+{
+ if(action->resource_type==(surf_resource_t)surf_network_resource)
+ surf_network_resource->common_public->set_max_duration(action,duration);
+ else if(action->resource_type==(surf_resource_t)surf_cpu_resource)
+ surf_cpu_resource->common_public->set_max_duration(action,duration);
+ else DIE_IMPOSSIBLE;
+}
+
static surf_action_t communicate(void *workstation_src,
void *workstation_dst, double size,
double rate)
surf_workstation_resource->common_public->action_get_state =
surf_action_get_state;
surf_workstation_resource->common_public->action_free = action_free;
+ surf_workstation_resource->common_public->action_use = action_use;
surf_workstation_resource->common_public->action_cancel = action_cancel;
surf_workstation_resource->common_public->action_recycle =
action_recycle;
surf_workstation_resource->common_public->suspend = action_suspend;
surf_workstation_resource->common_public->resume = action_resume;
surf_workstation_resource->common_public->is_suspended = action_is_suspended;
+ surf_workstation_resource->common_public->set_max_duration = action_set_max_duration;
surf_workstation_resource->extension_public->execute = execute;
surf_workstation_resource->extension_public->sleep = action_sleep;