diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/protocol/src/ncd_cp_cookieimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/protocol/src/ncd_cp_cookieimpl.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,285 @@ +/* +* Copyright (c) 2006 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: Implementation of CNcdCookieHandler +* +*/ + + +#include "ncd_cp_cookieimpl.h" +#include "ncdprotocolutils.h" +#include "catalogsdebug.h" +#include "catalogsutils.h" + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CNcdConfigurationProtocolCookie::CNcdConfigurationProtocolCookie() + { + } + + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CNcdConfigurationProtocolCookie* + CNcdConfigurationProtocolCookie::NewL() + { + CNcdConfigurationProtocolCookie* self = new(ELeave) + CNcdConfigurationProtocolCookie(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +CNcdConfigurationProtocolCookie* + CNcdConfigurationProtocolCookie::NewLC() + { + CNcdConfigurationProtocolCookie* self = + new (ELeave) CNcdConfigurationProtocolCookie(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + + +// --------------------------------------------------------------------------- +// Copy constructor +// --------------------------------------------------------------------------- +// +CNcdConfigurationProtocolCookie* + CNcdConfigurationProtocolCookie::NewLC( + const MNcdConfigurationProtocolCookie& aCookie ) + { + CNcdConfigurationProtocolCookie* self = + new (ELeave) CNcdConfigurationProtocolCookie(); + CleanupStack::PushL( self ); + self->ConstructL( aCookie ); + return self; + } + + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CNcdConfigurationProtocolCookie::ConstructL() + { + NcdProtocolUtils::AssignEmptyDesL( iKey ); + NcdProtocolUtils::AssignDesL( iType, + NcdConfigurationProtocolCookieTypes::KSaveAndSend ); + NcdProtocolUtils::AssignDesL( iScope, + NcdConfigurationProtocolCookieScopes::KClient ); + NcdProtocolUtils::AssignEmptyDesL( iSim ); + } + + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CNcdConfigurationProtocolCookie::ConstructL( + const MNcdConfigurationProtocolCookie & aCookie ) + { + NcdProtocolUtils::AssignDesL( iKey, aCookie.Key() ); + NcdProtocolUtils::AssignDesL( iType, aCookie.Type() ); + NcdProtocolUtils::AssignDesL( iScope, aCookie.Scope() ); + iExpirationDelta = aCookie.ExpirationDelta(); + iValues.ReserveL( aCookie.ValueCount() ); + for ( TInt i = 0; i < aCookie.ValueCount(); ++i ) + { + HBufC* value = aCookie.Value( i ).AllocL(); + iValues.Append( value ); + } + NcdProtocolUtils::AssignDesL( iSim, aCookie.Sim() ); + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CNcdConfigurationProtocolCookie::~CNcdConfigurationProtocolCookie() + { + delete iKey; + delete iType; + delete iScope; + iValues.ResetAndDestroy(); + delete iSim; + } + +// --------------------------------------------------------------------------- +// Key +// --------------------------------------------------------------------------- +// +const TDesC& CNcdConfigurationProtocolCookie::Key() const + { + DASSERT( iKey ); + return *iKey; + } + +// --------------------------------------------------------------------------- +// Type +// --------------------------------------------------------------------------- +// +const TDesC& CNcdConfigurationProtocolCookie::Type() const + { + DASSERT( iType ); + return *iType; + } + + +// --------------------------------------------------------------------------- +// Scope +// --------------------------------------------------------------------------- +// +const TDesC& CNcdConfigurationProtocolCookie::Scope() const + { + DASSERT( iScope ); + return *iScope; + } + +// --------------------------------------------------------------------------- +// ExpirationDelta +// --------------------------------------------------------------------------- +// +TInt CNcdConfigurationProtocolCookie::ExpirationDelta() const + { + return iExpirationDelta; + } + + +// --------------------------------------------------------------------------- +// ValueCount +// --------------------------------------------------------------------------- +// +TInt CNcdConfigurationProtocolCookie::ValueCount() const + { + return iValues.Count(); + } + +// --------------------------------------------------------------------------- +// Value +// --------------------------------------------------------------------------- +// +const TDesC& CNcdConfigurationProtocolCookie::Value( TInt aIndex ) const + { + DASSERT( aIndex >= 0 && aIndex < ValueCount() ); + return *( iValues[aIndex]); + } + + +// --------------------------------------------------------------------------- +// Sim +// --------------------------------------------------------------------------- +// +const TDesC8& CNcdConfigurationProtocolCookie::Sim() const + { + return *iSim; + } + + +// --------------------------------------------------------------------------- +// Expiration time getter +// --------------------------------------------------------------------------- +// +TTime CNcdConfigurationProtocolCookie::ExpirationTime() const + { + return iExpirationTime; + } + + +// --------------------------------------------------------------------------- +// Identity +// --------------------------------------------------------------------------- +// +TBool CNcdConfigurationProtocolCookie::Identity( + const MNcdConfigurationProtocolCookie& aFirst, + const MNcdConfigurationProtocolCookie& aSecond ) + { + return aFirst.Key() == aSecond.Key(); + } + +// --------------------------------------------------------------------------- +// ExternalizeL +// --------------------------------------------------------------------------- +// + +void CNcdConfigurationProtocolCookie::ExternalizeL( RWriteStream& aStream ) + { + DLTRACEIN(("")); + DASSERT( iKey ); + DASSERT( iType ); + DASSERT( iScope ); + ExternalizeDesL( *iKey, aStream ); + + DLTRACE(("Externalizing cookie values")); + // Externalize values + aStream.WriteInt32L( ValueCount() ); + for ( TInt i = 0; i < ValueCount(); ++i ) + { + ExternalizeDesL( Value( i ), aStream ); + } + + DLTRACE(("Cookie values externalized")); + ExternalizeDesL( *iType, aStream ); + ExternalizeDesL( *iScope, aStream ); + ExternalizeDesL( *iSim, aStream ); + aStream.WriteInt32L( iExpirationDelta ); + aStream << iExpirationTime.Int64(); + DLTRACEOUT(("")); + } + + +// --------------------------------------------------------------------------- +// InternalizeL +// --------------------------------------------------------------------------- +// +void CNcdConfigurationProtocolCookie::InternalizeL( RReadStream& aStream ) + { + DLTRACEIN(("")); + InternalizeDesL( iKey, aStream ); + + TInt valueCount = aStream.ReadInt32L(); + iValues.ResetAndDestroy(); + iValues.ReserveL( valueCount ); + + DLTRACE(( "Internalizing cookie values, count: %d", valueCount )); + for ( TInt i = 0; i < valueCount; ++i ) + { + HBufC* value = NULL; + InternalizeDesL( value, aStream ); + // "Can't" fail + iValues.Append( value ); + } + DLTRACE(( "Cookies values internalized" )); + + InternalizeDesL( iType, aStream ); + InternalizeDesL( iScope, aStream ); + InternalizeDesL( iSim, aStream ); + iExpirationDelta = aStream.ReadInt32L(); + + // Read expiration time + TInt64 time( 0 ); + aStream >> time; + iExpirationTime = TTime( time ); + DLTRACEOUT(("")); + } +