diff --git a/components/streams/include/ftl/streams/netstream.hpp b/components/streams/include/ftl/streams/netstream.hpp index dea74c99d22d1bb5ea73d97aae7a679d926c6d5f..85edde6cfa7530bf93e70e3c15a0583e8c8da590 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 2cc74b6361e5f13466ea14aeeac2fe7576c3df9e..2cfc57bb31d71cff17e322c36ec46960796ef13b 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 9217e2fbc4d53556479bba1e99dd940797fec6e5..63b23abb0a2a7d7684d2a7d8bc70763d696109dd 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();