diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/client/src/ncdnodedisclaimerproxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/client/src/ncdnodedisclaimerproxy.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,221 @@ +/* +* 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: Contains CNcdNodeDisclaimerProxy class implementation +* +*/ + + +#include "ncdnodedisclaimerproxy.h" +#include "ncdnodemetadataproxy.h" +#include "catalogsclientserver.h" +#include "ncdnodeidentifier.h" +#include "ncdnodefunctionids.h" +#include "ncdnodeclassids.h" +#include "catalogsinterfaceidentifier.h" +#include "catalogsutils.h" +#include "catalogsdebug.h" +#include "ncderrors.h" + + +CNcdNodeDisclaimerProxy::CNcdNodeDisclaimerProxy( + MCatalogsClientServer& aSession, + TInt aHandle, + CNcdNodeMetadataProxy* aMetadata ) +: CNcdInterfaceBaseProxy( aSession, aHandle, aMetadata ), + iResponse( ENoResponse ) + { + + } + + +void CNcdNodeDisclaimerProxy::ConstructL() + { + // If the internalization fails, let this leave. + InternalizeL(); + } + + +CNcdNodeDisclaimerProxy* CNcdNodeDisclaimerProxy::NewL( + MCatalogsClientServer& aSession, + TInt aHandle, + CNcdNodeMetadataProxy* aMetadata ) + { + CNcdNodeDisclaimerProxy* self = + CNcdNodeDisclaimerProxy::NewLC( aSession, aHandle, aMetadata ); + CleanupStack::Pop( self ); + return self; + } + +CNcdNodeDisclaimerProxy* CNcdNodeDisclaimerProxy::NewLC( + MCatalogsClientServer& aSession, + TInt aHandle, + CNcdNodeMetadataProxy* aMetadata ) + { + CNcdNodeDisclaimerProxy* self = + new( ELeave ) CNcdNodeDisclaimerProxy( aSession, aHandle, aMetadata ); + // Using PushL because the object does not have any references yet + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +CNcdNodeDisclaimerProxy::~CNcdNodeDisclaimerProxy() + { + // Delete member variables here + // Do not delete node and operation manager because + // this object does not own them. + delete iTitle; + iTitle = 0; + delete iBody; + iBody = 0; + } + + +void CNcdNodeDisclaimerProxy::InternalizeL() + { + DLTRACEIN(("")); + + HBufC8* data( NULL ); + + // Because we do not know the exact size of the data, use + // the alloc method, which creates the buffer of the right size + // and sets the pointer to point to the created buffer. + // Get all the data that is necessary to internalize this object + // from the server side. + TInt error( + ClientServerSession(). + SendSyncAlloc( NcdNodeFunctionIds::ENcdInternalize, + KNullDesC8, + data, + Handle(), + 0 ) ); + + if ( error == KNcdErrorObsolete ) + { + DLINFO(("Disclaimer was obsolete")); + // Because this object does not add any interfaces to the top parent, + // there is no need to remove then either here. + // Just remove object from the parent + RemoveFromParent(); + } + + // If error occurred during data transfer, leave here and forward the error. + User::LeaveIfError( error ); + + if ( data == NULL ) + { + DLERROR(("")); + User::Leave( KErrNotFound ); + } + + CleanupStack::PushL( data ); + + // Read the data from the stream and insert it to the memeber variables + RDesReadStream stream( *data ); + CleanupClosePushL( stream ); + + InternalizeDataL( stream ); + + // Closes the stream + CleanupStack::PopAndDestroy( &stream ); + CleanupStack::PopAndDestroy( data ); + + DLTRACEOUT(("")); + } + + +// MNcdQuery functions + +TBool CNcdNodeDisclaimerProxy::IsOptional() const + { + return iOptional; + } + + +MNcdQuery::TSemantics CNcdNodeDisclaimerProxy::Semantics() const + { + return iSemantics; + } + +const TDesC& CNcdNodeDisclaimerProxy::MessageTitle() const + { + if( !iTitle ) + { + return KNullDesC; + } + return *iTitle; + } + + +const TDesC& CNcdNodeDisclaimerProxy::MessageBody() const + { + if( !iBody ) + { + return KNullDesC; + } + return *iBody; + } + + +RCatalogsArray< MNcdQueryItem > CNcdNodeDisclaimerProxy::QueryItemsL() + { + RCatalogsArray array; + return array; + } + + +void CNcdNodeDisclaimerProxy::SetResponseL( TResponse aResponse ) + { + iResponse = aResponse; + } + + +MNcdQuery::TResponse CNcdNodeDisclaimerProxy::Response() + { + return iResponse; + } + + +TBool CNcdNodeDisclaimerProxy::IsSecureConnection() const + { + return EFalse; + } + + +// Other functions + +void CNcdNodeDisclaimerProxy::InternalizeDataL( RReadStream& aStream ) + { + DLTRACEIN(("")); + + // Use catalogsutils.h functions to internalize + // memebervariables according to the data received + // from the server. + // Make sure that the variables are set here in the same + // order as they are externalized in the server side. + // Small mistake here messes up everything! + + // First read the class id. Because, it is the first thing in the stream. + // Actually we do not need that information here. + aStream.ReadInt32L(); + + InternalizeDesL( iTitle, aStream ); + InternalizeDesL( iBody, aStream ); + iOptional = aStream.ReadInt32L(); + iSemantics = + static_cast(aStream.ReadInt32L()); + + DLTRACEOUT(("")); + }