00001
00002
00003 #ifndef FileBackend_h
00004 #define FileBackend_h
00005
00006 #include "gvariable.h"
00007 #include "Backend.h"
00008
00009 #include <boost/filesystem.hpp>
00010 #include <boost/filesystem/fstream.hpp>
00011
00021 class FileBackend : virtual public Backend
00022 {
00023 public:
00025 FileBackend();
00027 FileBackend(char *dir_prefix);
00029 ~FileBackend();
00030
00032 void listSessions(std::vector<std::string>& list);
00033
00035 bool listVersions(std::vector<uint32>& list, const std::string& session);
00036
00038 std::istream& getInputStream(const UserState* userState,
00039 const std::string& filename);
00040
00042 std::istream& getInputStream(const std::string& session, uint32 version,
00043 const std::string& filename);
00044
00046 std::ostream& getOutputStream(const UserState* userState,
00047 const std::string& filename);
00048
00050 std::ostream& getOutputStream(const std::string& session, uint32 version,
00051 const std::string& filename);
00052
00053 private:
00054 bool find(const boost::filesystem::path& dir_path,
00055 const std::string& file_name,
00056 bool dir);
00057
00058 boost::filesystem::path dir_prefix;
00059
00060 boost::filesystem::ifstream *istream;
00061 boost::filesystem::ofstream *ostream;
00062 };
00063 #endif