EPICS Base  7.0.8.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 
98  int send ( void *message, unsigned int messageSize, double timeout );
99 
117  int tryReceive ( void *message, unsigned int size );
118 
135  int receive ( void *message, unsigned int size );
136 
157  int receive ( void *message, unsigned int size, double timeout );
158 
163  void show ( unsigned int level = 0 );
164 
169  unsigned int pending ();
170 
171 private:
178  epicsMessageQueue& operator=(const epicsMessageQueue &);
179 
180  epicsMessageQueueId id;
181 };
182 
183 extern "C" {
184 #endif /*__cplusplus */
185 
193 LIBCOM_API epicsMessageQueueId epicsStdCall epicsMessageQueueCreate(
194  unsigned int capacity,
195  unsigned int maximumMessageSize);
196 
200 LIBCOM_API void epicsStdCall epicsMessageQueueDestroy(
201  epicsMessageQueueId id);
202 
212 LIBCOM_API int epicsStdCall epicsMessageQueueTrySend(
213  epicsMessageQueueId id,
214  void *message,
215  unsigned int messageSize);
216 
224 LIBCOM_API int epicsStdCall epicsMessageQueueSend(
225  epicsMessageQueueId id,
226  void *message,
227  unsigned int messageSize);
228 
237 LIBCOM_API int epicsStdCall epicsMessageQueueSendWithTimeout(
238  epicsMessageQueueId id,
239  void *message,
240  unsigned int messageSize,
241  double timeout);
242 
258 LIBCOM_API int epicsStdCall epicsMessageQueueTryReceive(
259  epicsMessageQueueId id,
260  void *message,
261  unsigned int size);
262 
277 LIBCOM_API int epicsStdCall epicsMessageQueueReceive(
278  epicsMessageQueueId id,
279  void *message,
280  unsigned int size);
281 
297 LIBCOM_API int epicsStdCall epicsMessageQueueReceiveWithTimeout(
298  epicsMessageQueueId id,
299  void *message,
300  unsigned int size,
301  double timeout);
302 
308 LIBCOM_API int epicsStdCall epicsMessageQueuePending(
309  epicsMessageQueueId id);
310 
316 LIBCOM_API void epicsStdCall epicsMessageQueueShow(
317  epicsMessageQueueId id,
318  int level);
319 
320 #ifdef __cplusplus
321 }
322 #endif /* __cplusplus */
323 
324 #include "osdMessageQueue.h"
325 
326 #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.