FutureStateBase(FutureStateBase const&) = delete;
FutureStateBase& operator=(FutureStateBase const&) = delete;
- XBT_PUBLIC void schedule(simgrid::xbt::Task<void()>&& job);
+ XBT_PUBLIC void schedule(simgrid::xbt::Task<void()>&& job) const;
void set_exception(std::exception_ptr exception)
{
future_get_ = true;
return Future<void>(state_);
}
- void set_value()
+ void set_value() const
{
if (state_ == nullptr)
throw std::future_error(std::future_errc::no_state);
state_->set_value();
}
- void set_exception(std::exception_ptr exception)
+ void set_exception(std::exception_ptr exception) const
{
if (state_ == nullptr)
throw std::future_error(std::future_errc::no_state);
virtual ~Model();
- bool is_update_lazy() { return update_algorithm_ == UpdateAlgo::LAZY; }
+ bool is_update_lazy() const { return update_algorithm_ == UpdateAlgo::LAZY; }
/** @brief Get the set of [actions](@ref Action) in *inited* state */
Action::StateSet* get_inited_action_set() { return &inited_action_set_; }
/* The pair is {link_up, link_down} */
std::unordered_map<unsigned int, std::pair<kernel::resource::LinkImpl*, kernel::resource::LinkImpl*>> private_links_;
- unsigned int node_pos(int id) { return id * num_links_per_node_; }
- unsigned int node_pos_with_loopback(int id) { return node_pos(id) + (has_loopback_ ? 1 : 0); }
- unsigned int node_pos_with_loopback_limiter(int id) { return node_pos_with_loopback(id) + (has_limiter_ ? 1 : 0); }
+ unsigned int node_pos(int id) const { return id * num_links_per_node_; }
+ unsigned int node_pos_with_loopback(int id) const { return node_pos(id) + (has_loopback_ ? 1 : 0); }
+ unsigned int node_pos_with_loopback_limiter(int id) const
+ {
+ return node_pos_with_loopback(id) + (has_limiter_ ? 1 : 0);
+ }
void* loopback_ = nullptr;
kernel::resource::LinkImpl* backbone_ = nullptr;
void parse_specific_arguments(ClusterCreationArgs* cluster) override;
void seal() override;
- void rankId_to_coords(int rank_id, unsigned int coords[4]);
+ void rankId_to_coords(int rank_id, unsigned int coords[4]) const;
private:
void generate_routers();
void generate_links();
- void create_link(const std::string& id, int numlinks, resource::LinkImpl** linkup, resource::LinkImpl** linkdown);
+ void create_link(const std::string& id, int numlinks, resource::LinkImpl** linkup,
+ resource::LinkImpl** linkdown) const;
simgrid::s4u::Link::SharingPolicy sharing_policy_;
double bw_ = 0;
void generate_labels();
void generate_switches();
int connect_node_to_parents(FatTreeNode* node);
- bool are_related(FatTreeNode* parent, FatTreeNode* child);
- bool is_in_sub_tree(FatTreeNode* root, FatTreeNode* node);
+ bool are_related(FatTreeNode* parent, FatTreeNode* child) const;
+ bool is_in_sub_tree(FatTreeNode* root, FatTreeNode* node) const;
};
} // namespace routing
} // namespace kernel
~NetPoint() = default;
// Our rank in the vertices_ array of the netzone that contains us.
- unsigned int id() { return id_; }
+ unsigned int id() const { return id_; }
const std::string& get_name() const { return name_; }
const char* get_cname() const { return name_.c_str(); }
/** @brief the NetZone in which this NetPoint is included */
virtual RouteCreationArgs* new_extended_route(RoutingMode hierarchy, NetPoint* src, NetPoint* dst, NetPoint* gw_src,
NetPoint* gw_dst, std::vector<resource::LinkImpl*>& link_list,
bool symmetrical, bool change_order);
- void get_route_check_params(NetPoint* src, NetPoint* dst);
+ void get_route_check_params(NetPoint* src, NetPoint* dst) const;
void add_route_check_params(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst,
- const std::vector<resource::LinkImpl*>& link_list, bool symmetrical);
+ const std::vector<resource::LinkImpl*>& link_list, bool symmetrical) const;
};
} // namespace routing
} // namespace kernel
kv.second->destroy();
}
-void EngineImpl::load_deployment(const std::string& file)
+void EngineImpl::load_deployment(const std::string& file) const
{
sg_platf_exit();
sg_platf_init();
EngineImpl& operator=(const EngineImpl&) = delete;
virtual ~EngineImpl();
- void load_deployment(const std::string& file);
+ void load_deployment(const std::string& file) const;
void register_function(const std::string& name, const actor::ActorCodeFactory& code);
void register_default(const actor::ActorCodeFactory& code);
} // namespace kernel
} // namespace simgrid
-#endif
\ No newline at end of file
+#endif
}
public:
- const std::string& get_name() { return name_; }
- const char* get_cname() { return name_.c_str(); }
+ const std::string& get_name() const { return name_; }
+ const char* get_cname() const { return name_.c_str(); }
bool test();
void wait_for(actor::ActorImpl* issuer, double timeout);
tracing_category_ = category;
return static_cast<AnyActivityImpl&>(*this);
}
- const std::string& get_tracing_category() { return tracing_category_; }
+ const std::string& get_tracing_category() const { return tracing_category_; }
};
} // namespace activity
void lock(actor::ActorImpl* issuer);
bool try_lock(actor::ActorImpl* issuer);
void unlock(actor::ActorImpl* issuer);
- bool is_locked() { return locked_; }
+ bool is_locked() const { return locked_; }
MutexImpl* ref();
void unref();
void acquire(actor::ActorImpl* issuer, double timeout);
void release();
- bool would_block() { return (value_ == 0); }
+ bool would_block() const { return (value_ == 0); }
void remove_sleeping_actor(actor::ActorImpl& actor) { xbt::intrusive_erase(sleeping_, actor); }
- unsigned int get_capacity() { return value_; }
- bool is_used() { return not sleeping_.empty(); }
+ unsigned int get_capacity() const { return value_; }
+ bool is_used() const { return not sleeping_.empty(); }
friend void intrusive_ptr_add_ref(SemaphoreImpl* sem)
{
this->throw_exception(std::make_exception_ptr(ForcefulKillException(host_->is_on() ? "exited" : "host failed")));
}
-void ActorImpl::kill(ActorImpl* actor)
+void ActorImpl::kill(ActorImpl* actor) const
{
xbt_assert(actor != simix_global->maestro_, "Killing maestro is a rather bad idea");
if (actor->finished_) {
}
}
-void ActorImpl::kill_all()
+void ActorImpl::kill_all() const
{
for (auto const& kv : simix_global->process_list)
if (kv.second != this)
dest->pimpl_->add_actor(this);
}
-ActorImplPtr ActorImpl::init(const std::string& name, s4u::Host* host)
+ActorImplPtr ActorImpl::init(const std::string& name, s4u::Host* host) const
{
ActorImpl* actor = new ActorImpl(xbt::string(name), host);
actor->set_ppid(this->pid_);
aid_t get_pid() const { return pid_; }
aid_t get_ppid() const { return ppid_; }
void set_ppid(aid_t ppid) { ppid_ = ppid; }
- bool is_daemon() { return daemon_; } /** Whether this actor has been daemonized */
- bool has_to_auto_restart() { return auto_restart_; }
+ bool is_daemon() const { return daemon_; } /** Whether this actor has been daemonized */
+ bool has_to_auto_restart() const { return auto_restart_; }
void set_auto_restart(bool autorestart) { auto_restart_ = autorestart; }
void set_stacksize(unsigned stacksize) { stacksize_ = stacksize; }
- unsigned get_stacksize() { return stacksize_; }
+ unsigned get_stacksize() const { return stacksize_; }
std::unique_ptr<context::Context> context_; /* the context (uctx/raw/thread) that executes the user function */
std::atomic_int_fast32_t refcount_{0};
public:
- int get_refcount() { return refcount_; }
+ int get_refcount() const { return refcount_; }
friend void intrusive_ptr_add_ref(ActorImpl* actor)
{
// This whole memory consistency semantic drives me nuts.
s4u::ActorPtr iface() { return s4u::ActorPtr(&piface_); }
s4u::Actor* ciface() { return &piface_; }
- ActorImplPtr init(const std::string& name, s4u::Host* host);
+ ActorImplPtr init(const std::string& name, s4u::Host* host) const;
ActorImpl* start(const ActorCode& code);
static ActorImplPtr create(const std::string& name, const ActorCode& code, void* data, s4u::Host* host,
static void detach();
void cleanup();
void exit();
- void kill(ActorImpl* actor);
- void kill_all();
+ void kill(ActorImpl* actor) const;
+ void kill_all() const;
void yield();
void daemonize();
- bool is_suspended() { return suspended_; }
+ bool is_suspended() const { return suspended_; }
s4u::Actor* restart();
void suspend();
void resume();
bool wannadie() const { return iwannadie_; }
void set_wannadie(bool value = true) { iwannadie_ = value; }
- void operator()() { code_(); }
+ void operator()() const { code_(); }
bool has_code() const { return static_cast<bool>(code_); }
actor::ActorImpl* get_actor() const { return this->actor_; }
namespace simgrid {
namespace kernel {
-void FutureStateBase::schedule(simgrid::xbt::Task<void()>&& job)
+void FutureStateBase::schedule(simgrid::xbt::Task<void()>&& job) const
{
simix_global->tasks.push_back(std::move(job));
}
s4u::Host* get_host() const { return host_; }
void set_host(s4u::Host* host) { host_ = host; }
- double get_read_bandwidth() { return read_bw_; }
- double get_write_bandwidth() { return write_bw_; }
+ double get_read_bandwidth() const { return read_bw_; }
+ double get_write_bandwidth() const { return write_bw_; }
lmm::Constraint* get_read_constraint() const { return constraint_read_; }
lmm::Constraint* get_write_constraint() const { return constraint_write_; }
{
}
-void DragonflyZone::rankId_to_coords(int rankId, unsigned int coords[4])
+void DragonflyZone::rankId_to_coords(int rankId, unsigned int coords[4]) const
{
// coords : group, chassis, blade, node
coords[0] = rankId / (num_chassis_per_group_ * num_blades_per_chassis_ * num_nodes_per_blade_);
}
void DragonflyZone::create_link(const std::string& id, int numlinks, resource::LinkImpl** linkup,
- resource::LinkImpl** linkdown)
+ resource::LinkImpl** linkdown) const
{
*linkup = nullptr;
*linkdown = nullptr;
}
}
-bool FatTreeZone::is_in_sub_tree(FatTreeNode* root, FatTreeNode* node)
+bool FatTreeZone::is_in_sub_tree(FatTreeNode* root, FatTreeNode* node) const
{
XBT_DEBUG("Is %d(%u,%u) in the sub tree of %d(%u,%u) ?", node->id, node->level, node->position, root->id, root->level,
root->position);
return connectionsNumber;
}
-bool FatTreeZone::are_related(FatTreeNode* parent, FatTreeNode* child)
+bool FatTreeZone::are_related(FatTreeNode* parent, FatTreeNode* child) const
{
std::stringstream msgBuffer;
return result;
}
-void RoutedZone::get_route_check_params(NetPoint* src, NetPoint* dst)
+void RoutedZone::get_route_check_params(NetPoint* src, NetPoint* dst) const
{
xbt_assert(src, "Cannot find a route from nullptr to %s", dst->get_cname());
xbt_assert(dst, "Cannot find a route from %s to nullptr", src->get_cname());
src->get_cname(), dst->get_cname(), src_as->get_cname(), dst_as->get_cname(), get_cname());
}
void RoutedZone::add_route_check_params(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst,
- const std::vector<resource::LinkImpl*>& link_list, bool symmetrical)
+ const std::vector<resource::LinkImpl*>& link_list, bool symmetrical) const
{
const char* srcName = src->get_cname();
const char* dstName = dst->get_cname();