This is Unofficial EPICS BASE Doxygen Site
epicsMessageQueue.cpp
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 * EPICS BASE Versions 3.13.7
7 * and higher are distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 /*
11  * Author W. Eric Norum
12  * norume@aps.anl.gov
13  * 630 252 4793
14  */
15 
16 #include <new>
17 
18 #include "epicsMessageQueue.h"
19 #include "epicsStdio.h"
20 
21 epicsMessageQueue::epicsMessageQueue(unsigned int aCapacity,
22  unsigned int aMaxMessageSize)
23  : id ( epicsMessageQueueCreate(aCapacity, aMaxMessageSize) )
24 {
25  if (id == NULL)
26  throw std::bad_alloc ();
27 }
28 
29 epicsMessageQueue::~epicsMessageQueue()
30 {
32 }
33 
34 int
35 epicsMessageQueue::trySend(void *message, unsigned int size)
36 {
37  return epicsMessageQueueTrySend(id, message, size);
38 }
39 
40 int
41 epicsMessageQueue::send(void *message, unsigned int size)
42 {
43  return epicsMessageQueueSend(id, message, size);
44 }
45 
46 int
47 epicsMessageQueue::send(void *message, unsigned int size, double timeout)
48 {
49  return epicsMessageQueueSendWithTimeout(id, message, size, timeout);
50 }
51 
52 int
53 epicsMessageQueue::tryReceive(void *message, unsigned int size )
54 {
55  return epicsMessageQueueTryReceive(id, message, size);
56 }
57 
58 int
59 epicsMessageQueue::receive(void *message, unsigned int size )
60 {
61  return epicsMessageQueueReceive(id, message, size);
62 }
63 
64 int
65 epicsMessageQueue::receive(void *message, unsigned int size, double timeout)
66 {
67  return epicsMessageQueueReceiveWithTimeout(id, message, size, timeout);
68 }
69 
70 unsigned int
71 epicsMessageQueue::pending()
72 {
73  return epicsMessageQueuePending(id);
74 }
75 
76 void
77 epicsMessageQueue::show(unsigned int level)
78 {
79  epicsMessageQueueShow(id, level);
80 }
double timeout
Definition: pvutils.cpp:25
#define epicsMessageQueueTrySend(q, m, l)
#define epicsMessageQueueShow(q, l)
#define NULL
Definition: catime.c:38
#define epicsMessageQueuePending(q)
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.
#define epicsMessageQueueSend(q, m, l)
A C++ and a C facility for communication between threads.
#define epicsMessageQueueTryReceive(q, m, s)
#define epicsMessageQueueReceive(q, m, s)
#define epicsMessageQueueDestroy(q)
#define epicsMessageQueueCreate(c, s)