F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Queue.hpp
Go to the documentation of this file.
1
12#ifndef _Queue_hpp_
13#define _Queue_hpp_
14
15#include <FpConfig.hpp>
16#include <Fw/Obj/ObjBase.hpp>
18#include <Os/QueueString.hpp>
19
20namespace Os {
21 // forward declaration for registry
22 class QueueRegistry;
23
24 class Queue {
25 public:
26
38 };
39
43 };
44
45 Queue();
46 virtual ~Queue();
48
49 // Send serialized buffers
52
53 // Send raw buffers
54 QueueStatus send(const U8* buffer, NATIVE_INT_TYPE size, NATIVE_INT_TYPE priority, QueueBlocking block);
55 QueueStatus receive(U8* buffer, NATIVE_INT_TYPE capacity, NATIVE_INT_TYPE &actualSize, NATIVE_INT_TYPE &priority, QueueBlocking block);
56
61 const QueueString& getName();
63#if FW_QUEUE_REGISTRATION
64 static void setQueueRegistry(QueueRegistry* reg); // !< set the queue registry
65#endif
66
67 protected:
77#if FW_QUEUE_REGISTRATION
78 static QueueRegistry* s_queueRegistry;
79#endif
81
82 private:
83 Queue(Queue&);
84 Queue(Queue*);
85 };
86
88 public:
89 virtual void regQueue(Queue* obj)=0;
90 virtual ~QueueRegistry() {};
91 };
92}
93
94#endif
PlatformPointerCastType POINTER_CAST
Definition BasicTypes.h:53
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
uint8_t U8
8-bit unsigned integer
Definition BasicTypes.h:26
C++-compatible configuration header for fprime configuration.
Declarations for Fw::ObjBase and Fw::ObjRegistry.
QueueString m_name
queue name
Definition Queue.hpp:76
QueueStatus create(const Fw::StringBase &name, NATIVE_INT_TYPE depth, NATIVE_INT_TYPE msgSize)
create a message queue
NATIVE_INT_TYPE getMsgSize() const
get the message size (maximum message size queue can hold)
Definition Queue.cpp:244
@ QUEUE_SIZE_MISMATCH
attempted to send or receive with buffer too large, too small
Definition Queue.hpp:31
@ QUEUE_UNINITIALIZED
Queue wasn't initialized successfully.
Definition Queue.hpp:30
@ QUEUE_SEND_ERROR
message send error
Definition Queue.hpp:32
@ QUEUE_NO_MORE_MSGS
If non-blocking, all the messages have been drained.
Definition Queue.hpp:29
@ QUEUE_INVALID_PRIORITY
invalid priority requested
Definition Queue.hpp:34
@ QUEUE_EMPTY_BUFFER
supplied buffer is empty
Definition Queue.hpp:35
@ QUEUE_UNKNOWN_ERROR
Unexpected error; can't match with returns.
Definition Queue.hpp:37
@ QUEUE_OK
message sent/received okay
Definition Queue.hpp:28
@ QUEUE_FULL
queue was full when attempting to send a message
Definition Queue.hpp:36
@ QUEUE_RECEIVE_ERROR
message receive error
Definition Queue.hpp:33
QueueStatus send(const Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE priority, QueueBlocking block)
send a message
QueueStatus createInternal(const Fw::StringBase &name, NATIVE_INT_TYPE depth, NATIVE_INT_TYPE msgSize)
create a message queue
Definition Queue.cpp:42
QueueStatus receive(Fw::SerializeBufferBase &buffer, NATIVE_INT_TYPE &priority, QueueBlocking block)
receive a message
const QueueString & getName()
get the queue name
NATIVE_INT_TYPE getQueueSize() const
get the queue depth (maximum number of messages queue can hold)
Definition Queue.cpp:233
NATIVE_INT_TYPE getMaxMsgs() const
get the maximum number of messages (high watermark)
Definition Queue.cpp:222
QueueBlocking
Definition Queue.hpp:40
@ QUEUE_BLOCKING
Queue receive blocks until a message arrives.
Definition Queue.hpp:41
@ QUEUE_NONBLOCKING
Queue receive always returns even if there is no message.
Definition Queue.hpp:42
NATIVE_INT_TYPE getNumMsgs() const
get the number of messages in the queue
Definition Queue.cpp:211
virtual ~Queue()
Definition Queue.cpp:65
static NATIVE_INT_TYPE getNumQueues()
get the number of queues in the system
static NATIVE_INT_TYPE s_numQueues
tracks number of queues in the system
Definition Queue.hpp:80
POINTER_CAST m_handle
handle for implementation specific queue
Definition Queue.hpp:75
virtual ~QueueRegistry()
Definition Queue.hpp:90
virtual void regQueue(Queue *obj)=0
method called by queue init() methods to register a new queue
Definition File.cpp:6