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