From d77533d3e9fd02d49a3444f4b3f114138fcded4c Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Thu, 16 Jan 2020 13:50:08 +0200 Subject: [PATCH] Allow access to netstream peer --- components/streams/include/ftl/streams/netstream.hpp | 2 ++ components/streams/include/ftl/streams/sender.hpp | 3 +++ components/streams/src/sender.cpp | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/components/streams/include/ftl/streams/netstream.hpp b/components/streams/include/ftl/streams/netstream.hpp index dea74c99d..85edde6cf 100644 --- a/components/streams/include/ftl/streams/netstream.hpp +++ b/components/streams/include/ftl/streams/netstream.hpp @@ -56,6 +56,8 @@ class Net : public Stream { bool end() override; bool active() override; + inline const ftl::UUID &getPeer() const { return peer_; } + private: SHARED_MUTEX mutex_; bool active_; diff --git a/components/streams/include/ftl/streams/sender.hpp b/components/streams/include/ftl/streams/sender.hpp index 2cc74b636..2cfc57bb3 100644 --- a/components/streams/include/ftl/streams/sender.hpp +++ b/components/streams/include/ftl/streams/sender.hpp @@ -27,11 +27,14 @@ class Sender : public ftl::Configurable { */ void post(const ftl::rgbd::FrameSet &fs); + //void onStateChange(const std::function<void(ftl::codecs::Channel, int, int)>&); + private: ftl::stream::Stream *stream_; int64_t timestamp_; SHARED_MUTEX mutex_; std::atomic_flag do_inject_; + //std::function<void(ftl::codecs::Channel, int, int)> state_cb_; std::unordered_map<int, ftl::codecs::Encoder*> encoders_; diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp index 9217e2fbc..63b23abb0 100644 --- a/components/streams/src/sender.cpp +++ b/components/streams/src/sender.cpp @@ -21,12 +21,19 @@ Sender::~Sender() { // Delete all encoders } +/*void Sender::onStateChange(const std::function<void(ftl::codecs::Channel,const ftl::rgbd::FrameState&)> &cb) { + if (cb && state_cb_) throw ftl::exception("State change callback already set"); + state_cb_ = cb; +}*/ + void Sender::setStream(ftl::stream::Stream*s) { if (stream_) stream_->onPacket(nullptr); stream_ = s; stream_->onPacket([this](const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet &pkt) { LOG(INFO) << "SENDER REQUEST : " << (int)spkt.channel; + //if (state_cb_) state_cb_(spkt.channel, spkt.streamID, spkt.frame_number); + // Inject state packets //do_inject_ = true; do_inject_.clear(); -- GitLab