diff -r 7fdc9a71d314 -r 8ad140f3dd41 hti/HtiFramework/inc/HtiMessageQueue.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hti/HtiFramework/inc/HtiMessageQueue.h Wed Oct 13 16:17:58 2010 +0300 @@ -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). It alsoe provides functionality +* to monitor memory allocated by all messages. +* +*/ + + +#ifndef MESSAGEQUEUE_H__ +#define MESSAGEQUEUE_H__ + +#include "HtiMessage.h" + +NONSHARABLE_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 iQueue; + + /** + * Current memory allocated by hti messages in the queue + */ + TInt iMemoryAllocated; + + /** + * queue iterator + */ + TSglQueIter 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