realtimenetprots/sipfw/ClientResolver/Server/src/CSIPCRResponseQueue.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ClientResolver/Server/src/CSIPCRResponseQueue.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,111 @@
+// Copyright (c) 2005-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:
+// Name          : CSIPCRResponseQueue.cpp
+// Part of       : SIP Client Resolver
+// Version       : 1.0
+//
+
+
+
+// INCLUDES
+#include "CSIPCRResponseQueue.h"
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::CSIPCRResponseQueue
+// -----------------------------------------------------------------------------
+//
+CSIPCRResponseQueue::CSIPCRResponseQueue ()
+	{
+    iResponseItems.Reset ();
+	}	
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::~CSIPCRResponseQueue
+// -----------------------------------------------------------------------------
+//
+CSIPCRResponseQueue::~CSIPCRResponseQueue ()
+    {
+   	iResponseItems.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::IsEmpty
+// -----------------------------------------------------------------------------
+//
+TBool CSIPCRResponseQueue::IsEmpty () const
+    {
+	return (iResponseItems.Count () == 0); 
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::First
+// -----------------------------------------------------------------------------
+//
+CSIPCRResponseItem& CSIPCRResponseQueue::First ()
+    {
+    __ASSERT_ALWAYS (iResponseItems.Count () > 0, 
+                     User::Panic(KNullDesC, KErrGeneral));
+    return *(iResponseItems[0]);
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::AddLast()
+// -----------------------------------------------------------------------------
+//
+TInt CSIPCRResponseQueue::AddLast  (const CSIPCRResponseItem* aItem)
+    {
+ 	return iResponseItems.Append (aItem);
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::RemoveFirst
+// -----------------------------------------------------------------------------
+//
+void CSIPCRResponseQueue::RemoveFirst  ()
+    {
+    if (iResponseItems.Count () > 0) 
+        {
+        CSIPCRResponseItem* item = iResponseItems[0];
+        iResponseItems.Remove (0);
+        delete item;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::RemoveByRequestId
+// -----------------------------------------------------------------------------
+//
+void CSIPCRResponseQueue::RemoveByRequestId (TUint32 aRequestId)
+    {
+    for (TInt i=iResponseItems.Count()-1; i >= 0; i--)
+        {
+        CSIPCRResponseItem* item = iResponseItems[i];
+        if (aRequestId == item->RequestId())
+            {
+            iResponseItems.Remove(i);
+            delete item;
+            }
+        }
+    }
+    
+// -----------------------------------------------------------------------------
+// CSIPCRResponseQueue::RemoveAll
+// -----------------------------------------------------------------------------
+//    
+void CSIPCRResponseQueue::RemoveAll ()
+    {
+    iResponseItems.ResetAndDestroy();
+    }
+
+// End of File