1#ifndef FPMAS_MODEL_API_H
2#define FPMAS_MODEL_API_H
17#ifndef FPMAS_AGENT_RNG
32 #define FPMAS_AGENT_RNG minstd_rand
35namespace fpmas {
namespace api {
namespace model {
36 using api::graph::DistributedId;
185 HEDLEY_DEPRECATED_FOR(1.1,
groupIds())
231 HEDLEY_DEPRECATED_FOR(1.1,
groups())
236 HEDLEY_DEPRECATED_FOR(1.1,
groups())
261 HEDLEY_DEPRECATED_FOR(1.1,
addGroup())
299 std::list<
Agent*>::iterator pos
485 virtual void seed(std::FPMAS_AGENT_RNG::result_type
seed) = 0;
694 virtual std::vector<Agent*>
agents()
const = 0;
752 HEDLEY_DEPRECATED_FOR(1.1,
jobs())
753 virtual api::scheduler::Job&
job() = 0;
758 HEDLEY_DEPRECATED_FOR(1.1,
jobs())
759 virtual const api::scheduler::Job&
job() const = 0;
811 Event event, api::utils::Callback<
Agent*>* callback
824 Event event, api::utils::Callback<
Agent*>* callback
833 typedef std::vector<std::reference_wrapper<AgentGroup>>
GroupList;
999 virtual const std::unordered_map<GroupId, AgentGroup*>&
groups()
const = 0;
Definition: communication.h:251
Definition: distributed_edge.h:91
Definition: distributed_graph.h:169
Definition: distributed_node.h:28
Definition: load_balancing.h:92
virtual api::scheduler::Job & agentExecutionJob()=0
virtual void addEventHandler(Event event, api::utils::Callback< Agent * > *callback)=0
virtual void remove(Agent *agent)=0
virtual const Behavior & behavior()=0
virtual void removeEventHandler(Event event, api::utils::Callback< Agent * > *callback)=0
virtual GroupId groupId() const =0
virtual std::vector< Agent * > localAgents() const =0
virtual api::scheduler::JobList jobs() const =0
virtual void insert(AgentPtr *agent)=0
virtual void add(Agent *agent)=0
virtual api::scheduler::Job & job()=0
virtual std::vector< Agent * > agents() const =0
Event
Definition: model.h:552
@ REMOVE
Definition: model.h:568
@ ADD
Definition: model.h:564
@ INSERT
Definition: model.h:556
@ ERASE
Definition: model.h:560
virtual void erase(AgentPtr *agent)=0
virtual std::vector< Agent * > distantAgents() const =0
AgentPtr()
Definition: model.h:97
AgentPtr(api::model::Agent *agent)
Definition: model.h:103
AgentPtr & operator=(AgentPtr &&other)
Definition: model.cpp:23
~AgentPtr()
Definition: model.cpp:36
virtual const AgentPtr & agent() const =0
virtual TypeId typeId() const =0
virtual void copyAssign(Agent *agent)=0
virtual Agent * copy() const =0
virtual void setNode(AgentNode *node)=0
virtual std::list< Agent * >::iterator getGroupPos(api::model::GroupId gid) const =0
virtual void setTask(AgentTask *task)=0
virtual void addGroup(AgentGroup *group)=0
virtual void addGroupId(GroupId id)=0
virtual void setModel(Model *model)=0
virtual void setGroupPos(api::model::GroupId gid, std::list< Agent * >::iterator pos)=0
virtual void setGroupId(GroupId id)=0
virtual void removeGroup(AgentGroup *group)=0
virtual Model * model()=0
virtual AgentNode * node()=0
virtual const std::unordered_map< GroupId, AgentTask * > & tasks()=0
virtual void moveAssign(Agent *agent)=0
virtual AgentTask * task()=0
virtual AgentGroup * group()=0
virtual void setGroup(AgentGroup *group)=0
virtual std::vector< GroupId > groupIds() const =0
virtual GroupId groupId() const =0
virtual std::vector< AgentGroup * > groups()=0
virtual void removeGroupId(GroupId id)=0
virtual void execute(Agent *agent) const =0
virtual AgentGroup & getGroup(GroupId id) const =0
virtual void insert(GroupId id, AgentGroup *group)=0
virtual const AgentGraph & graph() const =0
virtual void removeGroup(AgentGroup &group)=0
virtual api::runtime::Runtime & runtime()=0
virtual const std::unordered_map< GroupId, AgentGroup * > & groups() const =0
virtual const api::runtime::Runtime & runtime() const =0
virtual void unlink(AgentEdge *edge)=0
virtual api::communication::MpiCommunicator & getMpiCommunicator()=0
virtual AgentGroup & buildGroup(GroupId id, const Behavior &behavior)=0
virtual AgentEdge * link(Agent *src_agent, Agent *tgt_agent, api::graph::LayerId layer)=0
virtual api::scheduler::Scheduler & scheduler()=0
virtual AgentGroup & buildGroup(GroupId id)=0
virtual const api::communication::MpiCommunicator & getMpiCommunicator() const =0
virtual const api::scheduler::Scheduler & scheduler() const =0
virtual const api::scheduler::Job & loadBalancingJob() const =0
virtual AgentGraph & graph()=0
virtual void seed(std::FPMAS_AGENT_RNG::result_type seed)=0
virtual api::random::Generator< std::FPMAS_AGENT_RNG::result_type > & rd()=0
Definition: generator.h:20
Definition: scheduler.h:135
Definition: scheduler.h:117
Definition: scheduler.h:302
Definition: ptr_wrapper.h:21
PtrWrapper()
Definition: ptr_wrapper.h:43
int LayerId
Definition: edge.h:13
api::graph::SetLocalNodeEvent< AgentPtr > SetAgentLocalEvent
Definition: model.h:59
int GroupId
Definition: model.h:78
api::utils::PtrWrapper< api::model::Agent > WeakAgentPtr
Definition: model.h:160
api::graph::DistributedNode< AgentPtr > AgentNode
Definition: model.h:40
std::type_index TypeId
Definition: model.h:82
api::graph::DistributedGraph< AgentPtr >::SetDistantNodeCallback SetAgentDistantCallback
Definition: model.h:73
api::graph::DistributedGraph< AgentPtr > AgentGraph
Definition: model.h:54
api::graph::DistributedEdge< AgentPtr > AgentEdge
Definition: model.h:49
api::graph::SetDistantNodeEvent< AgentPtr > SetAgentDistantEvent
Definition: model.h:68
std::vector< std::reference_wrapper< AgentGroup > > GroupList
Definition: model.h:833
api::graph::DistributedGraph< AgentPtr >::SetLocalNodeCallback SetAgentLocalCallback
Definition: model.h:64
std::vector< std::reference_wrapper< const Job > > JobList
Definition: scheduler.h:215
Definition: distributed_graph.h:99
Definition: distributed_graph.h:42
Definition: callback.h:33