Change API in anticipation of conversion to os-specific implementation.

This commit is contained in:
W. Eric Norum
2003-02-26 19:33:10 +00:00
parent 9cf668711b
commit f64cf11377
2 changed files with 42 additions and 47 deletions
+30 -38
View File
@@ -78,8 +78,8 @@ epicsMessageQueue::send(void *message, unsigned int size)
return true;
}
bool
epicsMessageQueue::receive(void *message, unsigned int *size, bool withTimeout, double timeout)
int
epicsMessageQueue::receive(void *message, bool withTimeout, double timeout)
{
char *myOutPtr;
unsigned long l;
@@ -90,7 +90,7 @@ epicsMessageQueue::receive(void *message, unsigned int *size, bool withTimeout,
queueMutex.unlock();
if (withTimeout) {
if (queueEvent.wait(timeout) == false)
return false;
return -1;
}
else {
queueEvent.wait();
@@ -98,7 +98,7 @@ epicsMessageQueue::receive(void *message, unsigned int *size, bool withTimeout,
queueMutex.lock();
myOutPtr = (char *)outPtr;
}
*size = l = *(unsigned long *)myOutPtr;
l = *(unsigned long *)myOutPtr;
memcpy(message, (unsigned long *)myOutPtr + 1, l);
if (myOutPtr == lastMessageSlot)
myOutPtr = firstMessageSlot;
@@ -107,36 +107,36 @@ epicsMessageQueue::receive(void *message, unsigned int *size, bool withTimeout,
this->outPtr = myOutPtr;
full = false;
queueMutex.unlock();
return true;
return l;
}
void
epicsMessageQueue::receive(void *message, unsigned int *size)
int
epicsMessageQueue::receive(void *message )
{
this->receive(message, size, false, 0.0);
return this->receive(message, false, 0.0);
}
bool
epicsMessageQueue::receive(void *message, unsigned int *size, double timeout)
int
epicsMessageQueue::receive(void *message, double timeout)
{
return this->receive(message, size, true, timeout);
return this->receive(message, true, timeout);
}
bool
epicsMessageQueue::isFull() const
unsigned int
epicsMessageQueue::pending() const
{
return full;
}
char *myInPtr, *myOutPtr;
int nmsg;
bool
epicsMessageQueue::isEmpty()
{
bool empty;
queueMutex.lock();
empty = ((outPtr == inPtr) && !full);
queueMutex.unlock();
return empty;
myInPtr = (char *)inPtr;
myOutPtr = (char *)outPtr;
if (myInPtr >= myOutPtr)
nmsg = (myInPtr - myOutPtr) / slotSize;
else
nmsg = capacity - (myOutPtr - myInPtr) / slotSize;
if (full)
nmsg = capacity;
return nmsg;
}
void
@@ -188,33 +188,25 @@ epicsShareFunc int epicsShareAPI epicsMessageQueueSend(
return ((epicsMessageQueue *)id)->send(message, messageSize);
}
epicsShareFunc void epicsShareAPI epicsMessageQueueReceive(
epicsShareFunc int epicsShareAPI epicsMessageQueueReceive(
epicsMessageQueueId id,
void *message,
unsigned int *messageSize)
void *message)
{
((epicsMessageQueue *)id)->receive(message, messageSize);
return ((epicsMessageQueue *)id)->receive(message);
}
epicsShareFunc int epicsShareAPI epicsMessageQueueReceiveWithTimeout(
epicsMessageQueueId id,
void *message,
unsigned int *messageSize,
double timeout)
{
return ((epicsMessageQueue *)id)->receive(message, messageSize, timeout);
return ((epicsMessageQueue *)id)->receive(message, timeout);
}
epicsShareFunc int epicsShareAPI epicsMessageQueueIsFull(
epicsShareFunc int epicsShareAPI epicsMessageQueuePending(
epicsMessageQueueId id)
{
return ((epicsMessageQueue *)id)->isFull();
}
epicsShareFunc int epicsShareAPI epicsMessageQueueIsEmpty(
epicsMessageQueueId id)
{
return ((epicsMessageQueue *)id)->isEmpty();
return ((epicsMessageQueue *)id)->pending();
}
epicsShareFunc void epicsShareAPI epicsMessageQueueShow(
+12 -9
View File
@@ -34,11 +34,11 @@ public:
unsigned int maximumMessageSize );
~epicsMessageQueue ();
bool send ( void *message, unsigned int messageSize );
void receive ( void *message, unsigned int *messageSize );
bool receive ( void *message, unsigned int *messageSize, double timeout );
bool send ( void *message, unsigned int messageSize, double timeout );
int receive ( void *message );
int receive ( void *message, double timeout );
void show ( unsigned int level = 0 ) const;
bool isFull () const;
bool isEmpty ();
unsigned int pending () const;
private: // Prevent compiler-generated member functions
// default constructor, copy constructor, assignment operator
@@ -47,7 +47,7 @@ private: // Prevent compiler-generated member functions
epicsMessageQueue& operator=(const epicsMessageQueue &);
private:
bool receive ( void *message, unsigned int *messageSize, bool withTimeout, double timeout );
int receive ( void *message, bool withTimeout, double timeout );
volatile char *inPtr;
volatile char *outPtr;
@@ -76,7 +76,12 @@ epicsShareFunc int epicsShareAPI epicsMessageQueueSend(
epicsMessageQueueId id,
void *message,
unsigned int messageSize);
epicsShareFunc void epicsShareAPI epicsMessageQueueReceive(
epicsShareFunc int epicsShareAPI epicsMessageQueueSendWithTimeout(
epicsMessageQueueId id,
void *message,
unsigned int messageSize,
double timeout);
epicsShareFunc int epicsShareAPI epicsMessageQueueReceive(
epicsMessageQueueId id,
void *message,
unsigned int *messageSize);
@@ -85,9 +90,7 @@ epicsShareFunc int epicsShareAPI epicsMessageQueueReceiveWithTimeout(
void *message,
unsigned int *messageSize,
double timeout);
epicsShareFunc int epicsShareAPI epicsMessageQueueIsFull(
epicsMessageQueueId id);
epicsShareFunc int epicsShareAPI epicsMessageQueueIsEmpty(
epicsShareFunc int epicsShareAPI epicsMessageQueuePending(
epicsMessageQueueId id);
epicsShareFunc void epicsShareAPI epicsMessageQueueShow(
epicsMessageQueueId id,