diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/sipapi/src/sipregistrationbinding.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SIP/sipapi/src/sipregistrationbinding.cpp Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,359 @@ +// 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 : SIPRegistrationBinding.cpp +// Part of : SIPAPI +// Version : SIP/5.0 +// + + + +#include +#include "sipdefs.h" +#include "sipregistrationbinding.h" +#include "RegBindingImplementation.h" +#include "sipclienttransaction.h" +#include "sipmessageelements.h" +#include "sipcontactheader.h" +#include "sipstrings.h" +#include "sipstrconsts.h" + + +#ifdef CPPUNIT_TEST + +#include "TestCleanupStack.h" + +#undef EXPORT_C +#define EXPORT_C + +#endif + + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPRegistrationBinding* +CSIPRegistrationBinding::NewL(CSIPConnection& aConnection, + CSIPToHeader* aAor, + CSIPContactHeader* aContact, + CSIPRefresh* aRefresh, + CSIPRouteHeader* aOutboundProxy, + CUri8* aRemoteUri, + CSIPFromHeader* aFrom) + { + CSIPRegistrationBinding* self = + CSIPRegistrationBinding::NewLC(aConnection, + aAor, + aContact, + aRefresh, + aOutboundProxy, + aRemoteUri, + aFrom); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::NewLC +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPRegistrationBinding* +CSIPRegistrationBinding::NewLC(CSIPConnection& aConnection, + CSIPToHeader* aAor, + CSIPContactHeader* aContact, + CSIPRefresh* aRefresh, + CSIPRouteHeader* aOutboundProxy, + CUri8* aRemoteUri, + CSIPFromHeader* aFrom) + { + __ASSERT_ALWAYS(aAor && aContact, User::Leave(KErrArgument)); + + if (aContact->HasParam(SIPStrings::StringF(SipStrConsts::EExpires))) + { + TUint expires = aContact->ExpiresParameter(); + __ASSERT_ALWAYS(expires >= KSIPMinExpirationValue, + User::Leave(KErrArgument)); + } + + CSIPRegistrationBinding* self = + new (ELeave) CSIPRegistrationBinding(); + CleanupStack::PushL(self); + self->ConstructL(aConnection, + aAor, + aContact, + aRefresh, + aOutboundProxy, + aRemoteUri, + aFrom); + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::CSIPRegistrationBinding +// ----------------------------------------------------------------------------- +// +CSIPRegistrationBinding::CSIPRegistrationBinding() + { + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::ConstructL +// aAor and aContact have been checked in NewLC so they aren't checked again +// ----------------------------------------------------------------------------- +// +void CSIPRegistrationBinding::ConstructL(CSIPConnection& aConnection, + CSIPToHeader* aAor, + CSIPContactHeader* aContact, + CSIPRefresh* aRefresh, + CSIPRouteHeader* aOutboundProxy, + CUri8* aRemoteUri, + CSIPFromHeader* aFrom) + { + iImplementation = CRegBindingImplementation::NewL(*this, + aConnection, + aAor, + aContact, + aRefresh, + aOutboundProxy, + aRemoteUri, + aFrom); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::~CSIPRegistrationBinding +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPRegistrationBinding::~CSIPRegistrationBinding() + { + delete iImplementation; + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::IsContextActive +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CSIPRegistrationBinding::IsContextActive() const + { + __TEST_INVARIANT; + return iImplementation->IsContextActive(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::ContextId +// ----------------------------------------------------------------------------- +// +EXPORT_C TUint32 CSIPRegistrationBinding::ContextId() const + { + __TEST_INVARIANT; + return iImplementation->ContextId(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::RegisterL +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPClientTransaction* +CSIPRegistrationBinding::RegisterL(CSIPMessageElements* aElements) + { + __TEST_INVARIANT; + return iImplementation->RegisterL(aElements); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::DeregisterL +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPClientTransaction* +CSIPRegistrationBinding::DeregisterL(CSIPMessageElements* aElements) + { + __TEST_INVARIANT; + return iImplementation->DeregisterL(aElements); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::UpdateL +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPClientTransaction* +CSIPRegistrationBinding::UpdateL(CSIPMessageElements* aElements) + { + __TEST_INVARIANT; + __ASSERT_ALWAYS(aElements, User::Leave(KErrArgument)); + + return iImplementation->UpdateL(aElements); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::UpdateL +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPClientTransaction* +CSIPRegistrationBinding::UpdateL(TUint aExpirationValue, + CSIPMessageElements* aElements) + { + __TEST_INVARIANT; + __ASSERT_ALWAYS(aExpirationValue >= KSIPMinExpirationValue, + User::Leave(KErrArgument)); + + return iImplementation->UpdateL(aElements, &aExpirationValue); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::SetOutboundProxyL +// ----------------------------------------------------------------------------- +// +EXPORT_C void +CSIPRegistrationBinding::SetOutboundProxyL(CSIPRouteHeader* aOutboundProxy) + { + __TEST_INVARIANT; + + iImplementation->SetOutboundProxyL(aOutboundProxy); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::Aor +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPToHeader& CSIPRegistrationBinding::Aor() const + { + __TEST_INVARIANT; + return iImplementation->Aor(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::ContactHeader +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPContactHeader& CSIPRegistrationBinding::ContactHeader() const + { + __TEST_INVARIANT; + return iImplementation->ContactHeader(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::ContactHeader +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPContactHeader& CSIPRegistrationBinding::ContactHeader() + { + __TEST_INVARIANT; + return iImplementation->ContactHeader(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::OutboundProxy +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPRouteHeader* CSIPRegistrationBinding::OutboundProxy() const + { + __TEST_INVARIANT; + return iImplementation->OutboundProxy(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::SIPRefresh +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPRefresh* CSIPRegistrationBinding::SIPRefresh() const + { + __TEST_INVARIANT; + return iImplementation->SIPRefresh(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::SIPRefresh +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPRefresh* CSIPRegistrationBinding::SIPRefresh() + { + __TEST_INVARIANT; + return iImplementation->SIPRefresh(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::Connection +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPConnection* CSIPRegistrationBinding::Connection() + { + __TEST_INVARIANT; + return iImplementation->Connection(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::Connection +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPConnection* CSIPRegistrationBinding::Connection() const + { + __TEST_INVARIANT; + return iImplementation->Connection(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::operator== +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CSIPRegistrationBinding::operator==( + const CSIPRegistrationBinding& aRegistration) const + { + __TEST_INVARIANT; + return *iImplementation == *aRegistration.iImplementation; + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::RegisteredContact +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPContactHeader* + CSIPRegistrationBinding::RegisteredContact() const + { + __TEST_INVARIANT; + return iImplementation->RegisteredContact(); + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::SetProperty +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CSIPRegistrationBinding::SetProperty(TUint32 aProperty,TBool aValue) + { + __TEST_INVARIANT; + TRAPD(err, iImplementation->SetPropertyL(aProperty,aValue)); + return err; + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::Implementation +// ----------------------------------------------------------------------------- +// +CRegBindingImplementation& CSIPRegistrationBinding::Implementation() + { + __TEST_INVARIANT; + return *iImplementation; + } + +// ----------------------------------------------------------------------------- +// CSIPRegistrationBinding::__DbgTestInvariant +// ----------------------------------------------------------------------------- +// + +void CSIPRegistrationBinding::__DbgTestInvariant() const + { + if (!iImplementation) + { + User::Invariant(); + } + } +