diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/inc/referencepolicyplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/inc/referencepolicyplugin.h Tue Feb 02 02:02:59 2010 +0200 @@ -0,0 +1,96 @@ +/* +* Copyright (c) 2008-2009 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: +* +*/ + +/** + @file + @internalComponent +*/ + +#ifndef REFERENCEPOLICYPLUGIN_H +#define REFERENCEPOLICYPLUGIN_H + +#include +#include + +typedef RPointerArray RMountRecordArray; + +class CRepository; +class CMsmmPolicyNotificationManager; + +NONSHARABLE_CLASS(CReferencePolicyPlugin) : + public CMsmmPolicyPluginBase + { +public: + virtual ~CReferencePolicyPlugin(); + + static CReferencePolicyPlugin* NewL(); + + // CMsmmPolicyPluginBase implementation + void RetrieveDriveLetterL(TText& aDriveName, + const TPolicyRequestData& aData, TRequestStatus& aStatus); + void CancelRetrieveDriveLetter(); + void SaveLatestMountInfoL(const TPolicyMountRecord& aData, + TRequestStatus& aStatus); + void CancelSaveLatestMountInfo(); + void SendErrorNotificationL(const THostMsErrData& aErrData); + void GetSuspensionPolicy(TSuspensionPolicy& aPolicy); + +protected: + + // CActive implementation + void DoCancel(); + void RunL(); + +private: // Constructor + CReferencePolicyPlugin(); + void ConstructL(); + + void RetrieveDriveLetterL(TText& aDriveName, + const TPolicyRequestData& aData); + void SaveLatestMountInfoL(const TPolicyMountRecord& aData); + + void Complete(TInt aError = KErrNone); + + // Prepare available drive name list buffer + void PrepareAvailableDriveList(); + // Get available drive names by policy (Forbidden list will be removed) + void AvailableDriveListL(); + // Filter F32 forbidden drive names from available list + void FilterFsForbiddenDriveListL(TDriveList& aAvailableNames); + // Called to filter the used drive letters + void FindFirstNotUsedDriveLetter( + const TDriveList& aAvailableNames, + TText& aDriveName); + // Retrieve history from CR + void RetrieveHistoryL(); + // Remove all buffered history + void ClearHistory(); + // Search in history array for a logic unit + TInt SearchHistoryByLogicUnit(const TPolicyRequestData& aLogicUnit) const; + +private: + CRepository* iRepository; // Owned + TInt iMaxHistoryRecCount; + TDriveList iAvailableDrvList; // Drive list available by policy + RMountRecordArray iHistory; // Device history + TSuspensionPolicy iSuspensionPolicy; // Suspension policy + RFs iFs; + CMsmmPolicyNotificationManager* iNotificationMan; + TRequestStatus* iClientStatus; // No ownership + }; + +#endif /*REFERENCEPOLICYPLUGIN_H*/