diff -r c32dc0be5eb4 -r 6b4fc789785b remotestoragefw/remotefileengine/inc/rsfwremoteaccesssync.h --- a/remotestoragefw/remotefileengine/inc/rsfwremoteaccesssync.h Mon Jan 18 21:00:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,259 +0,0 @@ -/* -* Copyright (c) 2002-2004 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: Synchronous layer on top of the Access Protocol plug-in API - * -*/ - - -#ifndef CRSFWREMOTEACCESSSYNC_H -#define CRSFWREMOTEACCESSSYNC_H - -// INCLUDES -#include - -#include "rsfwremoteaccess.h" - -// FORWARD DECLARATIONS -class CRsfwRemoteAccess; - -// CLASS DECLARATION -/** - * Class for accessing files via a file transport protocol - * by using synchronous calls. - * - * The derived classes are supposed to be registered and instantiated - * by using the the ECOM architecture. - */ - -class CRsfwRemoteAccessSync: public CBase, public MRsfwRemoteAccessResponseHandler - { -public: - /** - * Two-phased constructor. - * - * @param aProtocol protocol name, like "http", "https", or "ftp" - * @return a pointer to an object instance that implements - * this interface by using the given protocol. - */ - static CRsfwRemoteAccessSync* NewL(const TDesC8& aProtocol, - CRsfwRemoteAccess* aRemoteAccess = NULL); - - ~CRsfwRemoteAccessSync(); - - /** - * Configures the remote access module. - * Sets the connection state observer if available - * In davaccess creates the WebDAV session class - * - * @param aRemoteAccess asynchronous accessor (may be NULL) - * @param aRsfwRemoteAccessObserver connection event observer - * @return error code - */ - TInt Setup(MRsfwRemoteAccessObserver* aRsfwRemoteAccessObserver); - - /** - * Opens a connection to the server given by aServerName parameter. - * - * @param aUserName user name for access control (can be empty) - * @param aPassword password for access control (can be empty) - * @param aServerName the server's DNS name or IP address - * @param aPortNumber port number (like 80 for HTTP) - * @param aRootDirectory sub directory to be accessed (can be empty) - * @param aAuxData auxiliary parameters for connection setup (IAP info) - */ - TInt Open(const TDesC& aUserName, - const TDesC& aPassword, - const TDesC& aServerName, - TInt aPortNumber, - const TDesC& aRootDirectory, - const TDesC& aAuxData); - - /** - * Gets contents of the directory given by aPathName parameter. - * - * @param aPathName path name of the directory - * @param aDirEnts an array of directory entries to be filled. - */ - TInt GetDirectory(const TDesC& aPathName, - RPointerArray& aDirEntsp); - - /** - * Gets attributes of the directory given by aPathName parameter. - * This function may also be called if the type of the object is - * not yet known (e.g., the object could be a file). - * - * @param aPathName path name of the directory - * @param aAttr attribute structure to be filled - */ - TInt GetDirectoryAttributes(const TDesC& aPathName, - CRsfwDirEntAttr*& aAttr); - - /** - * Gets attributes of the file given by aPathName parameter. - * - * @param aPathName path name of the file - * @param aAttr attribute structure to be filled - */ - TInt GetFileAttributes(const TDesC& aPathName, - CRsfwDirEntAttr*& aAttr); - - /** - * Sets attributes of the file or directory given by aPathName parameter. - * This function is typically only used for files and even then - * the implementation may do nothing since standard file attributes - * are implied by the contents of the file or set in conjunction with - * other operations on the file system object. - * - * @param aPathName path name of the file or directory - * @param aAttr attribute structure - */ - TInt SetAttributes(const TDesC& aPathName, - CRsfwDirEntAttr& aAttr); - - /** - * Gets a remote file and copies it to a local file. - * Note that byte ranges are not be implemented by all - * file access protocols. - * - * @param aRemotePathName path name of the remote file - * @param aLocalPathName path name of the local file - * @param aOffset offset of the first byte to be accessed - * @param aLength length of data to be accessed/was accessed (0=all) - * @param aFlags operation flags (see RemoteAccess.h) - */ - TInt GetFile(const TDesC& aRemotePathName, - const TDesC& aLocalPathName, - TInt aOffset, - TInt* aLength, - TUint aFlags); - - /** - * Makes a directory. - * - * @param aPathName path name of the new directory - */ - TInt MakeDirectory(const TDesC& aPathName); - - - /** - * Creates an empty file on the remote server - * - * @param aPathName path name of the new file - */ - TInt CreateFile(const TDesC& aPathName); - - /** - * Puts a file to the server. - * - * @param aLocalPathName path name of the local file - * @param aRemotePathName path name of the remote file - */ - TInt PutFile(const TDesC& aLocalPathName, - const TDesC& aRemotePathName); - - /** - * Deletes a directory. - * - * @param aPathName path name of the directory to be deleted - */ - - TInt DeleteDirectory(const TDesC& aPathName); - - /** - * Deletes a file. - * - * @param aPathName path name of the file to be deleted - */ - TInt DeleteFile(const TDesC& aPathName); - - - /** - * Renames a file or a directory. - * (may involve movement to another directory). - * - * @param aSrcPathName path name of the object to be renamed - * @param aDstPathName new path name of the object - * @param aOverwrite allow overwriting an existing object - */ - TInt Rename(const TDesC& aSrcPathName, - const TDesC& aDstPathName, - TBool aOverwrite); - - /** - * Obtains a lock for the given file system object - * Note that this function is not be implemented by all - * file access protocols (e.g., FTP), some protocols only - * implement write locking (e.g., WebDAV). - * - * @param aPathName path name of the object to be locked - * @param aLockFlags indicates whether a write or read lock is requested - * @param aTimeout the timeout that is requested and granted - * @param aLockToken acquired lock token - the caller gets ownership - */ - TInt ObtainLock(const TDesC& aPathName, - TUint aLockFlags, - TUint& aTimeout, - TDesC8*& aLockToken - ); - - /** - * Releases the lock of the given file system object - * Note that this function is not be implemented by all - * file access protocols (e.g., FTP). - * - * @param aPathName path name of the object to be locked - */ - TInt ReleaseLock(const TDesC& aPathName); - - /** - * Refreshes the lock of the given file system object - * Note that this function is not be implemented by all - * file access protocols (e.g., FTP). - * - * @param aPathName path name of the object to be locked - * @param aTimeout the timeout that is requested and granted - * @param aResponseHandler response handler - */ - TInt RefreshLock(const TDesC& aPathName, TUint& aTimeout); - - // from MRemoteAccessResponseHandler - virtual void HandleRemoteAccessResponse(TUint aId, TInt aStatus); - - /** - * Sets lock token for the a given resource - * This lock token value replaces any previously cached token value - * - * @param aPathName path name - * @param aLockToken lock token - * @return error code - */ - TInt SetLockToken(const TDesC& aPathName, const TDesC8& aLockToken); - -private: - void ConstructL(const TDesC8& aProtocol, - CRsfwRemoteAccess* aRemoteAccess = NULL); - TInt Epilog(); - - -private: - CRsfwRemoteAccess* iRemoteAccess; - TBool iOwnRemoteAccess; // whether we own iRemoteAccess - CActiveSchedulerWait* iSchedulerWait; - TInt iStatus; // operation return status - TBool iPending; // is there a pending request - }; - -#endif // CRSFWREMOTEACCESSSYNC_H - -// End of File