From c332509c151497d5e18c7404224fe7e6f12eca62 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Tue, 21 Jul 2020 19:42:09 +0300 Subject: [PATCH] Some uri and stream fixes --- components/common/cpp/include/ftl/uri.hpp | 9 ++++++--- components/streams/src/feed.cpp | 5 +++-- components/streams/src/netstream.cpp | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/components/common/cpp/include/ftl/uri.hpp b/components/common/cpp/include/ftl/uri.hpp index 7f549f66a..65ac79a97 100644 --- a/components/common/cpp/include/ftl/uri.hpp +++ b/components/common/cpp/include/ftl/uri.hpp @@ -62,7 +62,8 @@ namespace ftl { template <typename T> T getAttribute(const std::string &key) { - return T(m_qmap[key]); + auto i = m_qmap.find(key); + return (i != m_qmap.end()) ? T(i->second) : T(); } std::string to_string() const; @@ -89,12 +90,14 @@ namespace ftl { template <> inline int URI::getAttribute<int>(const std::string &key) { - return std::stoi(m_qmap[key]); + auto i = m_qmap.find(key); + return (i != m_qmap.end()) ? std::stoi(i->second) : 0; } template <> inline std::string URI::getAttribute<std::string>(const std::string &key) { - return m_qmap[key]; + auto i = m_qmap.find(key); + return (i != m_qmap.end()) ? i->second : ""; } } diff --git a/components/streams/src/feed.cpp b/components/streams/src/feed.cpp index e2215e946..b74385fe9 100644 --- a/components/streams/src/feed.cpp +++ b/components/streams/src/feed.cpp @@ -396,8 +396,9 @@ ftl::operators::Graph* Feed::_addPipeline(uint32_t fsid) { } void Feed::_createPipeline(uint32_t fsid) { - // FIXME: Must not recreate if already exists - + // Don't recreate if already exists + if (pre_pipelines_.count(fsid)) return; + LOG(INFO) << "Creating pipeline"; auto *p = _addPipeline(fsid); diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp index fba498e1b..fe9b7f99f 100644 --- a/components/streams/src/netstream.cpp +++ b/components/streams/src/netstream.cpp @@ -252,6 +252,7 @@ bool Net::begin() { set("name", std::string(hostname)); } + active_ = true; net_->broadcast("add_stream", uri_); return true; -- GitLab