--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/mw/rsfwmountman.h Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,391 @@
+/*
+* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: RSFW Mount Manager API
+*
+*/
+
+
+#ifndef CRSFWMOUNTMAN_H
+#define CRSFWMOUNTMAN_H
+
+#include <e32cmn.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <s32strm.h>
+
+#include <rsfwmountentry.h> // mount entry constants
+
+class TRsfwMountInfo;
+
+// FORWARD DECLARATIONS
+class CRsfwMountEntry;
+class CRsfwMountManImpl;
+class CDesC16Array;
+
+// CONSTANTS
+// the secure UID of the server, used as a P&S key category
+const TUid KRfeServerSecureUid = { 0x101F970D };
+//the maximum number of remote drives
+const TInt KMaxRemoteDrives = 9;
+
+// DATA TYPES
+// Event types for MRsfwMountManObserver
+enum TMountManEvent
+ {
+ EMountManEventMountConfigurationChanged = 1,
+ EMountManEventMounted
+ };
+
+// P&S keys
+// for notifying UI that a remote drive has been connected or disconnected
+enum TRfePSKeys
+ {
+ ERsfwPSKeyConnect
+ };
+
+// Connection states
+const TUint KMountStronglyConnected = 0x01;
+const TUint KMountConnecting = 0x02; // temporary state during establishing a connection
+ // to the drive, not to be used via MountMan API
+const TUint KMountNotConnected = 0x03;
+
+// CLASS DECLARATION
+/**
+ * Interface for receiving mounting events
+ *
+ * @lib mountman.dll
+ * @since Series 60 3.1
+ */
+
+class MRsfwMountManObserver
+ {
+public:
+ /**
+ * Handles an event emanating from a CRsfwMountMan class
+ *
+ * @param aEventType type of the event
+ * @param aStatus status code
+ * @param aArg miscellaneous arguments
+ */
+ virtual void HandleMountManEventL(TMountManEvent aEvent,
+ TInt aStatus,
+ TAny* aArg) = 0;
+ };
+
+/**
+ * Encapsulates remote mount configuration.
+ *
+ * @lib rsfwmountman.dll
+ * @since Series 60 3.1
+ */
+class TRsfwMountConfig
+ {
+public: // New functions
+ IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+ IMPORT_C void InternalizeL(RReadStream& aStream);
+
+public: // Data
+ TChar iDriveLetter;
+ TBuf<KMaxMountNameLength> iName;
+ TBuf<KMaxMountUriLength> iUri;
+ TBuf<KMaxMountUserNameLength> iUserName;
+ TBuf<KMaxMountPasswordLength> iPassword;
+ TBuf<KMaxMountAuxDataLength> iAuxData;
+ TUint iFlags;
+ TInt iInactivityTimeout;
+ };
+
+
+/**
+ * Encapsulates remote mount status information.
+ *
+ * @lib rsfwmountman.dll
+ * @since Series 60 3.1
+ */
+class TRsfwMountStatus
+ {
+public: // Data
+ TInt iVolumeId;
+ /** iMountState is not used and will be removed */
+ TUint iMountState;
+ /** see KMountStronglyConnected and other connection states */
+ TUint iConnectionState;
+ TInt iCachedSize;
+ TInt iInactivityTime;
+ TInt iInactivityTimeout;
+ TBool iPermanence;
+ };
+
+
+/**
+ * Encapsulates all information about a mount.
+ *
+ * @lib rsfwmountman.dll
+ * @since Series 60 3.1
+ */
+class TRsfwMountInfo
+ {
+public: // New functions
+ void ExternalizeL(RWriteStream& aStream) const;
+ void InternalizeL(RReadStream& aStream);
+
+public: // Data
+ TRsfwMountConfig iMountConfig;
+ TRsfwMountStatus iMountStatus;
+ };
+
+
+
+
+// CLASS DECLARATION
+
+/**
+ * Class for managing mounts to remote file repositories
+ *
+ * @lib mountman.dll
+ * @since Series 60 3.1
+ */
+
+class CRsfwMountMan : public CBase
+ {
+public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ *
+ * @param aDefaultFlags must be set to KMountFlagInteractive
+ * if the user is to be prompted during the mount procedure.
+ * Otherwise the parameter can be set to zero.
+ * @param mount event observer
+ * @return pointer to the created CRsfwMountMan object instance
+ */
+ IMPORT_C static CRsfwMountMan* NewL(TUint aDefaultFlags,
+ MRsfwMountManObserver* aMountManObserver);
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CRsfwMountMan();
+
+public: // New functions
+ /**
+ * Returns a list of friendly names of all mount configurations
+ * in the mount configuration repository.
+ * The entries are returned in the order that they appear in the
+ * repository.
+ * @param aNames friendly names
+ * @return nothing
+ */
+ IMPORT_C void GetMountNamesL(CDesC16Array* aNames) const;
+
+ /**
+ * Gets the mount configuration entry having the given friendly name.
+ * The caller must make sure that the name is unique.
+ * @param aId friendly name
+ * @return a pointer to the configuration entry or NULL if not found
+ */
+ IMPORT_C const CRsfwMountEntry* MountEntryL(const TDesC& aName) const;
+
+ /**
+ * Gets the mount configuration entry for the given drive letter.
+ * @param aDriveLetter drive letter
+ * @return a pointer to the configuration entry or NULL if not found
+ */
+ IMPORT_C const CRsfwMountEntry* MountEntryL(TChar aDriveLetter) const;
+
+ /**
+ * Adds a mount configuration entry in the configurations and
+ * mounts the drive in the File Server.
+ * If the drive letter item is not set in the configuration,
+ * a free letter will be allocated.
+ * Then the EMountEntryItemDrive value in aMountEntry will be changed.
+ * The EMountEntryItemIndex item of aMountEntry is used for
+ * positioning the entry in a specific order in the configuration database
+ * (the index itself is not stored)
+ *
+ * @param aMountEntry mount configuration entry
+ * the ownership of the pointer is transferred to CRsfwMountMan
+ * @return nothing
+ * @leave KErrInUse selected drive letter already in used
+ * @leave KErrInUse selected name is in use
+ * @leave KErrInUse 9 remote drives already define
+ * (Number of remote drives is limited by default to 9 so that drive
+ * letters are also available for other technologies)
+ * @leave KErrAccessDenied program does not have sufficient capabilities
+ * required capabilities are DiskAdmin (to mount new remote drive in
+ * File Server) and WriteDeviceData (to add new remote drive to
+ * Central Repository)
+ * @leave KErrNotFound
+ * File System plug-in, Central Repository table etc. not found
+ */
+ IMPORT_C void AddMountEntryL(CRsfwMountEntry* aMountEntry);
+
+ /**
+ * Deletes a mount entry from the configurations and unmounts the drive.
+ * Nothing is done if the entry does not exist.
+ *
+ * @param aName name
+ * @return nothing
+ */
+ IMPORT_C void DeleteMountEntryL(const TDesC& aName);
+
+ /**
+ * Deletes a mount entry from the configurations and unmounts the drive.
+ * Nothing is done if the entry does not exist.
+ *
+ * @param aDriveLetter drive letter
+ * @return nothing
+ */
+ IMPORT_C void DeleteMountEntryL(TChar aDriveLetter);
+
+
+ /**
+ * Gets a list of all drives as seen by the File Server
+ *
+ * Returns drive letters.
+ * Letters for local drives are in the front of the list
+ * Letters for remote drives in order defined in CenRep
+ * The number of the drives is the same as the length of the list
+ *
+ * @param aDriveList returned drive list
+ * @return number of remote drives
+ */
+ IMPORT_C TInt GetAllDrivesL(TDriveList& aDriveList) const;
+
+ /**
+ * Gets a list of all remote drives as seen by the File Server
+ *
+ * The list contains the letters of the remote drives.
+ * Letters for remote drives in order defined in CenRep
+ * The number of the drives is the same as the length of the list
+ *
+ * @param aDriveList returned drive list
+ * @return number of remote drives
+ */
+ IMPORT_C TInt GetRemoteMountListL(TDriveList& aDriveList) const;
+
+ /**
+ * Gets mount information for an active remote drive.
+ *
+ * The information consists of static configuration information and
+ * status information (such as strongly or weakly connected).
+ * Note that if the drive is not atctive this function will
+ * return -1, you need to use MountEntryL to get just the static
+ * configuration information
+ *
+ * @param aDriveLetter drive letter of the mount
+ * @param aMountInfo returned information
+ * @return error code
+ */
+ IMPORT_C TInt GetMountInfo(TChar aDriveLetter, TRsfwMountInfo& aMountInfo) const;
+
+ /**
+ * Sets the connection state of a mount for an active remote drive
+ *
+ * @param aDriveLetter drive letter of the mount
+ * @param aConnectionState
+ * The following connection states have been defined:
+ * KMountStronglyConnected = strongly connected state
+ * KMountWeaklyConnected = weakly connected state
+ * KMountNotConnected = disconnected state
+ *
+ * @return error code
+ */
+ IMPORT_C TInt SetMountConnectionState(TChar aDriveLetter,
+ TUint aConnectionState);
+
+ /**
+ * Changes a mount configuration entry in the configurations
+ *
+ * @param aMountEntry mount configuration entry
+ * the ownership of the pointer is transferred to CRsfwMountMan
+ * @return nothing
+ * @leave KErrInUse if the name of the mount is used by other mount
+ * @leave KErrAccessDenied program does not have sufficient capabilities
+ * required capabilities are DiskAdmin (to mount new remote drive in
+ * File Server) and WriteDeviceData (to add new remote drive to
+ * Central Repository)
+ * @leave KErrNotFound if mount with given letter not found or
+ * File System plug-in, Central Repository table etc. not found
+ */
+ IMPORT_C void EditMountEntryL(CRsfwMountEntry* aMountEntry);
+
+
+ /**
+ * Refresh a remote directory
+ *
+ * Ensures that contents of a remote directory are up to date.
+ * Synchronous variant deletes the currently cached version.
+ * Note that this function intentionally does not return directory
+ * contents. All data should be read through the File Server instead.
+ *
+ * @return KErrArgument Path refers to a file
+ * KErrNotFound path is not found from cache
+ */
+ IMPORT_C TInt RefreshDirectory(const TDesC& aPath);
+
+ /**
+ * Some applications have problems with handling remote files.
+ * Function checks whether app with given UID is one of them.
+ *
+ * @param aUid UID of the application
+ * @return ETrue if it is on the black list, otherwise EFalse
+ */
+ IMPORT_C TBool IsAppOnBlackList(TUid aUid) const;
+
+
+ /**
+ * Cancels an active remote file upload or download
+ *
+ * @param aFile file name
+ * @return one of the system wide error codes.
+ */
+ IMPORT_C TInt CancelRemoteTransfer(const TDesC& aFile);
+
+
+ /**
+ * Sets the connection state of a mount for an active remote drive
+ * sends a bling request, does not wait for reply
+ *
+ * @param aDriveLetter drive letter of the mount
+ * @param aConnectionState
+ * The following connection states have been defined:
+ * KMountStronglyConnected = strongly connected state
+ * KMountWeaklyConnected = weakly connected state
+ * KMountNotConnected = disconnected state
+ *
+ * @return error code
+ */
+ IMPORT_C TInt SetMountConnectionStateBlind(TChar aDriveLetter,
+ TUint aConnectionState);
+
+
+private:
+ /**
+ * C++ default constructor
+ */
+ CRsfwMountMan();
+
+ /**
+ * Second phase constructor
+ */
+ void ConstructL(TUint aDefaultFlags,
+ MRsfwMountManObserver* aMountManObserver);
+
+private: // Data
+ CRsfwMountManImpl* iMountManImpl; // implementation
+ };
+
+#endif // CRSFWMOUNTMAN_H
+
+// End of File