diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/TransactionUser/src/ResolvingResults.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SIP/TransactionUser/src/ResolvingResults.cpp Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,113 @@ +// Copyright (c) 2006-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 : ResolvingResults.cpp +// Part of : TransactionUser +// Version : SIP/5.0 +// + + + +#include +#include "MSIPResolvingResult.h" + +#include "ResolvingResults.h" + +#ifdef CPPUNIT_TEST +#include "TestCleanupStack.h" +#endif + + +// ----------------------------------------------------------------------------- +// CResolvingResults::NewL +// ----------------------------------------------------------------------------- +// +CResolvingResults* CResolvingResults::NewL() + { + CResolvingResults* self = new (ELeave) CResolvingResults(); + return self; + } + +// ----------------------------------------------------------------------------- +// CResolvingResults::CResolvingResults +// ----------------------------------------------------------------------------- +// +CResolvingResults::CResolvingResults() +#ifdef CPPUNIT_TEST + : iAddresses(1) +#endif + { + } + +// ----------------------------------------------------------------------------- +// CResolvingResults::~CResolvingResults +// ----------------------------------------------------------------------------- +// +CResolvingResults::~CResolvingResults() + { + iAddresses.ResetAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CResolvingResults::Addresses +// ----------------------------------------------------------------------------- +// +RPointerArray& CResolvingResults::Addresses() + { + return iAddresses; + } + +// ----------------------------------------------------------------------------- +// CResolvingResults::GetNext +// ----------------------------------------------------------------------------- +// +TBool CResolvingResults::GetNext(TInetAddr& aAddress, + RStringF& aTransport, + TBool& aForceUDP) + { + TInt pos = 0; + while (pos < iAddresses.Count() && iAddresses[pos]->Failed()) + { + pos++; + } + + if (pos < iAddresses.Count()) + { + aAddress = iAddresses[pos]->Address(); + aTransport.Close(); + aTransport = iAddresses[pos]->Protocol().Copy(); + aForceUDP = iAddresses[pos]->ForceUDP(); + iAddresses[pos]->SetFailed(ETrue); + return ETrue; + } + + return EFalse; + } + +// ----------------------------------------------------------------------------- +// CResolvingResults::ContinueResolvingCurrentUri +// ----------------------------------------------------------------------------- +// +TBool CResolvingResults::ContinueResolvingCurrentUri() const + { + return iAddresses.Count() > 0; + } + +// ----------------------------------------------------------------------------- +// CResolvingResults::ClearAll +// ----------------------------------------------------------------------------- +// +void CResolvingResults::ClearAll() + { + iAddresses.ResetAndDestroy(); + }