lowlevellibsandfws/pluginfw/Framework/frame/RegistryResolveTransaction.h
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     1 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #ifndef __REGISTRYRESOLVETRANSACTION_H__
       
    17 #define __REGISTRYRESOLVETRANSACTION_H__
       
    18 
       
    19 #include <e32base.h>
       
    20 #include <ecom/implementationinformation.h>
       
    21 //
       
    22 // Forward declarations
       
    23 
       
    24 class CRegistryData;
       
    25 
       
    26 //
       
    27 // CRegistryResolveTransaction class
       
    28 
       
    29 /**
       
    30 @internalComponent
       
    31 This class facilitates filtering in the CRegistryDataClass. It does this by accepting 
       
    32 filter parameters when the resolve transaction is created. During the course of the 
       
    33 resolution these filter parameters will be passed to CRegistryData.
       
    34 */
       
    35 class CRegistryResolveTransaction : public CBase, public MPublicRegistry
       
    36 	{
       
    37 public:
       
    38 	static CRegistryResolveTransaction* NewL(CRegistryData &aRegistryData,
       
    39 											 const RExtendedInterfacesArray& aExtendedInterfaces, 
       
    40 											 const TClientRequest& aClientRequest, TBool aCapability);
       
    41 	virtual ~CRegistryResolveTransaction();
       
    42 public:   
       
    43 	RImplInfoArray& ListImplementationsL(TUid aInterfaceUid) const;
       
    44 
       
    45 private:
       
    46 	CRegistryResolveTransaction(CRegistryData &aRegistryData,
       
    47 								const RExtendedInterfacesArray& aExtendedInterfaces, 
       
    48 								const TClientRequest& aClientRequest,TBool aCapability);
       
    49 	void ListImplementationsL(CImplementationInformation* implInfo,CRegistryData::CDllData *aDll) const;
       
    50 private:
       
    51 	// A reference to the registry data
       
    52 	CRegistryData &iRegistryData;
       
    53     // A pointer to the extended interfaces to filter on
       
    54     const RExtendedInterfacesArray* iExtendedInterfaces;
       
    55     // A pointer to the client request data for capability check
       
    56     const TClientRequest* iClientRequest;
       
    57     // Array to hold the filtered results. Must make this mutable so as to not
       
    58     // change the ListImplementationsL interface which has been published.
       
    59     mutable RImplInfoArray iImplementationInfo;
       
    60     // A boolean value for storing the client's capability request 
       
    61     // ETrue capability check is done
       
    62     // EFalse capability check is not done
       
    63     TBool iCapability; 
       
    64 	};
       
    65 #endif //__REGISTRYRESOLVETRANSACTION_H__