39const static char m_sDefaultDirectory[](
"realtime_shared_files");
40const static char m_sDefaultFileName[](
"realtime_file");
54: m_sDirectory(QDir::currentPath() +
"/" + sDirName)
63 if(initSharedDirectory()){
64 QString sFilePath(m_sDirectory +
"/" + m_sDefaultFileName + QString::number(m_iFileIndex++) +
"_raw.fif");
66 if(QFile::copy(sSourcePath, sFilePath)){
67 QFile newFile(sFilePath);
68 if(newFile.open(QIODevice::ReadWrite)){
70 stream.skipRawData(newFile.bytesAvailable());
83 if(initSharedDirectory()){
84 clearSharedDirectory();
85 m_fileWatcher.addPath(m_sDirectory);
86 connect(&m_fileWatcher, &QFileSystemWatcher::directoryChanged,
87 this, &FiffFileSharer::onDirectoryChanged, Qt::UniqueConnection);
88 connect(&m_fileWatcher, &QFileSystemWatcher::fileChanged,
89 this, &FiffFileSharer::onFileChanged, Qt::UniqueConnection);
91 qWarning() <<
"[FiffFileSharer::initWatcher] Unable to initilaize shared directory";
97void FiffFileSharer::clearSharedDirectory()
99 QDir directory(m_sDirectory);
100 directory.setNameFilters(QStringList(
"*.*"));
101 directory.setFilter(QDir::Files);
102 for(
auto& file : directory.entryList()){
103 directory.remove(file);
109void FiffFileSharer::onDirectoryChanged(
const QString &sPath)
111 QString filePath(sPath +
"/" + m_sDefaultFileName + QString::number(m_iFileIndex) +
"_raw.fif");
112 m_fileWatcher.addPath(filePath);
117void FiffFileSharer::onFileChanged(
const QString &sPath)
120 m_fileWatcher.removePath(sPath);
127bool FiffFileSharer::initSharedDirectory()
129 QDir sharedDirectory(m_sDirectory);
130 if(!sharedDirectory.exists()){
131 sharedDirectory.mkpath(
".");
134 return sharedDirectory.exists();
Memory-mapped FIFF file handle shared between cooperating processes / threads to avoid duplicate read...
FIFF file I/O, in-memory data structures and high-level readers/writers.
void newFileAtPath(const QString &sPath)
void copyRealtimeFile(const QString &sSourcePath)
FIFF tag-stream reader/writer: wraps a QIODevice and exposes typed read_* / write_* methods for every...
void finish_writing_raw()