Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Modify MSG_file_open() implementation
[simgrid.git] / src / surf / workstation_interface.hpp
index 5045cec..621771d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2004-2013. The SimGrid Team.
+/* Copyright (c) 2004-2014. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -25,6 +25,34 @@ typedef Workstation *WorkstationPtr;
 class WorkstationAction;
 typedef WorkstationAction *WorkstationActionPtr;
 
+/*************
+ * Callbacks *
+ *************/
+
+/** @ingroup SURF_callbacks
+ * @brief Callbacks handler which emit the callbacks after Workstation creation *
+ * @details Callback functions have the following signature: `void(WorkstationPtr)`
+ */
+extern surf_callback(void, WorkstationPtr) workstationCreatedCallbacks;
+
+/** @ingroup SURF_callbacks
+ * @brief Callbacks handler which emit the callbacks after Workstation destruction *
+ * @details Callback functions have the following signature: `void(WorkstationPtr)`
+ */
+extern surf_callback(void, WorkstationPtr) workstationDestructedCallbacks;
+
+/** @ingroup SURF_callbacks
+ * @brief Callbacks handler which emit the callbacks after Workstation State changed *
+ * @details Callback functions have the following signature: `void(WorkstationActionPtr)`
+ */
+extern surf_callback(void, WorkstationPtr) workstationStateChangedCallbacks;
+
+/** @ingroup SURF_callbacks
+ * @brief Callbacks handler which emit the callbacks after WorkstationAction State changed *
+ * @details Callback functions have the following signature: `void(WorkstationActionPtr)`
+ */
+extern surf_callback(void, WorkstationActionPtr) workstationActionStateChangedCallbacks;
+
 /*********
  * Tools *
  *********/
@@ -79,17 +107,6 @@ public:
                                         double *communication_amount,
                                         double rate)=0;
 
- /**
-  * @brief [brief description]
-  * @details [long description]
-  * 
-  * @param src [description]
-  * @param dst [description]
-  * 
-  * @return [description]
-  */
- virtual xbt_dynar_t getRoute(WorkstationPtr src, WorkstationPtr dst)=0;
-
  /**
   * @brief [brief description]
   * @details [long description]
@@ -116,9 +133,8 @@ class Workstation : public Resource {
 public:
   /**
    * @brief Workstation consrtuctor
-   * @details [long description]
    */
-  Workstation(){};
+  Workstation();
 
   /**
    * @brief Workstation constructor
@@ -147,6 +163,13 @@ public:
   Workstation(ModelPtr model, const char *name, xbt_dict_t props, lmm_constraint_t constraint,
                      xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
 
+  /**
+   * @brief Workstation destructor
+   */
+  ~ Workstation();
+
+  void setState(e_surf_resource_state_t state);
+
   /**
    * @brief Get the properties of the currenrt Workstation
    *
@@ -223,17 +246,24 @@ public:
    * 
    * @return The xbt_dict_t of mount_point: Storage
    */
-  virtual xbt_dict_t getStorageList();
+  virtual xbt_dict_t getMountedStorageList();
+
+  /**
+   * @brief Get the xbt_dynar_t of storages attached to the workstation
+   *
+   * @return The xbt_dynar_t of Storage names
+   */
+  virtual xbt_dynar_t getAttachedStorageList();
 
   /**
    * @brief Open a file
    * 
    * @param mount The mount point
-   * @param path The path to the file
+   * @param path The full path to the file
    * 
    * @return The StorageAction corresponding to the opening
    */
-  virtual ActionPtr open(const char* mount, const char* path);
+  virtual ActionPtr open(const char* fullpath);
 
   /**
    * @brief Close a file
@@ -256,6 +286,7 @@ public:
    * @brief List directory contents of a path
    * @details [long description]
    * 
+   * @param mount [description]
    * @param path The path to the directory
    * @return The StorageAction corresponding to the ls action
    */
@@ -373,6 +404,7 @@ public:
 /**********
  * Action *
  **********/
+
 /** @ingroup SURF_workstation_interface
  * @brief SURF workstation action interface class
  */
@@ -399,6 +431,7 @@ public:
   WorkstationAction(ModelPtr model, double cost, bool failed, lmm_variable_t var)
   : Action(model, cost, failed, var) {}
 
+  void setState(e_surf_action_state_t state);
 };