- surf_network_model = xbt_new0(s_surf_model_t, 1);
-
- surf_model_init(surf_network_model);
-
- surf_network_model->common_public.get_resource_name = get_resource_name;
- surf_network_model->common_public.action_get_state = surf_action_get_state;
- surf_network_model->common_public.action_get_start_time =
- surf_action_get_start_time;
- surf_network_model->common_public.action_get_finish_time =
- surf_action_get_finish_time;
- surf_network_model->common_public.action_free = action_free;
- surf_network_model->common_public.action_use = action_use;
- surf_network_model->common_public.action_cancel = action_cancel;
- surf_network_model->common_public.action_recycle = action_recycle;
- surf_network_model->common_public.action_change_state = action_change_state;
- surf_network_model->common_public.action_set_data = surf_action_set_data;
- surf_network_model->common_public.name = "network";
-
- surf_network_model->common_private->resource_used = resource_used;
- surf_network_model->common_private->share_resources = share_resources;
- surf_network_model->common_private->update_actions_state =
- update_actions_state;
- surf_network_model->common_private->update_resource_state =
- update_resource_state;
- surf_network_model->common_private->finalize = finalize;
-
- surf_network_model->common_public.suspend = action_suspend;
- surf_network_model->common_public.resume = action_resume;
- surf_network_model->common_public.is_suspended = action_is_suspended;
- surf_cpu_model->common_public.set_max_duration = action_set_max_duration;
-
- surf_network_model->extension.network.communicate = communicate;
- surf_network_model->extension.network.get_route = get_route;
- surf_network_model->extension.network.get_route_size = get_route_size;
- surf_network_model->extension.network.get_link_name = get_link_name;
+ xbt_assert(surf_network_model == NULL);
+ if (surf_network_model)
+ return;
+ surf_network_model = surf_model_init();
+
+ surf_network_model->name = "constant time network";
+ surf_network_model->action_unref = netcste_action_unref;
+ surf_network_model->action_cancel = netcste_action_cancel;
+ surf_network_model->action_recycle = net_action_recycle;
+ surf_network_model->get_remains = net_action_get_remains;
+#ifdef HAVE_LATENCY_BOUND_TRACKING
+ surf_network_model->get_latency_limited = net_get_link_latency_limited;
+#endif
+
+ surf_network_model->model_private->resource_used = netcste_resource_used;
+ surf_network_model->model_private->share_resources =
+ netcste_share_resources;
+ surf_network_model->model_private->update_actions_state =
+ netcste_update_actions_state;
+ surf_network_model->model_private->update_resource_state =
+ netcste_update_resource_state;
+ surf_network_model->model_private->finalize = netcste_finalize;
+
+ surf_network_model->suspend = netcste_action_suspend;
+ surf_network_model->resume = netcste_action_resume;
+ surf_network_model->is_suspended = netcste_action_is_suspended;
+ surf_cpu_model->set_max_duration = net_action_set_max_duration;
+
+ surf_network_model->extension.network.communicate = netcste_communicate;