Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use a std::vector<std::string> for process arguments.
[simgrid.git] / src / surf / HostImpl.cpp
index 160224e..18bf4bc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2013-2017. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -29,7 +29,7 @@ namespace surf {
 void HostModel::ignoreEmptyVmInPmLMM()
 {
   /* iterate for all virtual machines */
-  for (s4u::VirtualMachine* ws_vm : vm::VirtualMachineImpl::allVms_) {
+  for (s4u::VirtualMachine* const& ws_vm : vm::VirtualMachineImpl::allVms_) {
     Cpu* cpu = ws_vm->pimpl_cpu;
     int active_tasks = lmm_constraint_get_variable_amount(cpu->constraint());
 
@@ -80,13 +80,16 @@ Action* HostModel::executeParallelTask(int host_nb, simgrid::s4u::Host** host_li
       xbt_die("Cannot have a communication that is not a simple point-to-point in this model. You should consider "
           "using the ptask model");
     }
-  } else
+  } else {
     xbt_die(
         "This model only accepts one of the following. You should consider using the ptask model for the other cases.\n"
         " - execution with one host only and no communication\n"
         " - Self-comms with one host only\n"
         " - Communications with two hosts and no computation");
-  xbt_free(host_list);
+  }
+  delete[] host_list;
+  delete[] flops_amount;
+  delete[] bytes_amount;
   return action;
 }
 
@@ -100,53 +103,11 @@ HostImpl::HostImpl(s4u::Host* host) : piface_(host)
   piface_->pimpl_ = this;
 }
 
-simgrid::surf::StorageImpl* HostImpl::findStorageOnMountList(const char* mount)
-{
-  XBT_DEBUG("Search for storage name '%s' on '%s'", mount, piface_->getCname());
-  if (storage_.find(mount) == storage_.end())
-    xbt_die("Can't find mount '%s' for '%s'", mount, piface_->getCname());
-
-  return storage_.at(mount);
-}
-
 void HostImpl::getAttachedStorageList(std::vector<const char*>* storages)
 {
-  for (auto s : storage_)
-    if (s.second->attach_ == piface_->getCname())
-      storages->push_back(s.second->piface_.getName());
-}
-
-Action* HostImpl::read(surf_file_t fd, sg_size_t size)
-{
-  simgrid::surf::StorageImpl* st = findStorageOnMountList(fd->mount());
-  XBT_DEBUG("READ %s on disk '%s'", fd->cname(), st->cname());
-  if (fd->tell() + size > fd->size()) {
-    if (fd->tell() > fd->size()) {
-      size = 0;
-    } else {
-      size = fd->size() - fd->tell();
-    }
-    fd->setPosition(fd->size());
-  } else
-    fd->incrPosition(size);
-
-  return st->read(size);
-}
-
-Action* HostImpl::write(surf_file_t fd, sg_size_t size)
-{
-  simgrid::surf::StorageImpl* st = findStorageOnMountList(fd->mount());
-  XBT_DEBUG("WRITE %s on disk '%s'. size '%llu/%llu'", fd->cname(), st->cname(), size, fd->size());
-
-  StorageAction* action = st->write(size);
-  action->file_         = fd;
-  /* Substract the part of the file that might disappear from the used sized on the storage element */
-  st->usedSize_ -= (fd->size() - fd->tell());
-  // If the storage is full before even starting to write
-  if (st->usedSize_ >= st->size_) {
-    action->setState(Action::State::failed);
-  }
-  return action;
+  for (auto const& s : storage_)
+    if (s.second->getHost() == piface_->getCname())
+      storages->push_back(s.second->piface_.getCname());
 }
 
 }