1#ifndef LINTEL_MESSAGEQUEUE_H
2#define LINTEL_MESSAGEQUEUE_H
28 std::string m_processName;
30 static constexpr std::size_t m_msgSize =
sizeof(
T);
33 std::shared_ptr<ProcessName> m_realProcessName;
34 std::atomic<std::uint64_t> m_droppedMessages{ 0 };
45 [[
nodiscard]]
bool isOwner()
const {
return m_processName == m_realProcessName->getProcessName(); }
69 : m_processName(std::
move(processName)), m_name(std::
move(name)), m_msgCount(
msgCount),
77 void sendOf(
const T &message) { m_messageQueue.
sendOf(&message, m_msgSize); }
96 if (!
success) { m_droppedMessages.fetch_add(1u, std::memory_order_relaxed); }
126 if (!m_messageQueue.
tryReceiveOf(&
temp, m_msgSize)) {
return std::nullopt; }
127 return std::make_optional(
temp);
133 if (m_processName <
rhs.m_processName)
return true;
134 if (
rhs.m_processName < m_processName)
return false;
135 return m_name <
rhs.m_name;
Definition MessageQueueCore.h:18
bool trySendOf(const void *message, std::size_t size)
int32_t numberMessagesOf() const
void receiveOf(void *message, std::size_t size)
bool tryReceiveOf(void *message, std::size_t size)
void sendOf(const void *message, std::size_t size)
static void removeOf(const std::string &messageQueueName)
bool sendOfWithTimeout(const void *message, std::size_t size, const std::chrono::milliseconds &timeout)
Definition MessageQueue.h:25
std::uint64_t droppedMessagesOf() const
Definition MessageQueue.h:104
bool isOwner() const
Definition MessageQueue.h:45
bool operator!=(const MessageQueue &rhs) const
Definition MessageQueue.h:151
int32_t numberMessagesOf() const
Definition MessageQueue.h:57
bool operator>(const MessageQueue &rhs) const
Definition MessageQueue.h:139
void sendOf(const T &message)
Definition MessageQueue.h:77
bool operator>=(const MessageQueue &rhs) const
Definition MessageQueue.h:145
int32_t getMsgCount() const
Definition MessageQueue.h:54
T receiveOf()
Definition MessageQueue.h:111
const std::string & getName() const
Definition MessageQueue.h:51
MessageQueue(std::string processName, std::string name, int32_t msgCount, std::shared_ptr< ProcessName > realProcessName)
Definition MessageQueue.h:65
static void removeOf(const std::string &messageQueueName)
Definition MessageQueue.h:40
bool trySendOf(const T &message)
Definition MessageQueue.h:84
bool operator==(const MessageQueue &rhs) const
Definition MessageQueue.h:148
bool sendOfWithTimeout(const T &message, const std::chrono::milliseconds &timeout)
Definition MessageQueue.h:93
bool operator<=(const MessageQueue &rhs) const
Definition MessageQueue.h:142
bool operator<(const MessageQueue &rhs) const
Definition MessageQueue.h:131
std::optional< T > tryReceiveOf()
Definition MessageQueue.h:123
const std::string & getProcessName() const
Definition MessageQueue.h:48
Definition BaseFeature.h:6
constexpr std::string_view type_name()
Definition TypeName.h:9