XBT_PUBLIC(size_t) sg_host_extension_create(void(*deleter)(void*));
XBT_PUBLIC(void*) sg_host_extension_get(sg_host_t host, size_t rank);
XBT_PUBLIC(sg_host_t) sg_host_by_name(const char *name);
-XBT_PUBLIC(sg_host_t) sg_host_by_name_or_create(const char *name);
XBT_PUBLIC(const char*) sg_host_get_name(sg_host_t host);
XBT_PUBLIC(xbt_dynar_t) sg_hosts_as_dynar(void);
namespace simgrid {
namespace xbt {
-extern template class XBT_PUBLIC() Extendable<simgrid::s4u::Host>;
+ extern template class XBT_PUBLIC() Extendable<simgrid::s4u::Host>;
}
-
namespace s4u {
-/** @brief Simulated machine that can host some actors
+/** @ingroup s4u_host
+ *
+ * @tableofcontents
*
- * It represents some physical resource with computing and networking capabilities.
+ * An host represents some physical resource with computing and networking capabilities.
*
* All hosts are automatically created during the call of the method
* @link{simgrid::s4u::Engine::loadPlatform()}.
* You cannot create a host yourself.
*
- * You can retrieve a particular host using @link{simgrid::s4u::Host.byName()},
- * and actors can retrieve the host on which they run using @link{simgrid::s4u::Host.current()}.
+ * You can retrieve a particular host using simgrid::s4u::Host::byName()
+ * and actors can retrieve the host on which they run using simgrid::s4u::Host::current().
*/
XBT_PUBLIC_CLASS Host :
public simgrid::xbt::Extendable<Host> {
explicit Host(const char *name);
public: // TODO, make me private
~Host();
-public:
+ /** Do not use this function, it should be private */
+ static Host* by_name_or_create(const char* name);
+ /** Retrieves an host from its name, or return nullptr */
static Host* by_name_or_null(const char* name);
- static Host* by_name_or_create(const char* name);
- /** Retrieves an host from its name. */
+ /** Retrieves an host from its name, or die */
static s4u::Host *by_name(std::string name);
/** Retrieves the host on which the current actor is running */
static s4u::Host *current();
return simgrid::s4u::Host::by_name_or_null(name);
}
-sg_host_t sg_host_by_name_or_create(const char *name)
-{
- return simgrid::s4u::Host::by_name_or_create(name);
-}
-
xbt_dynar_t sg_hosts_as_dynar(void)
{
xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),nullptr);
* from the VM name, we have to make sure that the system does not call the
* free callback for the network resource object. The network resource object
* is still used by the physical machine. */
- sg_host_t host_VM = sg_host_by_name_or_create(name);
+ sg_host_t host_VM = simgrid::s4u::Host::by_name_or_create(name);
host_VM->pimpl_netcard = host_PM->pimpl_netcard;
p_vm_state = SURF_VM_STATE_CREATED;