EPICS Base  7.0.6.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
epicsMessageQueue.h
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2002 The University of Chicago, as Operator of Argonne
3 * National Laboratory.
4 * Copyright (c) 2002 The Regents of the University of California, as
5 * Operator of Los Alamos National Laboratory.
6 * SPDX-License-Identifier: EPICS
7 * EPICS Base is distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 
20 #ifndef epicsMessageQueueh
21 #define epicsMessageQueueh
22 
23 #include "epicsAssert.h"
24 #include "libComAPI.h"
25 
26 typedef struct epicsMessageQueueOSD *epicsMessageQueueId;
27 
28 #ifdef __cplusplus
29 
48 class LIBCOM_API epicsMessageQueue {
49 public:
50 
57  epicsMessageQueue ( unsigned int capacity,
58  unsigned int maximumMessageSize );
59 
64 
74  int trySend ( void *message, unsigned int messageSize );
75 
83  int send ( void *message, unsigned int messageSize );
84 
93  int send ( void *message, unsigned int messageSize, double timeout );
94 
109  int tryReceive ( void *message, unsigned int size );
110 
124  int receive ( void *message, unsigned int size );
125 
140  int receive ( void *message, unsigned int size, double timeout );
141 
146  void show ( unsigned int level = 0 );
147 
152  unsigned int pending ();
153 
154 private:
161  epicsMessageQueue& operator=(const epicsMessageQueue &);
162 
163  epicsMessageQueueId id;
164 };
165 
166 extern "C" {
167 #endif /*__cplusplus */
168 
176 LIBCOM_API epicsMessageQueueId epicsStdCall epicsMessageQueueCreate(
177  unsigned int capacity,
178  unsigned int maximumMessageSize);
179 
183 LIBCOM_API void epicsStdCall epicsMessageQueueDestroy(
184  epicsMessageQueueId id);
185 
195 LIBCOM_API int epicsStdCall epicsMessageQueueTrySend(
196  epicsMessageQueueId id,
197  void *message,
198  unsigned int messageSize);
199 
207 LIBCOM_API int epicsStdCall epicsMessageQueueSend(
208  epicsMessageQueueId id,
209  void *message,
210  unsigned int messageSize);
211 
220 LIBCOM_API int epicsStdCall epicsMessageQueueSendWithTimeout(
221  epicsMessageQueueId id,
222  void *message,
223  unsigned int messageSize,
224  double timeout);
225 
241 LIBCOM_API int epicsStdCall epicsMessageQueueTryReceive(
242  epicsMessageQueueId id,
243  void *message,
244  unsigned int size);
245 
260 LIBCOM_API int epicsStdCall epicsMessageQueueReceive(
261  epicsMessageQueueId id,
262  void *message,
263  unsigned int size);
264 
280 LIBCOM_API int epicsStdCall epicsMessageQueueReceiveWithTimeout(
281  epicsMessageQueueId id,
282  void *message,
283  unsigned int size,
284  double timeout);
285 
291 LIBCOM_API int epicsStdCall epicsMessageQueuePending(
292  epicsMessageQueueId id);
293 
299 LIBCOM_API void epicsStdCall epicsMessageQueueShow(
300  epicsMessageQueueId id,
301  int level);
302 
303 #ifdef __cplusplus
304 }
305 #endif /* __cplusplus */
306 
307 #include "osdMessageQueue.h"
308 
309 #endif /* epicsMessageQueueh */
LIBCOM_API void epicsStdCall epicsMessageQueueDestroy(epicsMessageQueueId id)
Destroy a message queue, release all its memory.
LIBCOM_API int epicsStdCall epicsMessageQueueReceiveWithTimeout(epicsMessageQueueId id, void *message, unsigned int size, double timeout)
Wait for a message to be queued.
LIBCOM_API int epicsStdCall epicsMessageQueueSendWithTimeout(epicsMessageQueueId id, void *message, unsigned int messageSize, double timeout)
Send a message or timeout.
LIBCOM_API epicsMessageQueueId epicsStdCall epicsMessageQueueCreate(unsigned int capacity, unsigned int maximumMessageSize)
Create a message queue.
LIBCOM_API int epicsStdCall epicsMessageQueueSend(epicsMessageQueueId id, void *message, unsigned int messageSize)
Send a message.
An EPICS-specific replacement for ANSI C's assert.
LIBCOM_API int epicsStdCall epicsMessageQueuePending(epicsMessageQueueId id)
How many messages are queued.
LIBCOM_API int epicsStdCall epicsMessageQueueTrySend(epicsMessageQueueId id, void *message, unsigned int messageSize)
Try to send a message.
LIBCOM_API int epicsStdCall epicsMessageQueueReceive(epicsMessageQueueId id, void *message, unsigned int size)
Fetch the next message on the queue.
LIBCOM_API int epicsStdCall epicsMessageQueueTryReceive(epicsMessageQueueId id, void *message, unsigned int size)
Try to receive a message.
LIBCOM_API void epicsStdCall epicsMessageQueueShow(epicsMessageQueueId id, int level)
Displays some information about the message queue.