BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
BestFirstEntry.cpp
Go to the documentation of this file.
1
#include "
BestFirstEntry.h
"
2
#include "
execution/engine/src/Engine.h
"
3
#include <cassert>
4
5
using namespace
BPMNOS::Execution
;
6
7
BestFirstEntry::BestFirstEntry
(
Evaluator
* evaluator)
8
:
GreedyDispatcher
(evaluator)
9
{
10
}
11
12
void
BestFirstEntry::connect
(
Mediator
* mediator) {
13
mediator->
addSubscriber
(
this
,
14
Observable::Type::EntryRequest
15
);
16
GreedyDispatcher::connect
(mediator);
17
}
18
19
void
BestFirstEntry::notice
(
const
Observable
* observable) {
20
if
( observable->
getObservableType
() ==
Observable::Type::EntryRequest
) {
21
assert(
dynamic_cast<
const
DecisionRequest
*
>
(observable) );
22
auto
request =
static_cast<
const
DecisionRequest
*
>
(observable);
23
auto
decision = std::make_shared<EntryDecision>(request->token,
evaluator
);
24
decisionsWithoutEvaluation
.emplace_back( request->token->weak_from_this(), request->weak_from_this(), decision );
25
}
26
else
{
27
GreedyDispatcher::notice
(observable);
28
}
29
}
30
31
BestFirstEntry.h
Engine.h
BPMNOS::Execution::BestFirstEntry::connect
void connect(Mediator *mediator) override
Definition
BestFirstEntry.cpp:12
BPMNOS::Execution::BestFirstEntry::notice
void notice(const Observable *observable) override
Definition
BestFirstEntry.cpp:19
BPMNOS::Execution::BestFirstEntry::BestFirstEntry
BestFirstEntry(Evaluator *evaluator)
Definition
BestFirstEntry.cpp:7
BPMNOS::Execution::Evaluator
Represents an abstract base class for a pending Evaluator.
Definition
Evaluator.h:15
BPMNOS::Execution::GreedyDispatcher
Class for dispatching the event with the best evaluation.
Definition
GreedyDispatcher.h:18
BPMNOS::Execution::GreedyDispatcher< std::weak_ptr< const Token >, std::weak_ptr< const DecisionRequest > >::evaluator
Evaluator * evaluator
Definition
GreedyDispatcher.h:27
BPMNOS::Execution::GreedyDispatcher::notice
void notice(const Observable *observable) override
Definition
GreedyDispatcher.cpp:89
BPMNOS::Execution::GreedyDispatcher::connect
void connect(Mediator *mediator) override
Definition
GreedyDispatcher.cpp:20
BPMNOS::Execution::GreedyDispatcher< std::weak_ptr< const Token >, std::weak_ptr< const DecisionRequest > >::decisionsWithoutEvaluation
auto_list< WeakPtrs..., std::shared_ptr< Decision > > decisionsWithoutEvaluation
Definition
GreedyDispatcher.h:28
BPMNOS::Execution::Notifier::addSubscriber
void addSubscriber(Observer *subscriber, ObservableTypes... observableTypes)
Definition
Notifier.h:16
BPMNOS::Execution
Definition
Controller.h:9
BPMNOS::Execution::DecisionRequest
Represents a pending decision.
Definition
DecisionRequest.h:13
BPMNOS::Execution::Mediator
Represents an abstract base class for a class that is an event listener and notifier.
Definition
Mediator.h:13
BPMNOS::Execution::Observable
Definition
Observable.h:6
BPMNOS::Execution::Observable::Type::EntryRequest
@ EntryRequest
BPMNOS::Execution::Observable::getObservableType
virtual constexpr Type getObservableType() const =0