From 87d660a32288008c468285c66a94be8469405056 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Fri, 15 May 2020 09:34:36 +0300 Subject: [PATCH] Optional data save in file streams --- .../streams/include/ftl/streams/filestream.hpp | 1 + components/streams/src/filestream.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/components/streams/include/ftl/streams/filestream.hpp b/components/streams/include/ftl/streams/filestream.hpp index 92d0a8afe..d1fea1d9f 100644 --- a/components/streams/include/ftl/streams/filestream.hpp +++ b/components/streams/include/ftl/streams/filestream.hpp @@ -73,6 +73,7 @@ class File : public Stream { int version_; ftl::timer::TimerHandle timer_; bool is_video_; + bool save_data_; StreamCallback cb_; MUTEX mutex_; diff --git a/components/streams/src/filestream.cpp b/components/streams/src/filestream.cpp index 2afe275ba..ebfbdc6b0 100644 --- a/components/streams/src/filestream.cpp +++ b/components/streams/src/filestream.cpp @@ -14,18 +14,29 @@ File::File(nlohmann::json &config) : Stream(config), ostream_(nullptr), istream_ mode_ = Mode::Read; jobs_ = 0; checked_ = false; + save_data_ = value("save_data", false); + + on("save_data", [this](const ftl::config::Event &e) { + save_data_ = value("save_data", false); + }); } File::File(nlohmann::json &config, std::ifstream *is) : Stream(config), ostream_(nullptr), istream_(is), active_(false) { mode_ = Mode::Read; jobs_ = 0; checked_ = false; + save_data_ = false; } File::File(nlohmann::json &config, std::ofstream *os) : Stream(config), ostream_(os), istream_(nullptr), active_(false) { mode_ = Mode::Write; jobs_ = 0; checked_ = false; + save_data_ = value("save_data", false); + + on("save_data", [this](const ftl::config::Event &e) { + save_data_ = value("save_data", false); + }); } File::~File() { @@ -102,7 +113,7 @@ bool File::post(const ftl::codecs::StreamPacket &s, const ftl::codecs::Packet &p // Discard all data channel packets for now // TODO: Allow saving of data channels once formats have solidified. - if (static_cast<int>(s.channel) >= static_cast<int>(ftl::codecs::Channel::Data)) return true; + if (!save_data_ && static_cast<int>(s.channel) >= static_cast<int>(ftl::codecs::Channel::Data)) return true; ftl::codecs::StreamPacket s2 = s; // Adjust timestamp relative to start of file. -- GitLab