UMPS
The University of Utah Seismograph Stations Message Passing System.
messages.hpp
1 #ifndef UMPS_MESSAGEFORMATS_MESSAGES_HPP
2 #define UMPS_MESSAGEFORMATS_MESSAGES_HPP
3 #include <map>
4 #include <memory>
5 namespace UMPS::MessageFormats
6 {
7  class IMessage;
8 }
9 namespace UMPS::MessageFormats
10 {
15 class Messages
16 {
17 public:
20 
26  Messages(const Messages &messages);
31  Messages(Messages &&messages) noexcept;
33 
36 
40  Messages& operator=(const Messages &messages);
45  Messages& operator=(Messages &&messages) noexcept;
47 
51  void add(const std::unique_ptr<IMessage> &message);
52 
53 
57  [[nodiscard]] bool contains(const IMessage &message) const noexcept;
62  [[nodiscard]] bool contains(const std::unique_ptr<IMessage> &message) const;
65  [[nodiscard]] bool contains(const std::string &messageType) const noexcept;
66 
69  void remove(const std::unique_ptr<IMessage> &message);
72  void remove(const std::string &messageType);
73 
75  [[nodiscard]] int size() const noexcept;
77  [[nodiscard]] bool empty() const noexcept;
78 
80  [[nodiscard]] std::map<std::string, std::unique_ptr<IMessage>> get() const noexcept;
82  [[nodiscard]] std::unique_ptr<IMessage> get(const std::string &messageType) const;
83 
86 
88  void clear() noexcept;
92 private:
93  class MessagesImpl;
94  std::unique_ptr<MessagesImpl> pImpl;
95 };
96 }
97 #endif
An abstract base class defining the base requirements a message format must satisfy.
Definition: message.hpp:12
This is a container for holding multiple (unique) message formats.
Definition: messages.hpp:16
Messages & operator=(Messages &&messages) noexcept
Move assignment operator.
std::map< std::string, std::unique_ptr< IMessage > > get() const noexcept
void remove(const std::unique_ptr< IMessage > &message)
Removes the message.
void add(const std::unique_ptr< IMessage > &message)
Add the message type to the container.
void remove(const std::string &messageType)
int size() const noexcept
void clear() noexcept
Resets the class and releases all memory.
Messages & operator=(const Messages &messages)
Copy assignment operator.
bool contains(const IMessage &message) const noexcept
bool contains(const std::unique_ptr< IMessage > &message) const
Messages(const Messages &messages)
Copy constructor.
Messages(Messages &&messages) noexcept
Move constructor.
bool empty() const noexcept
bool contains(const std::string &messageType) const noexcept