ncdengine/engine/inc/catalogsengineimpl.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/engine/inc/catalogsengineimpl.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,209 @@
+/*
+* 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:   Declaration of CCatalogsEngineImpl
+*
+*/
+
+
+#ifndef C_CATALOGS_ENGINE_IMPL_H
+#define C_CATALOGS_ENGINE_IMPL_H
+
+#include <e32base.h>
+
+#include "catalogsengine.h"
+#include "catalogsclientserverclientsession.h"
+#include "catalogsbaseimpl.h"
+
+// Forward declaration                        
+class CNcdProviderProxy;
+class MCatalogsEngineObserver;
+class CCatalogsProviderCreator;
+class CCatalogsShutdownObserver;
+class CCatalogsUpdateObserver;
+class CCatalogsConnectionObserver;
+
+/**
+ *  An interface providing the main handle to Catalogs engine
+ *
+ *  This class offers functionality for provider creation
+ *
+ *  @lib ncdproxy_20019119.dll
+ *  @since S60 v3.2
+ */
+
+// Cannot use CCatalogsBase<> base class because class declaration must match CCatalogsEngine
+// ECom interface.
+class CCatalogsEngineImpl : public CCatalogsEngine
+    {
+
+public:
+
+    /**
+     * Instantiates the catalogs engine.
+     *
+     * @param aObserver Observer for engine callbacks.
+     * @return CCatalogsEngineImpl* The instantiated object.
+     */
+    static CCatalogsEngineImpl* NewL( TAny* aInitParams );
+
+
+    /**
+     * Destructor
+     */
+    virtual ~CCatalogsEngineImpl();
+
+  
+    /**
+     * Connect to the Catalogs engine
+     * 
+     * @since S60 v3.2
+     * @return System wide error code.
+     */
+    TInt Connect( TUid aClientUid );
+
+    /**
+     * Close connection to the Catalogs engine
+     *
+     * @since S60 v3.2
+     */
+    void Close();
+
+    /**
+     * Requests a provider from the Catalogs engine. Spesific provider types are
+     * identified by UIDs.
+     *
+     * @since S60 v3.2
+     * @param aUid Type of the provider that should be created.
+     *             (integer containing a hexadecimal number)
+     * @param aStatus 
+     * @param aProviderOptions Provider spesific options
+     * @return Pointer to the created provider. The pointer should be cast by
+     *         the user of the interface to match the requested provider type.
+     * @exception System wide error code.
+     * 
+     */    
+    void CreateProviderL( 
+        TInt aUid, 
+        MCatalogsBase*& aProvider, 
+        TRequestStatus& aStatus, 
+        TUint32 aProviderOptions );
+
+    /**
+     * Cancels provider creation.
+     *
+     * @note Completes the ongoing provider creation immediately
+     *       with KErrCancel.
+     *
+     * @since S60 v3.2
+     */
+    void CancelProviderCreation();
+
+    /**
+     * Starts engine maintenance. All clients with open sessions to the engine will
+     * receive a callback requesting closing of engine sessions. Also, further
+     * connections are refused until EndMaintenanceL() is called.
+     *
+     * A state change callback is received to engine observer when the server is ready for
+     * maintenance (no open connections).
+     *
+     * @note After calling StartMaintenanceL(), the client may itself receive a
+     *  CatalogsEngineShutdown() callback to its observer, in case it has open sessions
+     *  to the engine.
+     *
+     * @exception KErrAccessDenied Client is not authorized to start maintenance
+     *  on engine.
+     * @exception Leave System wide error code.
+     */
+//    virtual void StartMaintenanceL();
+
+
+    /**
+     * Ends engine maintenance. Connections to engine are allowed.
+     *
+     * @exception KErrAccessDenied Client is not authorized to end maintenance
+     *  on engine.
+     * @exception KErrNotFound Client has not started maintenance.
+     * @exception Leave System wide error code.
+     */
+//    virtual void EndMaintenanceL();
+
+/*
+public: // from CActive
+
+    void RunL();
+    void DoCancel();
+*/
+
+public: // from MCatalogsBase
+
+    TInt AddRef() const;
+    TInt Release() const;
+    
+protected: // from MCatalogsBase
+    const TAny* QueryInterfaceL( TInt aInterfaceType ) const;
+
+private:
+                                          
+    /**
+     * Constructor, private
+     * @param aObserver Observer for engine callbacks.
+     */
+    CCatalogsEngineImpl( MCatalogsEngineObserver& aObserver );
+
+    /**
+     * 2nd phase constructor, private
+     */
+    void ConstructL();
+
+
+private: // data
+
+    mutable TInt iRefCount;
+
+    /**
+     * Uid of the client.
+     */
+    TUid iClientUid;
+
+    /**
+     * Handle to the Catalogs engine.
+     */
+    RCatalogsClientServerClientSession iCatalogsEngine;
+
+    /**
+     * Engine observer. 
+     * Not own.
+     */
+    MCatalogsEngineObserver* iObserver;
+
+    /**
+     * Provider creator active object. Pwned.
+     */
+    CCatalogsProviderCreator* iProviderCreator;
+    
+    /**
+     * Catalogs engine mutex.
+     */
+    RMutex iCatalogsMutex;
+
+    /** Catalogs maintenance lock observer. */
+    CCatalogsShutdownObserver* iShutdownObserver;
+    
+    /** Catalogs OTA update observer */
+    CCatalogsUpdateObserver* iUpdateObserver;
+
+    CCatalogsConnectionObserver* iConnectionObserver;
+    };
+
+#endif // C_CATALOGS_ENGINE_IMPL_H