PECengine/ListLibrary2/AuthSrc/CPEngAuthorizationResponse.cpp
branchRCL_3
changeset 17 a941bc465d9f
parent 0 094583676ce7
--- /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