Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
event_message.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "event_visitor.h"
4 #include <cstdint>
5 #include <string>
6 
7 namespace hgps {
8 
10 enum struct EventType : uint8_t {
12  runner,
13 
15  info,
16 
18  result,
19 
21  error
22 };
23 
25 struct EventMessage {
26  EventMessage() = delete;
27 
31  EventMessage(std::string sender, unsigned int run)
32  : source{std::move(sender)}, run_number{run} {}
33 
34  EventMessage(const EventMessage &) = delete;
35  EventMessage(EventMessage &&) = delete;
36  EventMessage &operator=(const EventMessage &) = delete;
38 
40  virtual ~EventMessage() = default;
41 
43  const std::string source;
44 
46  const unsigned int run_number{};
47 
50  virtual int id() const noexcept = 0;
51 
54  virtual std::string to_string() const = 0;
55 
58  virtual void accept(EventMessageVisitor &visitor) const = 0;
59 };
60 } // namespace hgps
Event message types visitor interface (double dispatcher)
Definition: event_visitor.h:10
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
EventType
Event Message type enumeration.
Definition: event_message.h:10
@ runner
Simulation executive message.
@ result
Simulation result message.
@ info
General notification and progress message.
@ error
General error reporting message.
Global namespace.
Definition: jsonparser.h:88
Simulation event messages interface.
Definition: event_message.h:25
virtual ~EventMessage()=default
Destroys an EventMessage instance.
const unsigned int run_number
Gets the associated Simulation run number.
Definition: event_message.h:46
virtual int id() const noexcept=0
Gets the unique message type identifier.
const std::string source
Gets the sender identifier.
Definition: event_message.h:43
EventMessage(EventMessage &&)=delete
virtual std::string to_string() const =0
Create a string representation of this instance.
virtual void accept(EventMessageVisitor &visitor) const =0
Double dispatch the message using a visitor implementation.
EventMessage & operator=(EventMessage &&)=delete
EventMessage(const EventMessage &)=delete
EventMessage & operator=(const EventMessage &)=delete
EventMessage(std::string sender, unsigned int run)
Initialises a new instance of the EventMessage structure.
Definition: event_message.h:31