diff -r 000000000000 -r ba25891c3a9e ncdengine/engine/inc/catalogsengineimpl.h --- /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 + +#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