00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef Fennel_FileDevice_Included
00025 #define Fennel_FileDevice_Included
00026
00027 #include "fennel/device/DeviceMode.h"
00028 #include "fennel/synch/SynchObj.h"
00029
00030 FENNEL_BEGIN_NAMESPACE
00031
00032 class DeviceIOListener;
00033 class RandomAccessRequest;
00034
00038 class FENNEL_DEVICE_EXPORT FileDevice
00039 {
00040 protected:
00041
00045 FileSize cbFile;
00046
00050 int handle;
00051
00055 DeviceMode mode;
00056
00060 std::string filename;
00061
00066 StrictMutex mutex;
00067
00068 public:
00077 FileDevice(std::string filename,DeviceMode mode,FileSize initialSize);
00078 virtual ~FileDevice();
00079
00091 void transfer(RandomAccessRequest const &request);
00092
00093 void flush();
00094
00095 void close();
00096
00100 bool isOpen() const
00101 {
00102 return handle == -1 ? 0 : 1;
00103 }
00104
00105 FileSize getSizeInBytes()
00106 {
00107 return cbFile;
00108 }
00109
00110 void setSizeInBytes(FileSize cbNew);
00111 };
00112
00113 FENNEL_END_NAMESPACE
00114
00115 #endif
00116
00117