BPMN-OS
BPMN for optimization and simulation
Loading...
Searching...
No Matches
Metronome.cpp
Go to the documentation of this file.
1#include "Metronome.h"
3#include <thread>
4
5using namespace BPMNOS::Execution;
6
7Metronome::Metronome(unsigned int clockTickDuration)
8{
9 initialize(clockTickDuration);
10}
11
12void Metronome::initialize(unsigned int clockTickDuration) {
13 this->clockTickDuration = clockTickDuration;
14 timestamp = std::chrono::system_clock::now();
15}
16
17std::shared_ptr<Event> Metronome::dispatchEvent( [[maybe_unused]] const SystemState* systemState ) {
18 auto trigger = timestamp + std::chrono::milliseconds( clockTickDuration );
19 std::this_thread::sleep_until(trigger);
20 timestamp = std::chrono::system_clock::now();
21
22 return std::make_shared<ClockTickEvent>();
23}
24
Metronome(unsigned int clockTickDuration=1000)
Definition Metronome.cpp:7
std::shared_ptr< Event > dispatchEvent(const SystemState *systemState) override
Definition Metronome.cpp:17
void initialize(unsigned int clockTickDuration)
Change clockTickDuration and set timestamp to current time and.
Definition Metronome.cpp:12
A class representing the state that the execution or simulation of a given scenario is in.
Definition SystemState.h:21