remotestoragefw/remotefileengine/inc/rsfwsession.h
changeset 0 3ad9d5175a89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotestoragefw/remotefileengine/inc/rsfwsession.h	Thu Dec 17 09:07:59 2009 +0200
@@ -0,0 +1,319 @@
+/*
+* 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:  Defines the standard Symbian IPC for using Access API
+ *
+*/
+
+
+#ifndef RRSFWSESSION_H
+#define RRSFWSESSION_H
+
+//  INCLUDES
+#include <e32base.h>
+//#include <f32file.h>
+//#include <s32strm.h>
+
+//  INTERNAL INCLUDES
+//#include "rsfwcontrol.h"
+#include "rsfwcommon.h"
+//#include "rsfwinterface.h"
+class TFid;
+class TEntry;
+class TDirEntAttr;
+
+enum TRequestCodes
+    {
+    ERequestPending
+    };
+
+
+// CLASS DECLARATION
+/**
+ *  This class provides the client-side interface to the server session.
+ *
+ *  @lib rsfwsession.dll
+ *  @since Series 60 3.1
+ */
+class RRsfwSession : public RSessionBase
+    {
+public: // Constructors and destructor
+    /**
+     * Constructor.
+     */
+    IMPORT_C RRsfwSession();
+    
+public: // New functions
+    /**
+     * Connect to the server and create a session.
+     * @since Series 60 3.1
+     * @param aServerName Server name.
+     * @return Standard error code.
+     */    
+    IMPORT_C TInt Connect();
+    
+     /**
+     * Close the session
+     * @since Series 60 3.1
+     */    
+    IMPORT_C void Close();    
+    
+    /**
+     * Get the server version number.
+     * @since Series 60 3.1
+     * @return The version number of the server.
+     */            
+    IMPORT_C TVersion Version() const;
+        
+     /**
+     * Issue request to rename or replace a file or a directory
+     * @since Series 60 3.1
+     * @param aSourceFid   Fid of the source file's parent directory
+     * @param aSourceName  The name of the object to be renamed
+     *                   (for dirs must have a trailing backslash)
+     * @param aDestFid     Fid of the destination directory
+     * @param aDestName    The name of the target object
+     *                  (for dirs must have a trailing backslash)
+     * @return
+     */
+    IMPORT_C TInt MoveFids( TFid aSourceFid, 
+                             const TDesC& aSourceName, 
+                             TFid aDestFid, 
+                             const TDesC& aDestName,
+                             TBool aOverWrite );
+    
+   /**
+     * Issue request to set entry details for a specified file or directory.
+     * @since Series60 3.1
+     * @param aFid   Fid of the target file or directory
+     * @param aTime  A reference to the time object holding the new universal
+     *               modified time for aName.
+     * @param aSetAttMask   Attribute mask for setting the entry's attributes.
+     * @param aClearAttMask Attribute mask for clearing the entry's attributes.
+     * @return
+     */                              
+    IMPORT_C TInt SetEntry( TFid aFid,
+                             const TTime& aTime,
+                             TUint aSetAttMask,
+                             TUint aClearAttMask);
+                             
+    /**
+     * Issue request to flush an entry from the cache.
+     * @since Series 60 3.1
+     * @param aFid The fid of the file or directory to be flushed.
+     * @return
+     */  
+    IMPORT_C TInt FlushCache( TFid& aFid );                  
+                             
+    /**
+     * Issue request to raise the cache priority of an already
+     * cached file.
+     * @since Series 60 3.1
+     * @param aFid The fid of the file.
+     * @return
+     */      
+    IMPORT_C TInt SetHighCachePriority( TFid& aFid );   
+    
+    /**
+     * Issue request to fetch file or directory attributes.
+     * @since Series 60 3.1
+     * @param aFileFid     Fid of the file.
+     * @param aAttributes  On success, contains the file attributes 
+     *                     (TEntry::iName is not filled)
+     * @return 
+     */                                   
+    IMPORT_C TInt GetAttributes( TFid aFileFid, 
+                                 TEntry& aAttributes );    
+                         
+     /**
+     * Issue request to open this fid and return the path of the container file
+     * Note that this is "OPEN" operation, e.g. if the mode is relevant a lock
+     * will be acquired and will be refreshed until the file is closed.
+     * @since Series 60 3.1
+     * @param aFid        Fid of the file or directory.
+     * @param aContainer  Pointer to descriptor which will, on success, contain 
+     *                    the full path of the container file.
+     * @param aAttr       aAttr.iAtt: Open mode, controls acquiring locks etc. 
+     *                    on return, contains size etc.
+     * @param aTrueOpen   Whether File Server opens the file, or ReadSection was called in
+     *                    which case we also mimic the sequence of opening a file  
+     *                    (file is not candidate for removing from cache if it has been
+     *                     opened by the File Server).         
+     * @return 
+     */             
+    IMPORT_C TInt OpenByPath( TFid aFid, 
+                              TDes& aContainerPath, 
+                              TDirEntAttr* aAttr, 
+                              TBool aTrueOpen);   
+     
+    /**
+     * Issue request to initialize the remote mount.
+     * @since Series 60 3.1
+     * @param   Upon successfull return, will contain the Fid of the root directory
+     * @return 
+     */
+    IMPORT_C TInt RfeInit(TFid& aRootFid);         
+    
+    
+    /**
+     * Issue request to make a directory.
+     * @since Series 60 3.1
+     * @param aParentFid Fid of the parent directory.
+     * @param aDirName   The name of the new directory.
+     * @return
+     */ 
+    IMPORT_C TInt MakeDirectory( TFid aParentFid, 
+                                 const TDesC& aDirName );
+                                    
+    /**
+     * Issue request to remove a directory.
+     * @since Series 60 3.1
+     * @param aParentFid Fid of the parent directory.
+     * @param aDirName   The name of the directory to be removed.
+     * @return
+     */
+    IMPORT_C TInt RemoveDirectory( TFid aParentFid, 
+                                   const TDesC& aDirName );
+                              
+
+     /**
+     * Issue request to create and open a file.
+     * Note that this is "OPEN" operation, e.g. if the mode is relevant a lock
+     * will be acquired and will be refreshed until the file is closed.
+     * @since Series 60 3.1
+     * @param aParentFid Fid of the parent directory.
+     * @param aFileName  The name of the new file.
+     * @param aMode      The mode in which the file will be opened.
+     * @param aExcl      Boolean indicating whether it is ok to overwrite an existing file.
+     *                   (ETrue = exclusive = no overwriting)
+     * @param aNewFid       Upon successful return, contains the fid of the new file
+     * @return 
+     */        
+    IMPORT_C TInt CreateFile( TFid aParentFid, 
+                      const TDesC& aFileName, 
+                      TUint aMode, 
+                      TUint aExcl,
+                      TFid& aNewFid);
+
+    /**
+     * Issue request to remove a file.
+     * @since Series 60 3.1
+     * @param aParentFid Fid of the parent directory.
+     * @param aFileName   The name of the file to be removed.
+     * @return
+     */
+    IMPORT_C TInt RemoveFile( TFid aParentFid, 
+                      const TDesC& aFileName );
+
+
+    /**
+     * finds the fid of a file system object
+     * @since Series 60 3.1
+     * @param aParentFid fid of the parent directory
+     * @param aName name of the child to be looked up
+     * @param aNodeType is the type of the child, 
+     *                  KNodeTypeUnknown,KNodeTypeFile or KNodeTypeDir
+     *      (also a trailing backslash in the name indicates KNodeTypeDir)
+     * @param aFid upon successful return contains the fid 
+     *        of the object to be looked up
+     * @return
+     */        
+    IMPORT_C TInt Lookup( TFid aParentFid, 
+                  const TDesC& aName, 
+                  TUint aNodeType,
+                  TFid& aFid );
+                  
+     /**
+     * Tells Remote File Engine that a file has been closed
+     * @since Series 60 3.1
+     * @param aFid Fid of the file that was closed
+     * @param aFlags whether the file has been changed
+     * @return 
+     */
+    IMPORT_C void CloseFile( const TFid aFid, 
+                 TUint aFlags); 
+                 
+            
+     /**
+     * Tells Remote File Engine to write a file that has been 
+     * modified back to the server. However, File Server does
+     * not close the file.
+     * @since Series 60 3.1
+     * @param aFid Fid of the file to be flushed
+     * @param aFirstByte the first byte to be flushed
+     * @param aLastByte the first byte to be flushed
+     * @param aTotalSize the full size of the file
+     * @return 
+     */
+    IMPORT_C TInt Flush( const TFid aFid,
+                         TInt aFirstByte,
+                         TInt aDataLength,
+                         TInt aTotalSize );
+        
+    /**
+     * Issue requet to fetch and cache a file or a directory
+     * @since Series 60 3.1
+     * @param aFileFid the fid of the file to be cached
+     * @param aFirstByte the first byte to be cached (0 for dirs)
+     * @param aLastByte the last byte to be cached (0 for dirs)
+     * @param aCachedBytes upon succesful return,
+     *          the number of bytes cached after this fetch
+     * @return
+     */
+    IMPORT_C TInt Fetch( TFid aFileFid, 
+                 TInt aFirstByte, 
+                 TInt aLastByte,
+                 TInt& aCachedBytes );                      
+
+
+    /**
+     * Issue request to fetch data without permanent caching.
+     * @since Series 60 3.1
+     * @param aFileFid the fid of the file to be fetched
+     * @param aFirstByte the first byte to be fetched
+     * @param aLastByte the last byte to be fetched
+     * @param aTempFileName the path of the temp file 
+     *        where the data will be stored
+     * @param aUseTempPath FALSE if the caching mode was such
+     *                     that the data was anyway stored into
+     *                     the normal cache file.
+     *        
+     * @return 
+     */    
+    IMPORT_C TInt FetchData( TFid aFileFid, 
+                      TInt aFirstByte, 
+                      TInt aLastByte,
+                      TDes& aTempFileName,
+                      TBool& aUseTempPath);
+
+    /**
+     * Queries from Remote File Engine whether there is enough local cache 
+     * space to write aBytes of data
+     * @since Series 60 3,1
+     * @param aFid   fid of the file whose data will be written
+     * @param aBytes the number of bytes to be written
+     * @return a boolean value indicating whether the data can be written
+     */
+    IMPORT_C TInt OkToWrite( TFid aFid, 
+                            TUint aBytes,
+                            TBool& aOkToWrite );
+
+private:
+    static TInt StartServer( const TDesC& aServerName );
+    static TInt CreateServerProcess( const TDesC& aServerName );
+    TInt SendRequest(TInt aOpCode, TInt aDrive, TIpcArgs aArgs);
+    };
+
+#endif // RRSFWSESSION_H
+
+// End of File