A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
No more types for models.
[simgrid.git]
/
src
/
kernel
/
resource
/
Model.cpp
diff --git
a/src/kernel/resource/Model.cpp
b/src/kernel/resource/Model.cpp
index
4357714
..
e9cf922
100644
(file)
--- a/
src/kernel/resource/Model.cpp
+++ b/
src/kernel/resource/Model.cpp
@@
-1,4
+1,4
@@
-/* Copyright (c) 2004-20
19
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-20
21
. 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. */
/* 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. */
@@
-6,18
+6,24
@@
#include "simgrid/kernel/resource/Model.hpp"
#include "src/kernel/lmm/maxmin.hpp"
#include "simgrid/kernel/resource/Model.hpp"
#include "src/kernel/lmm/maxmin.hpp"
-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(resource);
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(
ker_
resource);
namespace simgrid {
namespace kernel {
namespace resource {
namespace simgrid {
namespace kernel {
namespace resource {
-Model::Model(Model::UpdateAlgo algo) : update_algorithm_(algo) {}
-Model::~Model() = default;
+Model::~Model() =
+ default; // Don't move this declaration to the header, or it will break external projects such as SimGrid-FMI
+
+Model* Model::set_update_algorithm(Model::UpdateAlgo algo)
+{
+ update_algorithm_ = algo;
+ return this;
+}
Action::ModifiedSet* Model::get_modified_set() const
{
Action::ModifiedSet* Model::get_modified_set() const
{
- return maxmin_system_->modified_set_;
+ return maxmin_system_->modified_set_
.get()
;
}
void Model::set_maxmin_system(lmm::System* system)
}
void Model::set_maxmin_system(lmm::System* system)
@@
-46,7
+52,7
@@
double Model::next_occurring_event_lazy(double now)
while (not maxmin_system_->modified_set_->empty()) {
Action* action = &(maxmin_system_->modified_set_->front());
maxmin_system_->modified_set_->pop_front();
while (not maxmin_system_->modified_set_->empty()) {
Action* action = &(maxmin_system_->modified_set_->front());
maxmin_system_->modified_set_->pop_front();
-
bool max_duration_flag = false
;
+
ActionHeap::Type action_type = ActionHeap::Type::normal
;
if (action->get_state_set() != &started_action_set_)
continue;
if (action->get_state_set() != &started_action_set_)
continue;
@@
-73,8
+79,8
@@
double Model::next_occurring_event_lazy(double now)
if ((action->get_max_duration() != NO_MAX_DURATION) &&
(min <= -1 || action->get_start_time() + action->get_max_duration() < min)) {
// when the task will complete anyway because of the deadline if any
if ((action->get_max_duration() != NO_MAX_DURATION) &&
(min <= -1 || action->get_start_time() + action->get_max_duration() < min)) {
// when the task will complete anyway because of the deadline if any
- min
= action->get_start_time() + action->get_max_duration();
-
max_duration_flag = true
;
+ min = action->get_start_time() + action->get_max_duration();
+
action_type = ActionHeap::Type::max_duration
;
}
XBT_DEBUG("Action(%p) corresponds to variable %d", action, action->get_variable()->rank_);
}
XBT_DEBUG("Action(%p) corresponds to variable %d", action, action->get_variable()->rank_);
@@
-83,7
+89,7
@@
double Model::next_occurring_event_lazy(double now)
action->get_start_time(), min, share, action->get_max_duration());
if (min > -1) {
action->get_start_time(), min, share, action->get_max_duration());
if (min > -1) {
- action_heap_.update(action, min,
max_duration_flag ? ActionHeap::Type::max_duration : ActionHeap::Type::normal
);
+ action_heap_.update(action, min,
action_type
);
XBT_DEBUG("Insert at heap action(%p) min %f now %f", action, min, now);
} else
DIE_IMPOSSIBLE;
XBT_DEBUG("Insert at heap action(%p) min %f now %f", action, min, now);
} else
DIE_IMPOSSIBLE;
@@
-143,7
+149,7
@@
Action* Model::extract_action(Action::StateSet* list)
{
if (list->empty())
return nullptr;
{
if (list->empty())
return nullptr;
-
simgrid::kernel::resource::
Action* res = &list->front();
+ Action* res = &list->front();
list->pop_front();
return res;
}
list->pop_front();
return res;
}
@@
-170,6
+176,12
@@
void Model::update_actions_state_full(double /*now*/, double /*delta*/)
THROW_UNIMPLEMENTED;
}
THROW_UNIMPLEMENTED;
}
+Model* Model::set_name(const std::string& name)
+{
+ name_ = name;
+ return this;
+}
+
} // namespace resource
} // namespace kernel
} // namespace simgrid
} // namespace resource
} // namespace kernel
} // namespace simgrid