diff -r b183ec05bd8c -r 19bba8228ff0 devicediagnosticsfw/diagframework/inc/diagpluginpool.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devicediagnosticsfw/diagframework/inc/diagpluginpool.h Wed Sep 01 12:27:42 2010 +0100 @@ -0,0 +1,164 @@ +/* +* Copyright (c) 2007 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: Manages Diagnostics Plug-in +* +*/ + + +#ifndef DIAGPLUGINPOOL_H +#define DIAGPLUGINPOOL_H + +// INCLUDES +#include // CBase + +// FORWARD DECLARATIONS +class MDiagPlugin; +class MDiagPluginPoolObserver; +class CDiagPluginPoolImpl; + + +/** +* Diagnostics Framework Plugin Pool Class +* +* This class is used to load Diagnostics ECom plug-ins. It works with both +* Suite Plug-in and Test Plug-in. Once loaded, it will manage the life +* cycle of the plug-ins. +* +* All loaded plug-ins will be destroyed when pool is deleted. +* +* @since S60 v5.0 +*/ +NONSHARABLE_CLASS( CDiagPluginPool ) : public CBase + { +public: + + /** + * Two-phased constructors + * + * @param aObserver Plug-in Pool observer. + * @return New instance of CDiagPluginPool + */ + IMPORT_C static CDiagPluginPool* NewL( MDiagPluginPoolObserver& aObserver ); + IMPORT_C static CDiagPluginPool* NewLC( MDiagPluginPoolObserver& aObserver ); + + /** + * Destructor + * + */ + IMPORT_C virtual ~CDiagPluginPool(); + +public: // new API + + /** + * Loads all plug-ins. Progress is notified via MDiagPluginPoolObserver. + * + * @param aUid - Interface Uid to load. + */ + IMPORT_C void LoadAsyncL( TUid aUid ); + + /** + * Create an instance of a plug-in. It can be a test plug-in or suite plug-in. + * If this is a suite, it will not have its children associated with it since + * will require children to be loaded as well. + * + * Plug-ins created using this method is not part of plug-in pool. Therefore + * client must manage the life cycle of the plug-in. + * + * @param aUid - Implementation Uid of plug-in. + * @return Newly instantiated plug-in. Ownership is transferred to caller. + */ + IMPORT_C static MDiagPlugin* CreatePluginL( TUid aUid ); + + /** + * Cancel Plug-in Loading + * This method cancels plug-in loading. If it was not currently loading + * plug-ins, it will leave with KErrNotReady + */ + IMPORT_C void CancelLoadPluginsL(); + + /** + * Find Plug-in that matches given Uid. + * + * @param aUid Uid of plug-in to search. + * @param aPlugin Reference to Plugin found. Engine owns this plug-in. + * Client must not deallocate plug-in. + * @return TInt KErrNone - Success. + * KErrNotFound - Not found. + * KErrNotReady - Plug-ins are not yet loaded. + */ + IMPORT_C TInt FindPlugin( TUid aUid, MDiagPlugin*& aPlugin ) const; + + /** + * Find Plug-in that matches given Uid. This function will leave on error. + * Leave codes: KErrNone - Success. + * KErrNotFound - Not found. + * KErrNotReady - Plug-ins are not yet loaded. + * + * @param aUid Uid of plug-in to search. + * @return Refernce to the plug-in found. + */ + IMPORT_C MDiagPlugin& FindPluginL( TUid aUid ) const; + + /** + * Find Plug-in that matches given service name. + * + * @param aServiceName Service name of the plug-in. Name must match exactly. + * @param aPlugin Reference to Plugin found. Engine owns this plug-in. + * Client must not deallocate plug-in. + * @return TInt KErrNone - Success. + * KErrNotFound - Not found. + * KErrNotReady - Plug-ins are not yet loaded. + */ + IMPORT_C TInt FindPlugin( const TDesC& aServiceName, + MDiagPlugin*& aPlugin ) const; + + /** + * Find Plug-in that matches given service name. Will leave on error. + * Leave codes: KErrNone - Success. + * KErrNotFound - Not found. + * KErrNotReady - Plug-ins are not yet loaded. + * + * @param aServiceName Service name of the plug-in. Name must match exactly. + * @return Reference to Plugin found. + */ + IMPORT_C MDiagPlugin& FindPluginL( const TDesC& aServiceName ) const; + +private: // private constructors + + /** + * C++ Constructor + * + */ + CDiagPluginPool(); + + /** + * 2nd phase constructor + * + */ + void ConstructL( MDiagPluginPoolObserver& aObserver ); + +private: // MEMBER DATA + + /** + * iPluginPoolImpl - Acutal implementation of CDiagPluginPool + * Owns + */ + CDiagPluginPoolImpl* iPluginPoolImpl; + }; + + +#endif // DIAGPLUGINPOOL_H + +// End of File +