diff -r 000000000000 -r 094583676ce7 PECengine/ListLibrary2/AuthSrc/CPEngAuthorizationRequest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/ListLibrary2/AuthSrc/CPEngAuthorizationRequest.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,341 @@ +/* +* 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 the one reactive authorization request +* +*/ + +// INCLUDE FILES +#include "CPEngAuthorizationRequest.h" +#include "MPEngAuthorizationRequest.h" +#include "MPEngAuthorizationManagerSet.h" + +#include +#include + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::CPEngAuthorizationRequest() +// ----------------------------------------------------------------------------- +// +CPEngAuthorizationRequest::CPEngAuthorizationRequest( TInt& aSize ) + : CPEngAuthorizationItem( aSize ), + iState( EPEngAuthPending ), + iResponseType( MPEngAuthorizationRequest::EPEngAuthUndefined ) + { + // state, response type, 2 array count, 4bytes each + iSize += 16; + } + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::ConstructL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::ConstructL( const TDesC& aUserId ) + { + CPEngAuthorizationItem::ConstructL( aUserId ); + } + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::NewLC() +// ----------------------------------------------------------------------------- +// +CPEngAuthorizationRequest* CPEngAuthorizationRequest::NewLC( const TDesC& aUserId, + TInt& aSize ) + { + CPEngAuthorizationRequest* self = new( ELeave ) + CPEngAuthorizationRequest( aSize ); + + CleanupStack::PushL( self ); + self->ConstructL( aUserId ); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::NewLC() +// ----------------------------------------------------------------------------- +// +CPEngAuthorizationRequest* CPEngAuthorizationRequest::NewLC( RReadStream& aStream, + TInt& aSize ) + { + CPEngAuthorizationRequest* self = new( ELeave ) + CPEngAuthorizationRequest( aSize ); + + CleanupStack::PushL( self ); + self->InternalizeL( aStream ); + + return self; + } + + +// Destructor +CPEngAuthorizationRequest::~CPEngAuthorizationRequest() + { + // state, response type, 4bytes each + iSize -= ( 8 + SizeOfArray( iRequestedAttr ) + SizeOfArray( iAuthorizedAttr ) ); + iRequestedAttr.Reset(); + iAuthorizedAttr.Reset(); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::UpdateLocalFlags() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::DoUpdateLocalFlags( + const CPEngAuthorizationItem& aSource ) + { + const CPEngAuthorizationRequest& source = + static_cast< const CPEngAuthorizationRequest&> ( aSource ); + if ( ( source.AuthorizationState() == AuthorizationState() ) && + ( source.AuthorizationResponse() == AuthorizationResponse() ) ) + { + iLocalFlags = source.LocalFlags(); + } + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::UserId() +// ----------------------------------------------------------------------------- +// +const TDesC& CPEngAuthorizationRequest::UserId() const + { + return Id(); + } + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::RequestedAttributes() +// ----------------------------------------------------------------------------- +// +const RArray& CPEngAuthorizationRequest::RequestedAttributes() const + { + return iRequestedAttr; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::AuthorizationState() +// ----------------------------------------------------------------------------- +// +MPEngAuthorizationRequest::TPEngAuthorizationRequestState +CPEngAuthorizationRequest::AuthorizationState() const + { + return iState; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::AuthorizationResponse() +// ----------------------------------------------------------------------------- +// +MPEngAuthorizationRequest::TPEngAuthorizationResponseType +CPEngAuthorizationRequest::AuthorizationResponse()const + { + return iResponseType; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::AuthorizedAttributes() +// ----------------------------------------------------------------------------- +// +const RArray& CPEngAuthorizationRequest::AuthorizedAttributes() const + { + return iAuthorizedAttr; + } + + +// ============================================================================= +// ========== Functions for authorization response setting ===================== +// ============================================================================= + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::SetAuthorizedAttributesL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::SetAuthorizedAttributesL( + TArray& aAttributes, + TBool aKeepOldAuthorization /* ETRue */ ) + { + iAuthManager->SetAuthorizedAttributesL( *this, + aAttributes, + aKeepOldAuthorization ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::DenyAuthorizationL +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::DenyAuthorizationL() + { + if ( iState != MPEngAuthorizationRequest::EPEngAuthPending ) + { + User::Leave( KErrNotReady ); + } + iAuthManager->DenyAuthorizationL( Id() ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::CancelAuthorizationL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::CancelAuthorizationL() + { + if ( iState == MPEngAuthorizationRequest::EPEngAuthPending ) + { + User::Leave( KErrNotReady ); + } + + iAuthManager->CancelAuthorizationL( Id() ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::RemoveAuthorizationResponse +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::RemoveAuthorizationResponse() + { + iAuthManager->RemoveAuthorizationResponse( Id() ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::SetAuthorizationManager() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::SetAuthorizationManager( + MPEngAuthorizationManagerSet* aAuthManager ) + { + iAuthManager = aAuthManager; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::SetAuthState() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::SetAuthState( + TPEngAuthorizationRequestState aState ) + { + iState = aState; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::SetAuthState() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::SetAuthResponse( + TPEngAuthorizationResponseType aResponse ) + { + iResponseType = aResponse; + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::UpdateAuthorizedAttributesL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::UpdateAuthorizedAttributesL( + const RArray& aAuthorizedAttr ) + { + // 4 bytes per each attribute + iSize -= 4 * iAuthorizedAttr.Count(); + iAuthorizedAttr.Reset(); + iSize += CopyArrayContentL( iAuthorizedAttr, aAuthorizedAttr.Array() ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::UpdateRequestedAttributesL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::UpdateRequestedAttributesL( + const RArray& aRequestedAttr ) + { + // 4 bytes per each attribute + iSize -= 4 * iRequestedAttr.Count(); + iRequestedAttr.Reset(); + iSize += CopyArrayContentL( iRequestedAttr, aRequestedAttr.Array() ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::AddRequestedAttributeL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::AddRequestedAttributeL( TUint32 aAttribute ) + { + iSize += AddAttributeToArrayL( iRequestedAttr, aAttribute ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::ExternalizeL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::ExternalizeL( RWriteStream& aStream ) const + { + // base class + CPEngAuthorizationItem::ExternalizeL( aStream ); + + // state, response type + aStream.WriteInt32L( iState ); + aStream.WriteInt32L( iResponseType ); + + ExternalizeArrayL( aStream, iRequestedAttr ); + ExternalizeArrayL( aStream, iAuthorizedAttr ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::ExternalizeCachedL() +// ----------------------------------------------------------------------------- +// +void CPEngAuthorizationRequest::InternalizeL( RReadStream& aStream ) + { + // base class + CPEngAuthorizationItem::InternalizeL( aStream ); + + // state, response type + iState = + static_cast( aStream.ReadInt32L() ); + + iResponseType = + static_cast( aStream.ReadInt32L() ); + + InternalizeArrayL( aStream, iRequestedAttr, iSize ); + InternalizeArrayL( aStream, iAuthorizedAttr, iSize ); + } + + +// ----------------------------------------------------------------------------- +// CPEngAuthorizationRequest::Compare() +// ----------------------------------------------------------------------------- +// +TInt CPEngAuthorizationRequest::Compare( const CPEngAuthorizationRequest& aFirst, + const CPEngAuthorizationRequest& aSecond ) + { + return aFirst.Id().CompareF( aSecond.Id() ); + } + + +// End of File