diff -r 000000000000 -r 3ad9d5175a89 remotestoragefw/remotefileengine/inc/rsfwinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotestoragefw/remotefileengine/inc/rsfwinterface.h Thu Dec 17 09:07:59 2009 +0200 @@ -0,0 +1,367 @@ +/* +* 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: The definitions of file operation codes and their parameters + * +*/ + + +#ifndef RSFWINTERFACE_H +#define RSFWINTERFACE_H + +// INCLUDES +#include +#include + +#include "rsfwcommon.h" +#include "rsfwfile.h" + +// CONSTANTS +_LIT(KRSFWDefaultDrive, "C:"); +_LIT(KCacheRootDefault, "\\system\\data\\rsfw_cache\\"); +_LIT(KTempFileName, "temp"); +_LIT(KRsfwConfigPath, "\\data\\rscfw.cfg"); +_LIT(KResolutionLogPath, "\\logs\\rsfw\\rsfw.log"); +_LIT(KConfigNameCacheRoot, "cache_root"); +_LIT(KDirReadAllMask, "*"); +_LIT(KRemoteFs, "eremotefs"); +_LIT(KRemoteFSName, "RemoteFS"); +_LIT(KPanicSource, "RemoteFS"); +_LIT(KRemoteVolumeName, "RemoteFS"); +_LIT(KRemoteFEName, "RemoteFE"); +_LIT(KCachePanicSource, "cache manager"); +_LIT(KRfeInputData, "RemoteFeInputArgsChunk"); +_LIT(KRfeOutputData, "RemoteFeOutputArgsChunk"); +_LIT(KRfeDataSemaphoreName, "RemoteFeDataSemaphore"); +_LIT(KRfeMain, "RemoteFeMain"); +_LIT(KRsfwMounterExe, "rsfwbootmounter"); + +const TInt KMaxMimeTypeLength = 64; +// Node Types +const TUint KNodeTypeUnknown = 0x00; +const TUint KNodeTypeFile = 0x01; +const TUint KNodeTypeDir = 0x02; + + +// DATA TYPES +// Remote File System plug-in <--> Remote File Engine communications +enum TRfeIoctl + { + ERemoteFsIoctlRefresh = 1, + ERemoteFsProtect, + ERemoteFsHighCachePriority + }; + +enum TRfeClose + { + ECloseNotModified, + ECloseModified, + ECloseLastFlushFailed + }; + +// CLASS DECLARATIONS + +/** + * Node identifier in the framework + * + * @lib Rsfwsession.dll + * @since Series 60 3.1 + */ +class TFid + { +public: // New functions + inline TBool operator==( const TFid& aFid ) const; +public: // Data + // Identifiers the volume. Each mount is an own volume. + TInt iVolumeId; + // Identifies the node (i.e. file or directory) inside the volume. + TInt iNodeId; + }; + +/** + * Directory attributes for a file or directory. + * + * @lib rsfwsession.dll + * @since Series 60 3.1 + */ +class TDirEntAttr + { +public: // New functions + IMPORT_C void ExternalizeL( RWriteStream& aStream ) const; + IMPORT_C void InternalizeL( RReadStream& aStream ); + IMPORT_C void Clear(); + +public: // Data + // attribute bits + TUint iAtt; + // file size in bytes + TInt iSize; + // last modified + TTime iModified; + // Symbian data-type (UID) + TUid iUid3; + }; + +/** + * Encapsulates a file or directory entry. + * + * @lib rsfwsession.dll + * @since Series 60 3.1 + */ +class TDirEnt + { +public: // New functions + IMPORT_C void ExternalizeL( RWriteStream& aStream ) const; + IMPORT_C void InternalizeL( RReadStream& aStream ); + IMPORT_C void Clear(); + +public: // Data + // attributes + TDirEntAttr iAttr; + // filename + TFileName iName; + }; + +/** + * Remote File Engine input parameters header + * + * @lib rsfwsession.dll + * @since Series 60 3.1 + */ +class TRfeInArgs + { +public: + // operation code, used to cast this instance into the right impl. class + TInt iOpCode; + // The fid of the target file (not used in root operation). + TFid iFid; + }; + +/** + * Remote File Engine output parameters header + * + * @lib rsfwsession.dll + * @since Series 60 3.1 + */ +class TRfeOutArgs + { +public: // Data + TUint iUnique; // The request ID + }; + +/** + * Remote File Engine operation input and output parameter structures + * + * @lib rsfwsession.dll + * @since Series 60 3.1 + */ +// Close +class TRfeCloseInArgs : public TRfeInArgs + { +public: + TInt iFlags; + }; + +// Create +class TRfeCreateInArgs : public TRfeInArgs + { +public: + TDirEnt iEntry; + TInt iExcl; + }; + +class TRfeCreateOutArgs : public TRfeOutArgs + { +public: + TFid iFid; + TDirEntAttr iAttr; + }; + +// Fetch and cache +class TRfeFetchInArgs : public TRfeInArgs + { +public: + TInt iFirstByte; + TInt iLastByte; + }; + +class TRfeFetchOutArgs : public TRfeOutArgs + { +public: + // last byte that was actually fetched, might be more than was requested + TInt iLastByte; + }; + +// Fetch without caching +class TRfeFetchDataInArgs : public TRfeInArgs + { +public: + TInt iFirstByte; + TInt iLastByte; + }; + +class TRfeFetchDataOutArgs : public TRfeOutArgs + { +public: + TFileName iTempPath; + TBool iUseTempPath; + }; + +// flush +class TRfeFlushInArgs : public TRfeInArgs + { +public: + TInt iFirstByte; + TInt iDataLength; + TInt iTotalSize; + }; + + +// Fsync +class TRfeFsyncInArgs : public TRfeInArgs + { +public: + }; + +// GetAttr +class TRfeGetAttrInArgs : public TRfeInArgs + { +public: + }; + +class TRfeGetAttrOutArgs : public TRfeOutArgs + { +public: + TDirEntAttr iAttr; + }; + +// Ioctl +class TRfeIoctlInArgs : public TRfeInArgs + { +public: + TInt iCmd; + TInt iLen; + union + { + TUint8 iData8[1]; + TUint32 iData32[1]; + }; + }; + +// Lookup +class TRfeLookupInArgs : public TRfeInArgs + { +public: + TFileName iName; + TUint iNodeType; + }; + +class TRfeLookupOutArgs : public TRfeOutArgs + { +public: + TFid iFid; + }; + +// Mkdir +class TRfeMkdirInArgs : public TRfeInArgs + { +public: + TDirEnt iEntry; + }; + +class TRfeMkdirOutArgs : public TRfeOutArgs + { +public: + TFid iFid; + TDirEntAttr iAttr; + }; + +// OpenByPath +class TRfeOpenByPathInArgs : public TRfeInArgs + { +public: + TUint iFlags; + TBool iTrueOpen; + }; + + +class TRfeOpenByPathOutArgs : public TRfeOutArgs + { +public: + TFileName iPath; + TDirEntAttr iAttr; + }; + +// Remove +class TRfeRemoveInArgs : public TRfeInArgs + { +public: + TFileName iName; + }; + +// Rename +class TRfeRenameInArgs : public TRfeInArgs + { +public: + TFileName iSrcName; + TFid iDstFid; + TFileName iDstName; + TBool iOverWrite; + }; + +// Rmdir +class TRfeRmdirInArgs : public TRfeInArgs + { +public: + TFileName iName; + }; + +// Root operation returns the fid of the volume root +class TRfeRootInArgs : public TRfeInArgs + { + }; + +class TRfeRootOutArgs : public TRfeOutArgs + { +public: + TFid iFid; + }; + +// SetAttr +class TRfeSetAttrInArgs : public TRfeInArgs + { +public: + TDirEntAttr iMask; + TDirEntAttr iAttr; + }; + +// Requests whether it is ok to write n bytes to the local cache +class TRfeWriteDataInArgs : public TRfeInArgs + { +public: + // Number of bytes to be written. + TUint iBytes; + }; + +class TRfeWriteDataOutArgs : public TRfeOutArgs + { +public: + // Permission to write. + TBool iOkToWrite; + }; + +#include "rsfwinterface.inl" + +#endif // RSFWINTERFACE_H + +// End of File