--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/HtiFramework/src/HtiMessageQueue.cpp Tue Feb 02 01:57:15 2010 +0200
@@ -0,0 +1,125 @@
+/*
+* 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: CHtiMessageQueue implementation
+*
+*/
+
+
+#include "HtiMessageQueue.h"
+
+CHtiMessageQueue* CHtiMessageQueue::NewL()
+ {
+ return new (ELeave) CHtiMessageQueue;
+ }
+
+CHtiMessageQueue::CHtiMessageQueue():
+ iQueue( CHtiMessage::iLinkOffset ),
+ iMemoryAllocated( 0 ),
+ iQueueIter( iQueue ),
+ iIsFirst ( ETrue )
+ {
+ }
+
+CHtiMessageQueue::~CHtiMessageQueue()
+ {
+ RemoveAll();
+ }
+
+void CHtiMessageQueue::RemoveAll()
+ {
+ if ( !IsEmpty() )
+ {
+ CHtiMessage* msg;
+
+ iQueueIter.SetToFirst();
+ while ( ( msg = iQueueIter++ ) != NULL )
+ {
+ iQueue.Remove( *msg );
+ delete msg;
+ }
+ }
+ iMemoryAllocated = 0;
+ }
+
+CHtiMessage* CHtiMessageQueue::Remove()
+ {
+ CHtiMessage* msg = NULL;
+ if ( !IsEmpty() )
+ {
+ msg = iQueue.First();
+ iQueue.Remove( *msg );
+ iMemoryAllocated -= msg->Size();
+ }
+ return msg;
+ }
+
+CHtiMessage* CHtiMessageQueue::Remove( CHtiMessage* aMsg)
+ {
+ if ( aMsg && !IsEmpty() )
+ {
+ iQueue.Remove( *aMsg );
+ iMemoryAllocated -= aMsg->Size();
+ return aMsg;
+ }
+ return NULL;
+ }
+
+void CHtiMessageQueue::StartServiceIteration()
+ {
+ if ( !IsEmpty() )
+ {
+ iQueueIter.SetToFirst();
+ iIsFirst = ETrue;
+ }
+ }
+
+CHtiMessage* CHtiMessageQueue::GetNext()
+ {
+ CHtiMessage* msg = NULL;
+ if ( !IsEmpty() )
+ {
+ while ( ( msg = iQueueIter++ ) != NULL )
+ {
+ if ( iIsFirst )
+ {
+ iIsFirst = EFalse;
+ iLastServiceUid = msg->DestinationServiceUid();
+ return msg;
+ }
+ else if ( msg->DestinationServiceUid() != iLastServiceUid )
+ {
+ iLastServiceUid = msg->DestinationServiceUid();
+ return msg;
+ }
+ }
+ }
+ return msg;
+ }
+
+
+void CHtiMessageQueue::Add( CHtiMessage& aMessage )
+ {
+ iQueue.AddLast( aMessage );
+ iMemoryAllocated += aMessage.Size();
+ }
+
+TBool CHtiMessageQueue::IsEmpty() const
+ {
+ return iQueue.IsEmpty();
+ }
+
+TInt CHtiMessageQueue::QueueSize() const
+ {
+ return iMemoryAllocated;
+ }