--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/HtiFramework/inc/HtiMessageQueue.h Tue Feb 02 01:57:15 2010 +0200
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Simple FIFO Queue class based on single-linked list
+* (TSglQue<CHtiMessage>). It alsoe provides functionality
+* to monitor memory allocated by all messages.
+*
+*/
+
+
+#ifndef MESSAGEQUEUE_H__
+#define MESSAGEQUEUE_H__
+
+#include "HtiMessage.h"
+
+class CHtiMessageQueue : public CBase
+ {
+public:
+ /**
+ * Create a new queue
+ *
+ */
+ static CHtiMessageQueue* NewL();
+
+ virtual ~CHtiMessageQueue();
+
+ /**
+ * Adds a new message to the queue
+ *
+ * @param aMessage instance of ready HTI message
+ */
+ void Add(CHtiMessage& aMessage);
+
+ /**
+ * Retrives a message from the queue
+ * and remove it from the queue
+ *
+ * @return a HTI message
+ */
+ CHtiMessage* Remove();
+
+ /**
+ * Removes specifeda message from the queue
+ *
+ * @param aMsg message to remove
+ * @return a HTI message
+ */
+ CHtiMessage* Remove( CHtiMessage* aMsg);
+
+ /**
+ * Deletes all messages from queue
+ */
+ void RemoveAll();
+
+ /**
+ * Starts iteration based on service names
+ * Each call to GetNext() will return next message to the service
+ * different from the service name in the current message
+ */
+ void StartServiceIteration();
+
+ /**
+ * Returns next message with service name different
+ * than in the current message.
+ * This method does not remove message from the queue, so ownership
+ * is not transfered. Remove( CHtiMessage* aMsg) should be used
+ * to delete the message from a queue.
+ *
+ * @return a HTI message or NULL if there is no messages anymore
+ */
+ CHtiMessage* GetNext();
+
+
+ /**
+ * Checks that the queue is empty
+ *
+ * @return ETrue if queue is empty
+ */
+ TBool IsEmpty() const;
+
+ /**
+ * Returns memory allocated by all messages in the queue
+ */
+ TInt QueueSize() const;
+
+protected:
+ CHtiMessageQueue();
+
+protected:
+ /**
+ * Queue
+ */
+ TSglQue<CHtiMessage> iQueue;
+
+ /**
+ * Current memory allocated by hti messages in the queue
+ */
+ TInt iMemoryAllocated;
+
+ /**
+ * queue iterator
+ */
+ TSglQueIter<CHtiMessage> iQueueIter;
+
+ /**
+ * last service uid
+ * used during iteration by service names
+ */
+ TUid iLastServiceUid;
+
+ /**
+ * Used to ommit service name checking for the first GetNext()
+ */
+ TBool iIsFirst;
+ };
+
+#endif