--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/client/inc/ncdsubscriptionmanagerproxy.h Tue Jan 26 12:06:03 2010 +0200
@@ -0,0 +1,260 @@
+/*
+* 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 CNcdSubscriptionManagerProxy class
+*
+*/
+
+
+#ifndef C_NCD_SUBSCRIPTION_MANAGER_PROXY_H
+#define C_NCD_SUBSCRIPTION_MANAGER_PROXY_H
+
+
+// For the streams
+#include <s32mem.h>
+
+#include "ncdinterfacebaseproxy.h"
+#include "ncdsubscriptionmanager.h"
+
+class CNcdOperationManagerProxy;
+class CNcdSubscriptionGroupProxy;
+class CNcdSubscriptionProxy;
+class MNcdSubscriptionOperation;
+class MNcdSubscriptionOperationObserver;
+class CNcdKeyValuePair;
+class CNcdSubscriptionManagerListener;
+class CNcdNodeManagerProxy;
+
+/**
+ * This class implements the functionality for the
+ * MNcdSubscriptionManager interface. The interface is provided for
+ * API users.
+ *
+ * @since S60 v3.2
+ */
+class CNcdSubscriptionManagerProxy : public CNcdInterfaceBaseProxy,
+ public MNcdSubscriptionManager
+ {
+
+public:
+
+ /**
+ * @param aSession The session between the client proxy and the
+ * corresponding server object.
+ * @param aHandle The handle which identifies the server object
+ * that this proxy uses.
+ * @param aOperationManager This class uses operation manager to get the
+ * operations for certain tasks.
+ * @param aParent Parent whose reference count AddRef of this
+ * object increments.
+ * @return CNcdNodeManagerProxy* Pointer to the created object
+ * of this class.
+ */
+ static CNcdSubscriptionManagerProxy* NewL(
+ MCatalogsClientServer& aSession,
+ TInt aHandle,
+ CCatalogsInterfaceBase* aParent,
+ CNcdOperationManagerProxy& aOperationManager );
+
+ /**
+ * @param aSession The session between the client proxy and the
+ * corresponding server object.
+ * @param aHandle The handle which identifies the server object
+ * that this proxy uses.
+ * @param aParent Parent whose reference count AddRef of this
+ * object increments.
+ * @param aOperationManager This class uses operation manager to get the
+ * operations for certain tasks.
+ * @return CNcdSubscriptionManagerProxy* Pointer to the created object
+ * of this class.
+ */
+ static CNcdSubscriptionManagerProxy* NewLC(
+ MCatalogsClientServer& aSession,
+ TInt aHandle,
+ CCatalogsInterfaceBase* aParent,
+ CNcdOperationManagerProxy& aOperationManager );
+
+
+ /**
+ * Destructor.
+ */
+ virtual ~CNcdSubscriptionManagerProxy();
+
+ /**
+ * Setter for node manager. Needed so that pointer to node manager
+ * can be set after construction of this class.
+ */
+ void SetNodeManager( CNcdNodeManagerProxy* aManager );
+
+ /**
+ * Gets the data for descriptors from the server side. This function is
+ * called to update proxy data. The function uses the protected virtual
+ * internalize functions. So, the child classes may provide their own
+ * implementations for internalizations of certain metadata.
+ */
+ void InternalizeL();
+
+
+ /**
+ * Checks if a subscription with given identification is active.
+ */
+ TBool ActiveSubscriptionExists( const TDesC& aEntityId,
+ const TDesC& aNamespace,
+ const TDesC& aPurchaseOptionId );
+
+ /**
+ * @return pointer to specified subscription if such a subscription
+ * exists. (In other words if a subscription such a
+ * subscription has been made at some point.) Returns NULL
+ * if not found.
+ * NOTICE: Ownership is NOT transferred and reference count
+ * is NOT incremented.
+ */
+ CNcdSubscriptionProxy* Subscription( const TDesC& aEntityId,
+ const TDesC& aNamespace,
+ const TDesC& aPurchaseOptionId );
+
+ /**
+ * This is called by the subscription manager listener when it is notified that
+ * the server side subscriptions has been altered.
+ */
+ void SubscriptionsChangedL();
+
+public: // MNcdSubscriptionManager
+
+ /**
+ * @see MNcdSubscriptionManager::SubscriptionsL
+ */
+ virtual RCatalogsArray<MNcdSubscription> SubscriptionsL() const;
+
+ /**
+ * @see MNcdSubscriptionManager::RefreshSubscriptionsL
+ */
+ virtual MNcdSubscriptionOperation* RefreshSubscriptionsL(
+ MNcdSubscriptionOperationObserver& aObserver );
+
+
+protected:
+
+ /**
+ * Constructor
+ *
+ * @param aSession The session between the client proxy and the
+ * corresponding server object.
+ * @param aHandle The handle which identifies the server object
+ * that this proxy uses.
+ * @param aParent Parent whose reference count AddRef of this
+ * object increments.
+ * @param aOperationManager This class uses operation manager to get the
+ * operations for certain tasks.
+ * @return CNcdSubscriptionManagerProxy* Pointer to the created object
+ * of this class.
+ */
+ CNcdSubscriptionManagerProxy(
+ MCatalogsClientServer& aSession,
+ TInt aHandle,
+ CCatalogsInterfaceBase* aParent,
+ CNcdOperationManagerProxy& aOperationManager );
+
+ /**
+ * ConstructL
+ */
+ virtual void ConstructL();
+
+
+ /**
+ * @return CNcdOperationManagerProxy& Gives the operation manager proxy.
+ * Operation manager may be asked to create new operations for this class
+ * object.
+ */
+ CNcdOperationManagerProxy& OperationManager() const;
+
+
+
+ // These functions are used to update the data of this class object
+
+ /**
+ * @param aStream This stream will contain all the data content for
+ * this class object. The stream is gotten from the server side. The
+ * memeber variables will be updated according to the data from
+ * the stream.
+ */
+ virtual void InternalizeDataL( RReadStream& aStream );
+
+ /**
+ * Request the identifiers of all the subscription groups in the server side
+ * and creates an array containing them.
+ *
+ * @return The array.
+ */
+ RPointerArray<CNcdKeyValuePair> SubscriptionGroupIdentifiersL() const;
+
+ /**
+ * Deletes the subscription groups that don't exist in the given array.
+ *
+ * @param aGroupIdentifiers Array of subscription group identifiers.
+ */
+ void DeleteMissingSubscriptionGroups(
+ const RPointerArray<CNcdKeyValuePair>& aGroupIdentifiers );
+
+ /**
+ * Calls InternalizeL to the existing subscription groups.
+ */
+ void InternalizeSubscriptionGroupsL() const;
+
+
+private:
+
+ // Prevent if not implemented
+ CNcdSubscriptionManagerProxy(
+ const CNcdSubscriptionManagerProxy& aObject );
+ CNcdSubscriptionManagerProxy& operator=(
+ const CNcdSubscriptionManagerProxy& aObject );
+
+
+ /**
+ * @return pointer to specified subscriptiongroup if such a group
+ * exists. (In other words if a subscription from such a group
+ * is made.)
+ * NOTICE: Ownership is NOT transferred and reference count
+ * is NOT incremented. Although this method
+ * is internal, it is good to remember to mention these
+ * things if this method would ever become a public method.
+ */
+ CNcdSubscriptionGroupProxy* SubscriptionGroup( const TDesC& aEntityId,
+ const TDesC& aNamespace );
+
+private: // data
+
+ CNcdOperationManagerProxy& iOperationManager;
+
+ /* Pointer to node manager.
+ * Not own.
+ */
+ CNcdNodeManagerProxy* iNodeManager;
+
+ RPointerArray<CNcdSubscriptionGroupProxy> iSubscriptionGroups;
+
+ /**
+ * Active object which listens for update events from the server side subscription
+ * manager.
+ */
+ CNcdSubscriptionManagerListener* iListener;
+
+ RBuf8 iInputBuf;
+ RBuf8 iOutputBuf;
+
+ };
+
+
+#endif // C_NCD_SUBSCRIPTION_MANAGER_PROXY_H