-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_workstation, sd,
- "Logging specific to SimDag (workstation)");
-
-/* Creates a workstation and registers it in SD.
- */
-SD_workstation_t __SD_workstation_create(const char *name)
-{
- sg_host_t sg_host = sg_host_by_name(name);
- return sg_host;
-}
-
-/* Creates a storage and registers it in SD.
- */
-SD_storage_t __SD_storage_create(void *surf_storage, void *data)
-{
-
- SD_storage_priv_t storage;
- const char *name;
-
- storage = xbt_new(s_SD_storage_priv_t, 1);
- storage->data = data; /* user data */
- name = surf_resource_name((surf_cpp_resource_t)surf_storage);
- storage->host = (const char*)surf_storage_get_host( (surf_resource_t )surf_storage_resource_by_name(name));
- xbt_lib_set(storage_lib,name, SD_STORAGE_LEVEL, storage);
- return xbt_lib_get_elm_or_null(storage_lib, name);
-}
-
-/* Destroys a storage.
- */
-void __SD_storage_destroy(void *storage)
-{
- SD_storage_priv_t s;
-
- s = (SD_storage_priv_t) storage;
- xbt_free(s);
-}
-
-/**
- * \brief Returns a workstation given its name
- *
- * If there is no such workstation, the function returns \c NULL.
- *
- * \param name workstation name
- * \return the workstation, or \c NULL if there is no such workstation
- */
-SD_workstation_t SD_workstation_get_by_name(const char *name)
-{
- return sg_host_by_name(name);
-}
-
-/**
- * \brief Returns the workstation list
- *
- * Use SD_workstation_get_number() to know the array size.
- *
- * \return an array of \ref SD_workstation_t containing all workstations
- * \remark The workstation order in the returned array is generally different from the workstation creation/declaration order in the XML platform (we use a hash table internally).
- * \see SD_workstation_get_number()
- */
-const SD_workstation_t *SD_workstation_get_list(void) {
- xbt_assert(SD_workstation_get_count() > 0, "There is no workstation!");
-
- if (sd_global->workstation_list == NULL) /* this is the first time the function is called */
- sd_global->workstation_list = (SD_workstation_t*)xbt_dynar_to_array(sg_hosts_as_dynar());
-
- return sd_global->workstation_list;
-}
-
-/**
- * \brief Returns the number of workstations
- *
- * \return the number of existing workstations
- * \see SD_workstation_get_list()
- */
-int SD_workstation_get_count(void)
-{
- return sg_host_count();
-}
-
-/**
- * \brief Returns the user data of a workstation
- *
- * \param workstation a workstation
- * \return the user data associated with this workstation (can be \c NULL)
- * \see SD_workstation_set_data()
- */
-void *SD_workstation_get_data(SD_workstation_t workstation)
-{
- return sg_host_user(workstation);
-}
-
-/**
- * \brief Sets the user data of a workstation
- *
- * The new data can be \c NULL. The old data should have been freed first
- * if it was not \c NULL.
- *
- * \param workstation a workstation
- * \param data the new data you want to associate with this workstation
- * \see SD_workstation_get_data()
- */
-void SD_workstation_set_data(SD_workstation_t workstation, void *data)
-{
- sg_host_user_set(workstation, data);
-}
-
-/**
- * \brief Returns the name of a workstation
- *
- * \param workstation a workstation
- * \return the name of this workstation (cannot be \c NULL)
- */
-const char *SD_workstation_get_name(SD_workstation_t workstation)
-{
- return sg_host_get_name(workstation);
-}
-
-/**
- * \brief Returns the value of a given workstation property
- *
- * \param ws a workstation
- * \param name a property name
- * \return value of a property (or NULL if property not set)
- */
-const char *SD_workstation_get_property_value(SD_workstation_t ws,
- const char *name)
-{
- return (const char*) xbt_dict_get_or_null(SD_workstation_get_properties(ws), name);
-}
-
-
-/**
- * \brief Returns a #xbt_dict_t consisting of the list of properties assigned to this workstation
- *
- * \param workstation a workstation
- * \return the dictionary containing the properties associated with the workstation
- */
-xbt_dict_t SD_workstation_get_properties(SD_workstation_t workstation)
-{
- return sg_host_get_properties(workstation);
-}
-
-
-/** @brief Displays debugging informations about a workstation */
-void SD_workstation_dump(SD_workstation_t ws)
-{
- xbt_dict_t props;
- xbt_dict_cursor_t cursor=NULL;
- char *key,*data;
-
- XBT_INFO("Displaying workstation %s", SD_workstation_get_name(ws));
- XBT_INFO(" - speed: %.0f", SD_workstation_get_speed(ws));
- XBT_INFO(" - available speed: %.2f", SD_workstation_get_available_speed(ws));
- props = SD_workstation_get_properties(ws);
-
- if (!xbt_dict_is_empty(props)){
- XBT_INFO(" - properties:");
-
- xbt_dict_foreach(props,cursor,key,data) {
- XBT_INFO(" %s->%s",key,data);
- }
- }
-}
-
-/**
- * \brief Returns the route between two workstations