diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/client/src/ncdsubscriptionoperationproxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/client/src/ncdsubscriptionoperationproxy.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,169 @@ +/* +* 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: Implements CNcdSubscriptionOperationProxy +* +*/ + + +#include "ncdsubscriptionoperationproxy.h" +#include "ncdsubscriptionoperationobserver.h" +#include "ncdsubscriptionmanagerproxy.h" +#include "ncdqueryimpl.h" +#include "catalogsutils.h" +#include "ncdoperationproxyremovehandler.h" + +CNcdSubscriptionOperationProxy* CNcdSubscriptionOperationProxy::NewL( + MCatalogsClientServer& aSession, + MNcdSubscriptionOperation::TType aSubscriptionType, + TInt aHandle, + MNcdOperationProxyRemoveHandler* aRemoveHandler, + MNcdSubscriptionOperationObserver& aObserver, + CNcdSubscriptionManagerProxy* aSubscriptionManager, + CNcdNodeManagerProxy* aNodeManager, + MNcdClientLocalizer* aLocalizer ) + { + CNcdSubscriptionOperationProxy* self = + CNcdSubscriptionOperationProxy::NewLC( + aSession, + aSubscriptionType, + aHandle, + aRemoveHandler, + aObserver, + aSubscriptionManager, + aNodeManager, + aLocalizer ); + + CleanupStack::Pop( self ); + + return self; + } + +CNcdSubscriptionOperationProxy* CNcdSubscriptionOperationProxy::NewLC( + MCatalogsClientServer& aSession, + MNcdSubscriptionOperation::TType aSubscriptionType, + TInt aHandle, + MNcdOperationProxyRemoveHandler* aRemoveHandler, + MNcdSubscriptionOperationObserver& aObserver, + CNcdSubscriptionManagerProxy* aSubscriptionManager, + CNcdNodeManagerProxy* aNodeManager, + MNcdClientLocalizer* aLocalizer ) + { + CNcdSubscriptionOperationProxy* self = + new( ELeave ) CNcdSubscriptionOperationProxy( aObserver, aLocalizer ); + + self->AddRef(); + CleanupReleasePushL( *self ); + self->ConstructL( + aSession, + aSubscriptionType, + aHandle, + aRemoveHandler, + aSubscriptionManager, + aNodeManager ); + + return self; + } + +MNcdSubscriptionOperation::TType + CNcdSubscriptionOperationProxy::SubscriptionOperationType() const + { + return iSubscriptionOperationType; + } + +TNcdInterfaceId CNcdSubscriptionOperationProxy::OperationType() const + { + return static_cast(MNcdSubscriptionOperation::KInterfaceUid); + } + +CNcdSubscriptionOperationProxy::CNcdSubscriptionOperationProxy( + MNcdSubscriptionOperationObserver& aObserver, + MNcdClientLocalizer* aClientLocalizer) + : CNcdOperation< MNcdSubscriptionOperation >( aClientLocalizer ), + iObserver( aObserver ) + { + } + +CNcdSubscriptionOperationProxy::~CNcdSubscriptionOperationProxy() + { + DASSERT( iRemoveHandler ); + if ( iRemoveHandler ) + { + DLTRACE(("Removing proxy from remove handler")); + iRemoveHandler->RemoveOperationProxy( *this ); + } + } + +void CNcdSubscriptionOperationProxy::ConstructL( + MCatalogsClientServer& aSession, + MNcdSubscriptionOperation::TType aSubscriptionType, + TInt aHandle, + MNcdOperationProxyRemoveHandler* aRemoveHandler, + CNcdSubscriptionManagerProxy* aSubscriptionManager, + CNcdNodeManagerProxy* aNodeManager ) + { + DLTRACEIN( ( "" ) ); + CNcdBaseOperationProxy::ConstructL( + aSession, + aHandle, + aRemoveHandler, + NULL, + aNodeManager ); + + iSubscriptionOperationType = aSubscriptionType; + + iSubscriptionManager = aSubscriptionManager; + + DLTRACEOUT( ( "" ) ); + } + + +void CNcdSubscriptionOperationProxy::ProgressCallback() + { + DLTRACEIN( ( "" ) ); + + TNcdSendableProgress& sendableProgress( SendableProgress() ); + TNcdProgress progress( sendableProgress.iProgress, + sendableProgress.iMaxProgress ); + + DLTRACE(("Progress: %d/%d", sendableProgress.iProgress, + sendableProgress.iMaxProgress )); + + iObserver.SubscriptionProgress( *this, progress ); + + DLTRACEOUT( ( "" ) ); + } + +void CNcdSubscriptionOperationProxy::QueryReceivedCallback( + CNcdQuery* aQuery ) + { + DLTRACEIN( ( "" ) ); + + aQuery->AddRef(); + iObserver.QueryReceived( *this, aQuery ); + + DLTRACEOUT( ( "" ) ); + } + +void CNcdSubscriptionOperationProxy::CompleteCallback( TInt aError ) + { + DLTRACEIN( ( "Error: %d", aError ) ); + + // Subscription manager on server side handles the informing + // of all relevant proxies so no internalization here is needed + // for the subscription manager proxy. + + iObserver.OperationComplete( *this, aError ); + + DLTRACEOUT( ( "" ) ); + }