--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/ListLibrary2/AuthSrc/CPEngAuthorizationResponse.cpp Wed Sep 01 12:31:13 2010 +0100
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2005 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: Container of one reactive authorization response
+*
+*/
+
+// INCLUDE FILES
+#include <e32std.h>
+#include <s32strm.h>
+#include "CPEngAuthorizationResponse.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::CPEngAuthorizationResponse()
+// -----------------------------------------------------------------------------
+//
+CPEngAuthorizationResponse::CPEngAuthorizationResponse( TInt& aSize )
+ : CPEngAuthorizationItem( aSize )
+ {
+ //state, attributes count, 4 bytes per each
+ iSize += 8;
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::ConstructL( const TDesC& aUserId )
+ {
+ CPEngAuthorizationItem::ConstructL( aUserId );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::NewLC()
+// -----------------------------------------------------------------------------
+//
+CPEngAuthorizationResponse* CPEngAuthorizationResponse::NewLC( const TDesC& aUserId,
+ TInt& aSize )
+ {
+ CPEngAuthorizationResponse* self =
+ new ( ELeave ) CPEngAuthorizationResponse( aSize );
+
+ CleanupStack::PushL( self );
+ self->ConstructL( aUserId );
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::NewLC()
+// -----------------------------------------------------------------------------
+//
+CPEngAuthorizationResponse* CPEngAuthorizationResponse::NewLC( RReadStream& aStream,
+ TInt& aSize )
+ {
+ CPEngAuthorizationResponse* self =
+ new( ELeave ) CPEngAuthorizationResponse( aSize );
+
+ CleanupStack::PushL( self );
+ self->InternalizeL( aStream );
+
+ return self;
+ }
+
+
+// Destructor
+CPEngAuthorizationResponse::~CPEngAuthorizationResponse()
+ {
+ // 4 bytes per number: State
+ iSize -= ( 4 + SizeOfArray( iAttributes ) );
+ iAttributes.Reset();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::UpdateLocalFlags()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::DoUpdateLocalFlags(
+ const CPEngAuthorizationItem& aSource )
+ {
+ const CPEngAuthorizationResponse& source =
+ static_cast< const CPEngAuthorizationResponse&> ( aSource );
+
+ if ( ( source.AuthorizationStatus() == AuthorizationStatus() )
+ && ( source.AuthorizedAttributes().Count() == iAttributes.Count() ) )
+ {
+ iLocalFlags = source.LocalFlags();
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::UserId()
+// -----------------------------------------------------------------------------
+//
+const TDesC& CPEngAuthorizationResponse::UserId() const
+ {
+ return Id();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::AuthorizationStatus()
+// -----------------------------------------------------------------------------
+//
+TInt CPEngAuthorizationResponse::AuthorizationStatus() const
+ {
+ return iResponseType;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::AuthorizedAttributes()
+// -----------------------------------------------------------------------------
+//
+const RArray<TUint32>& CPEngAuthorizationResponse::AuthorizedAttributes() const
+ {
+ return iAttributes;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::SetResponseType()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::SetResponseType( TInt aResponseType )
+ {
+ iResponseType = aResponseType;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::SetAttributesToAuthorizeL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::SetAttributesToAuthorizeL(
+ const TArray<TUint32>& aAttributes,
+ const RArray<TUint32>* aAuthorizedAttributes )
+ {
+ // 4 bytes per each attribute
+ iSize -= ( 4 * iAttributes.Count() );
+ iAttributes.Reset();
+ iSize += CopyArrayContentL( iAttributes, aAttributes );
+ // shall already authorized attributes be included
+ if ( aAuthorizedAttributes )
+ {
+ iSize += CopyArrayContentL( iAttributes, aAuthorizedAttributes->Array() );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::AddAttributeL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::AddAttributeL( TUint32 aAttribute )
+ {
+ AddAttributeToArrayL( iAttributes, aAttribute );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::ExternalizeL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::ExternalizeL( RWriteStream& aStream ) const
+ {
+ // base class
+ CPEngAuthorizationItem::ExternalizeL( aStream );
+
+ // response type
+ aStream.WriteInt32L( iResponseType );
+
+ // Attributes
+ ExternalizeArrayL( aStream, iAttributes );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::ExternalizeCachedL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAuthorizationResponse::InternalizeL( RReadStream& aStream )
+ {
+ // base class
+ CPEngAuthorizationItem::InternalizeL( aStream );
+
+ // response type
+ iResponseType = aStream.ReadInt32L();
+
+ // Attributes
+ InternalizeArrayL( aStream, iAttributes, iSize );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAuthorizationResponse::Compare()
+// -----------------------------------------------------------------------------
+//
+TInt CPEngAuthorizationResponse::Compare( const CPEngAuthorizationResponse& aFirst,
+ const CPEngAuthorizationResponse& aSecond )
+ {
+ return aFirst.Id().CompareF( aSecond.Id() ) ;
+ }
+
+
+// End of File