From a8c5d1095d2c3fb1b7d039ae63459d0aa672104e Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 12 Jul 2017 13:07:36 +0200 Subject: [PATCH] remove MessageQueue --- src/misc/Makefile | 2 - src/misc/messageQueue.cpp | 115 --------------------------- src/misc/pv/messageQueue.h | 128 ------------------------------ testApp/misc/Makefile | 5 -- testApp/misc/testMessageQueue.cpp | 83 ------------------- testApp/pvDataAllTests.c | 2 - 6 files changed, 335 deletions(-) delete mode 100644 src/misc/messageQueue.cpp delete mode 100644 src/misc/pv/messageQueue.h delete mode 100644 testApp/misc/testMessageQueue.cpp diff --git a/src/misc/Makefile b/src/misc/Makefile index be873af..3fb349c 100644 --- a/src/misc/Makefile +++ b/src/misc/Makefile @@ -16,7 +16,6 @@ INC += pv/executor.h INC += pv/timeFunction.h INC += pv/timer.h INC += pv/queue.h -INC += pv/messageQueue.h INC += pv/status.h INC += pv/sharedPtr.h INC += pv/debugPtr.h @@ -37,7 +36,6 @@ LIBSRCS += executor.cpp LIBSRCS += timeFunction.cpp LIBSRCS += timer.cpp LIBSRCS += status.cpp -LIBSRCS += messageQueue.cpp LIBSRCS += localStaticLock.cpp LIBSRCS += typeCast.cpp LIBSRCS += parseToPOD.cpp diff --git a/src/misc/messageQueue.cpp b/src/misc/messageQueue.cpp deleted file mode 100644 index 2945988..0000000 --- a/src/misc/messageQueue.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* messageQueue.cpp */ -/* - * Copyright information and license terms for this software can be - * found in the file LICENSE that is included with the distribution - */ -/** - * @author mrk - */ -#include - -#define epicsExportSharedSymbols -#include - -using std::string; - -namespace epics { namespace pvData { - -MessageNode::MessageNode() -: messageType(infoMessage) -{} - -string MessageNode::getMessage() const -{ - return message; -} - -MessageType MessageNode::getMessageType() const -{ - return messageType; -} - -MessageQueuePtr MessageQueue::create(int size) -{ - MessageNodePtrArray nodeArray; - nodeArray.reserve(size); - for(int i=0; i(new MessageQueue(nodeArray)); -} - -MessageQueue::MessageQueue(MessageNodePtrArray &data) -: Queue(data), - overrun(0) -{ } - -MessageQueue::~MessageQueue() -{ -} - -MessageNodePtr &MessageQueue::get() { - if(getNumberUsed()==0) return nullNode; - lastGet = getUsed(); - return lastGet; -} - -void MessageQueue::release() { - if(lastGet.get()==NULL) return; - releaseUsed(lastGet); - lastGet.reset(); -} -bool MessageQueue::put(string message,MessageType messageType,bool replaceLast) -{ - MessageNodePtr node = getFree(); - if(node.get()!= NULL) { - node->message = message; - node->messageType = messageType; - lastPut = node; - setUsed(node); - return true; - } - overrun++; - if(replaceLast) { - node = lastPut; - node->message = message; - node->messageType = messageType; - return true; - } - return false; -} - -bool MessageQueue::isEmpty() -{ - int free = getNumberFree(); - if(free==capacity()) return true; - return false; -} - -bool MessageQueue::isFull() -{ - if(getNumberFree()==0) return true; - return false; -} - -int MessageQueue::getClearOverrun() -{ - int num = overrun; - overrun = 0; - return num; -} - -MessageQueuePtr createMessageQueue(int size) -{ - MessageNodePtrArray nodeArray; - nodeArray.reserve(size); - for(int i=0; i(new MessageQueue(nodeArray)); -} - - -}} diff --git a/src/misc/pv/messageQueue.h b/src/misc/pv/messageQueue.h deleted file mode 100644 index fdfbf15..0000000 --- a/src/misc/pv/messageQueue.h +++ /dev/null @@ -1,128 +0,0 @@ -/* messageQueue.h */ -/* - * Copyright information and license terms for this software can be - * found in the file LICENSE that is included with the distribution - */ -/** - * @author mrk - */ -#ifndef MESSAGEQUEUE_H -#define MESSAGEQUEUE_H -#include -#include -#include -#include - -#include -#include -#include - -#include - -namespace epics { namespace pvData { - -class MessageNode; -class MessageQueue; -typedef std::tr1::shared_ptr MessageNodePtr; -typedef std::vector MessageNodePtrArray; -typedef std::tr1::shared_ptr MessageQueuePtr; - -/** - * @brief A node that can be put on a MessageQueue. - * - */ -class epicsShareClass MessageNode { -public: - /** - * Constructor - */ - MessageNode(); - /** - * - * Get the message value. - * @return The message value. - */ - std::string getMessage() const; - /** - * Get the message type. - * @return The message type which is defined in Requester. - */ - MessageType getMessageType() const; -private: - std::string message; - MessageType messageType; - friend class MessageQueue; -}; - -/** - * @brief A bounded queue for messages. - * - * - */ -class epicsShareClass EPICS_DEPRECATED MessageQueue : public Queue { -public: - POINTER_DEFINITIONS(MessageQueue); - /** - * Factory method to create a MessageQueue. - * @param size The number of MessageNodes in the queue. - * @return shared_ptr to MessageQueue. - */ - static MessageQueuePtr create(int size); - /** - * Constructor - * @param nodeArray an array of shared_ptr to MessageNodes, - */ - MessageQueue(MessageNodePtrArray &nodeArray); - /** - * Destructor - */ - virtual ~MessageQueue(); - /** - * get the next MessageNode of the queue. - * @return A shared_ptr to the MessageNode. - * This will be a null pointer if queue is empty. - * If get is successful then release for this MessageNode - * must be called before another get can be issued. - */ - MessageNodePtr &get(); - /** - * Release the MessageNode that was returned by the previous call to get. - */ - void release(); - /** - * - * put a message into the message queue - * @param message The message string. - * @param messageType The message type as defined in Requester, - * @param replaceLast If true and queue is full then replace. - * @return (false,true) if a message (was not, was) put in queiue. - */ - bool put(std::string message,MessageType messageType,bool replaceLast); - /** - * Is queue empty? - * @return (false,true) if (is not, is) empty. - */ - bool isEmpty() ; - /** - * Is queue full? - * @return (false,true) if (is not, is) full. - */ - bool isFull() ; - /** - * - * Clear number of times queue was overrun and return the number - * of times the queue was overrun. - */ - int getClearOverrun(); -private: - MessageNodePtr nullNode; - MessageNodePtr lastGet; - MessageNodePtr lastPut; - uint32 overrun; -}; - -}} -#endif /* MESSAGEQUEUE_H */ - - - diff --git a/testApp/misc/Makefile b/testApp/misc/Makefile index 4c0c854..7081ad3 100644 --- a/testApp/misc/Makefile +++ b/testApp/misc/Makefile @@ -64,11 +64,6 @@ testQueue_SRCS += testQueue.cpp testHarness_SRCS += testQueue.cpp TESTS += testQueue -TESTPROD_HOST += testMessageQueue -testMessageQueue_SRCS += testMessageQueue.cpp -testHarness_SRCS += testMessageQueue.cpp -TESTS += testMessageQueue - TESTPROD_HOST += testTypeCast testTypeCast_SRCS += testTypeCast.cpp testHarness_SRCS += testTypeCast.cpp diff --git a/testApp/misc/testMessageQueue.cpp b/testApp/misc/testMessageQueue.cpp deleted file mode 100644 index 5edc1d9..0000000 --- a/testApp/misc/testMessageQueue.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright information and license terms for this software can be - * found in the file LICENSE that is included with the distribution - */ -/* - * testMessageQueue.cpp - * - * Created on: 2010.12 - * Author: Marty Kraimer - */ - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - - -using namespace epics::pvData; - -static void testBasic() { - int queueSize = 3; - StringArray messages; - messages.reserve(5); - messages.push_back("1"); - messages.push_back("2"); - messages.push_back("3"); - messages.push_back("4"); - messages.push_back("5"); - MessageQueuePtr queue = MessageQueue::create(queueSize); - bool result; - MessageNodePtr messageNode; - result = queue->isEmpty(); - testOk1(result); - result = queue->put(messages[0],infoMessage,true); - testOk1(result); - result = queue->put(messages[1],infoMessage,true); - testOk1(result); - result = queue->put(messages[2],warningMessage,true); - testOk1(result); - testOk1(queue->isFull()); - result = queue->put(messages[3],infoMessage,true); - testOk1(result==true); - messageNode = queue->get(); - testOk1(messageNode.get()!=NULL); - printf("message %s messageType %s\n", - messageNode->getMessage().c_str(), - getMessageTypeName(messageNode->getMessageType()).c_str()); - testOk1(messageNode->getMessage().compare(messages[0])==0); - queue->release(); - messageNode = queue->get(); - testOk1(messageNode.get()!=NULL); - testOk1(messageNode->getMessage().compare(messages[1])==0); - queue->release(); - messageNode = queue->get(); - testOk1(messageNode.get()!=NULL); - printf("message %s messageType %s\n", - messageNode->getMessage().c_str(), - getMessageTypeName(messageNode->getMessageType()).c_str()); - testOk1(messageNode->getMessage().compare(messages[3])==0); - queue->release(); - result = queue->isEmpty(); - testOk1(result); - printf("PASSED\n"); -} - -MAIN(testMessageQueue) -{ - testPlan(13); - testDiag("Tests messageQueue"); - testBasic(); - return testDone(); -} - diff --git a/testApp/pvDataAllTests.c b/testApp/pvDataAllTests.c index 162e07d..53618f0 100644 --- a/testApp/pvDataAllTests.c +++ b/testApp/pvDataAllTests.c @@ -21,7 +21,6 @@ int testPVCopy(void); int testBaseException(void); int testBitSet(void); int testByteBuffer(void); -int testMessageQueue(void); int testOverrunBitSet(void); int testQueue(void); int testSerialization(void); @@ -71,7 +70,6 @@ void pvDataAllTests(void) runTest(testBaseException); runTest(testBitSet); runTest(testByteBuffer); - runTest(testMessageQueue); runTest(testOverrunBitSet); runTest(testQueue); runTest(testSerialization);