MakerLabs ACM
behaviour.h
Go to the documentation of this file.
1 /*
2  * Copyright Paul Reimer, 2018
3  *
4  * This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License.
5  * To view a copy of this license, visit
6  * https://creativecommons.org/licenses/by-nc-sa/4.0/
7  * or send a letter to
8  * Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
9  */
10 
11 #pragma once
12 
13 #include "mailbox.h"
14 #include "pid.h"
15 #include "uuid.h"
16 
17 #include "actor_model_generated.h"
18 
19 #include "delegate.hpp"
20 
21 #include <memory>
22 #include <string>
23 #include <vector>
24 
25 namespace ActorModel {
26 
27 using State = void;
28 using StatePtr = std::shared_ptr<State>;
29 
31 {
33  const Result& _type = Result::Unhandled,
35  const std::string& _reason = "normal"
36  )
37  : type(_type)
38  , action(_action)
39  , reason(_reason)
40  {}
41 
43  const Result& _type,
44  const std::string& _reason
45  )
46  : ResultUnion{
47  _type,
49  _reason
50  }
51  {}
52 
54  const Result& _type,
55  const UUID::UUID& _id,
57  )
58  : type(_type)
59  , action(_action)
60  , id(_id)
61  {}
62 
67 };
68 
69 using ActorBehaviour = delegate<ResultUnion(
70  const Pid&,
71  StatePtr& state,
72  const Message&
73 )>;
74 
75 using ActorBehaviours = std::vector<ActorBehaviour>;
76 
77 using Behaviour = delegate<ResultUnion(
78  const Pid&,
79  Mailbox&
80 )>;
81 
82 } // namespace ActorModel
Definition: behaviour.h:30
Definition: mailbox.h:31
Definition: actor.cpp:17
Result type
Definition: behaviour.h:63
std::shared_ptr< State > StatePtr
Definition: behaviour.h:28
static ResultUnion Unhandled
Definition: process.h:33
std::string reason
Definition: behaviour.h:65
ResultUnion(const Result &_type, const UUID::UUID &_id, const EventTerminationAction &_action=EventTerminationAction::ContinueProcessing)
Definition: behaviour.h:53
Definition: actor_model.fbs:27
std::string string
Definition: oom_killer_actor_behaviour.cpp:24
UUID::UUID id
Definition: behaviour.h:66
ResultUnion(const Result &_type=Result::Unhandled, const EventTerminationAction &_action=EventTerminationAction::ContinueProcessing, const std::string &_reason="normal")
Definition: behaviour.h:32
UUID::UUID Pid
Definition: pid.h:19
std::vector< ActorBehaviour > ActorBehaviours
Definition: behaviour.h:75
delegate< ResultUnion(const Pid &, StatePtr &state, const Message &)> ActorBehaviour
Definition: behaviour.h:73
delegate< ResultUnion(const Pid &, Mailbox &)> Behaviour
Definition: behaviour.h:80
EventTerminationAction
Definition: actor_model.fbs:36
ResultUnion(const Result &_type, const std::string &_reason)
Definition: behaviour.h:42
static RequestIntentReflectionState state
Definition: requests.cpp:49
static UUID NullUUID
Definition: uuid.h:20
EventTerminationAction action
Definition: behaviour.h:64
void State
Definition: behaviour.h:27
Definition: actor_model.fbs:56
UUID::UUID UUID
Definition: firmware_update_actor.cpp:41