39const static char m_sDefaultDirectory[](
"realtime_shared_files");
40const static char m_sDefaultFileName[](
"realtime_file");
54: m_sDirectory(QDir::currentPath() +
"/" + sDirName)
63 if (!initSharedDirectory())
67 const QString sFilePath(m_sDirectory +
"/" + m_sDefaultFileName + QString::number(m_iFileIndex++) +
"_raw.fif");
68 const QString sPartPath(sFilePath +
".part");
69 QFile::remove(sPartPath);
70 if (!QFile::copy(sSourcePath, sPartPath))
73 QFile newFile(sPartPath);
74 if (newFile.open(QIODevice::ReadWrite)) {
76 stream.skipRawData(newFile.bytesAvailable());
80 QFile::remove(sFilePath);
81 QFile::rename(sPartPath, sFilePath);
88 if (initSharedDirectory()) {
89 clearSharedDirectory();
90 m_fileWatcher.addPath(m_sDirectory);
91 connect(&m_fileWatcher, &QFileSystemWatcher::directoryChanged,
92 this, &FiffFileSharer::onDirectoryChanged, Qt::UniqueConnection);
94 qWarning() <<
"[FiffFileSharer::initWatcher] Unable to initilaize shared directory";
100void FiffFileSharer::clearSharedDirectory()
102 QDir directory(m_sDirectory);
103 directory.setNameFilters(QStringList(
"*.*"));
104 directory.setFilter(QDir::Files);
105 for (
auto& file : directory.entryList()) {
106 directory.remove(file);
112void FiffFileSharer::onDirectoryChanged(
const QString& sPath)
115 QString filePath(sPath +
"/" + m_sDefaultFileName + QString::number(m_iFileIndex) +
"_raw.fif");
116 while (QFile::exists(filePath)) {
118 filePath = sPath +
"/" + m_sDefaultFileName + QString::number(++m_iFileIndex) +
"_raw.fif";
124bool FiffFileSharer::initSharedDirectory()
126 QDir sharedDirectory(m_sDirectory);
127 if (!sharedDirectory.exists()) {
128 sharedDirectory.mkpath(
".");
131 return sharedDirectory.exists();
Hands finished FIFF recordings from one application to another through a watched directory.
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()