00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00020 #ifndef flc_vfs_file_H
00021 #define flc_vfs_file_H
00022
00023 #include <falcon/vfsprovider.h>
00024 #include <fcntl.h>
00025
00026 namespace Falcon {
00027
00032 class FALCON_DYN_CLASS VFSFile: public VFSProvider
00033 {
00034 protected:
00035 void *m_fsdata;
00036
00037
00038 inline int paramsToMode( const OParams &p )
00039 {
00040 int omode = 0;
00041
00042 if ( p.isRdwr() )
00043 omode = O_RDWR;
00044 else if ( p.isRdOnly() )
00045 omode = O_RDONLY;
00046 else
00047 omode = O_WRONLY;
00048
00049 if( p.isTruncate() )
00050 omode |= O_TRUNC;
00051
00052 if( p.isAppend() )
00053 omode |= O_APPEND;
00054
00055 return omode;
00056 }
00057
00058 public:
00059 VFSFile();
00060 virtual ~VFSFile();
00061
00062 virtual Stream* open( const URI &uri, const OParams &p );
00063 virtual Stream* create( const URI &uri, const CParams &p, bool &bSuccess );
00064 virtual DirEntry* openDir( const URI &uri );
00065 virtual bool readStats( const URI &uri, FileStat &s );
00066 virtual bool writeStats( const URI &uri, const FileStat &s );
00067
00068 virtual bool chown( const URI &uri, int uid, int gid );
00069 virtual bool chmod( const URI &uri, int mode );
00070
00071 virtual bool link( const URI &uri1, const URI &uri2, bool bSymbolic );
00072 virtual bool unlink( const URI &uri );
00073
00074 virtual bool mkdir( const URI &uri, uint32 mode );
00075 virtual bool rmdir( const URI &uri );
00076 virtual bool move( const URI &suri, const URI &duri );
00077
00078 virtual int64 getLastFsError();
00079 virtual Error *getLastError();
00080 };
00081
00082 }
00083
00084 #endif
00085
00086