00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __LOCALFILEPLUGIN_H
00013 #define __LOCALFILEPLUGIN_H
00014
00015 #include <pthread.h>
00016
00017 #include <FilePlugin.h>
00018 #include <HashUtils.h>
00019
00020
00028 class LocalFilePlugin : public FilePlugin
00029 {
00030 public:
00031 LocalFilePlugin( const Config &cfg );
00032 ~LocalFilePlugin();
00033
00034 bool init();
00035
00036 CoreError create( NumID &fileid );
00037 CoreError open( NumID fileid, NumID &of );
00038 CoreError remove( NumID fileid );
00039
00040 int64_t getLength( NumID fileid );
00041 CoreError write( NumID fileid, char *data, int length );
00042 CoreError read( NumID fileid, char *data, int length, int &bRead );
00043 CoreError close( NumID fileid );
00044
00045 private:
00050 bool exists( NumID fileid );
00051
00056 string localFileName( NumID fileid );
00057
00058 string root;
00059 NumID openFileID;
00060 NumID currentFileID;
00061 pthread_mutex_t mutex;
00062 hash_map<NumID,pair<int,NumID>,_hash_NumID> openFiles;
00063 hash_map<NumID,int,_hash_NumID> fileLocks;
00064 };
00065
00066 #endif