22 #ifndef _HDF5SERIE_FILE_H_
23 #define _HDF5SERIE_FILE_H_
25 #include <hdf5serie/group.h>
26 #include <boost/filesystem.hpp>
27 #include <boost/date_time/posix_time/posix_time_types.hpp>
30 namespace interprocess {
32 class windows_shared_memory;
34 class shared_memory_object;
37 class interprocess_mutex;
38 class interprocess_condition;
54 File(
const boost::filesystem::path &filename, FileAccess type_);
57 static void reopenAllFilesAsSWMR();
58 static int getDefaultCompression() {
return defaultCompression; }
59 static void setDefaultCompression(
int comp) { defaultCompression=comp; }
60 static int getDefaultChunkSize() {
return defaultChunkSize; }
61 static void setDefaultChunkSize(
int chunk) { defaultChunkSize=chunk; }
65 void requestWriterFlush();
66 bool waitForWriterFlush();
68 void flushIfRequested();
69 static void flushAllFiles();
70 static void flushAllFilesIfRequested();
71 void refreshAfterWriterFlush();
72 static void refreshAllFiles();
73 static void refreshFilesAfterWriterFlush(
const std::set<H5::File*> &files);
74 static void refreshAllFilesAfterWriterFlush();
77 boost::filesystem::path filename;
78 std::string interprocessName;
80 std::shared_ptr<boost::interprocess::windows_shared_memory> shm;
82 std::shared_ptr<boost::interprocess::shared_memory_object> shm;
84 std::shared_ptr<boost::interprocess::mapped_region> shmmap;
86 boost::interprocess::interprocess_mutex *mutex;
87 boost::interprocess::interprocess_condition *cond;
88 boost::posix_time::ptime flushRequestTime;
95 static int defaultCompression;
96 static int defaultChunkSize;
98 static std::set<File*> writerFiles;
99 static std::set<File*> readerFiles;
100 std::string interprocessName;
102 void addFileToNotifyOnRefresh(
const boost::filesystem::path &filename);
103 std::vector<IPC> ipcAdd;
Definition: interface.h:249