2022-04-11 11:19:38 +02:00
|
|
|
#ifndef FSFW_SRC_FSFW_IPC_MESSAGEQUEUEBASE_H_
|
|
|
|
#define FSFW_SRC_FSFW_IPC_MESSAGEQUEUEBASE_H_
|
|
|
|
|
|
|
|
#include <fsfw/ipc/MessageQueueIF.h>
|
2022-04-21 10:37:01 +02:00
|
|
|
#include <fsfw/ipc/definitions.h>
|
2022-04-11 11:19:38 +02:00
|
|
|
|
2022-04-21 10:37:01 +02:00
|
|
|
class MessageQueueBase : public MessageQueueIF {
|
|
|
|
public:
|
2022-04-11 11:19:38 +02:00
|
|
|
MessageQueueBase(MessageQueueId_t id, MessageQueueId_t defaultDest, MqArgs* mqArgs);
|
2022-04-11 13:54:43 +02:00
|
|
|
virtual ~MessageQueueBase();
|
2022-04-11 11:19:38 +02:00
|
|
|
|
|
|
|
// Default implementations for MessageQueueIF where possible
|
|
|
|
virtual MessageQueueId_t getLastPartner() const override;
|
|
|
|
virtual MessageQueueId_t getId() const override;
|
2022-04-11 14:07:02 +02:00
|
|
|
virtual MqArgs& getMqArgs() override;
|
2022-04-11 11:19:38 +02:00
|
|
|
virtual void setDefaultDestination(MessageQueueId_t defaultDestination) override;
|
|
|
|
virtual MessageQueueId_t getDefaultDestination() const override;
|
|
|
|
virtual bool isDefaultDestinationSet() const override;
|
|
|
|
virtual ReturnValue_t sendMessage(MessageQueueId_t sendTo, MessageQueueMessageIF* message,
|
2022-04-21 10:37:01 +02:00
|
|
|
bool ignoreFault) override;
|
2022-04-11 11:19:38 +02:00
|
|
|
virtual ReturnValue_t sendToDefault(MessageQueueMessageIF* message) override;
|
|
|
|
virtual ReturnValue_t reply(MessageQueueMessageIF* message) override;
|
|
|
|
virtual ReturnValue_t receiveMessage(MessageQueueMessageIF* message,
|
2022-04-21 10:37:01 +02:00
|
|
|
MessageQueueId_t* receivedFrom) override;
|
|
|
|
virtual ReturnValue_t sendToDefaultFrom(MessageQueueMessageIF* message, MessageQueueId_t sentFrom,
|
|
|
|
bool ignoreFault = false) override;
|
2022-04-11 11:19:38 +02:00
|
|
|
|
|
|
|
// OSAL specific, forward the abstract function
|
|
|
|
virtual ReturnValue_t receiveMessage(MessageQueueMessageIF* message) = 0;
|
|
|
|
virtual ReturnValue_t sendMessageFrom(MessageQueueId_t sendTo, MessageQueueMessageIF* message,
|
|
|
|
MessageQueueId_t sentFrom, bool ignoreFault = false) = 0;
|
2022-04-21 10:37:01 +02:00
|
|
|
|
|
|
|
protected:
|
2022-04-11 11:19:38 +02:00
|
|
|
MessageQueueId_t id = MessageQueueIF::NO_QUEUE;
|
|
|
|
MessageQueueId_t last = MessageQueueIF::NO_QUEUE;
|
|
|
|
MessageQueueId_t defaultDest = MessageQueueIF::NO_QUEUE;
|
|
|
|
MqArgs args = {};
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* FSFW_SRC_FSFW_IPC_MESSAGEQUEUEBASE_H_ */
|