diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 29a36b8146..f718f609b4 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -1,5 +1,7 @@ #include "OrcaCloudServiceAgent.hpp" #include "Http.hpp" +#include "ICameraSignalingChannel.hpp" +#include "OrcaCloudSignalingChannel.hpp" #include "libslic3r/Utils.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "libslic3r/AppConfig.hpp" @@ -3023,6 +3025,9 @@ int OrcaCloudServiceAgent::get_camera_url(std::string dev_id, std::function OrcaCloudServiceAgent::create_camera_signaling_channel(const std::string& dev_id) +{ return std::make_unique(this, dev_id); } + int OrcaCloudServiceAgent::get_design_staffpick(int offset, int limit, std::function callback) { BOOST_LOG_TRIVIAL(debug) << "OrcaCloudServiceAgent: get_design_staffpick (stub)"; diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp index 6fcaaa3c2c..d3649e6bf7 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.hpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.hpp @@ -266,7 +266,7 @@ public: // ICloudServiceAgent Interface Implementation - Model Mall & Publishing // ======================================================================== int get_camera_url(std::string dev_id, std::function callback) override; - // std::unique_ptr create_camera_signaling_channel(const std::string& dev_id) override; + std::unique_ptr create_camera_signaling_channel(const std::string& dev_id) override; int get_design_staffpick(int offset, int limit, std::function callback) override; int start_publish(PublishParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, std::string* out) override; int get_model_publish_url(std::string* url) override; diff --git a/src/slic3r/Utils/OrcaCloudSignalingChannel.cpp b/src/slic3r/Utils/OrcaCloudSignalingChannel.cpp index e5b253feba..ab63450edb 100644 --- a/src/slic3r/Utils/OrcaCloudSignalingChannel.cpp +++ b/src/slic3r/Utils/OrcaCloudSignalingChannel.cpp @@ -18,8 +18,8 @@ namespace Slic3r { -OrcaCloudSignalingChannel::OrcaCloudSignalingChannel(std::shared_ptr cloud, std::string dev_id) - : m_cloud(std::move(cloud)) +OrcaCloudSignalingChannel::OrcaCloudSignalingChannel(OrcaCloudServiceAgent* cloud, std::string dev_id) + : m_cloud(cloud) , m_dev_id(std::move(dev_id)) { } diff --git a/src/slic3r/Utils/OrcaCloudSignalingChannel.hpp b/src/slic3r/Utils/OrcaCloudSignalingChannel.hpp index b87b7400e2..011fafad8e 100644 --- a/src/slic3r/Utils/OrcaCloudSignalingChannel.hpp +++ b/src/slic3r/Utils/OrcaCloudSignalingChannel.hpp @@ -2,6 +2,7 @@ #include "ICameraSignalingChannel.hpp" #include "ICloudServiceAgent.hpp" +#include "OrcaCloudServiceAgent.hpp" #include #include @@ -21,7 +22,7 @@ namespace Slic3r { class OrcaCloudSignalingChannel : public ICameraSignalingChannel { public: - OrcaCloudSignalingChannel(std::shared_ptr cloud, std::string dev_id); + OrcaCloudSignalingChannel(OrcaCloudServiceAgent* cloud, std::string dev_id); ~OrcaCloudSignalingChannel() override; void open() override; @@ -51,7 +52,7 @@ private: static std::string encode_path_component(const std::string& value); static std::string host_without_scheme(std::string value); - std::shared_ptr m_cloud; + OrcaCloudServiceAgent* m_cloud; std::string m_dev_id; std::atomic m_stop{false}; std::atomic m_open{false}; diff --git a/src/slic3r/Utils/OrcaPrinterAgent.cpp b/src/slic3r/Utils/OrcaPrinterAgent.cpp index c44630e1e6..56dedb4944 100644 --- a/src/slic3r/Utils/OrcaPrinterAgent.cpp +++ b/src/slic3r/Utils/OrcaPrinterAgent.cpp @@ -1,5 +1,4 @@ #include "OrcaPrinterAgent.hpp" -#include "OrcaCloudSignalingChannel.hpp" #include "Http.hpp" #include "IPrinterAgent.hpp" #include "NetworkAgentFactory.hpp" @@ -696,14 +695,6 @@ void OrcaPrinterAgent::set_cloud_agent(std::shared_ptr cloud BOOST_LOG_TRIVIAL(info) << "OrcaPrinterAgent::set_cloud_agent: status callback result=" << callback_result; } -std::unique_ptr OrcaPrinterAgent::create_camera_signaling_channel(const std::string& dev_id) -{ - std::lock_guard lock(state_mutex); - if (!m_cloud_agent) - return nullptr; - return std::make_unique(m_cloud_agent, dev_id); -} - // ============================================================================ // Communication // ============================================================================ diff --git a/src/slic3r/Utils/OrcaPrinterAgent.hpp b/src/slic3r/Utils/OrcaPrinterAgent.hpp index 60a25cae7a..9c283f7417 100644 --- a/src/slic3r/Utils/OrcaPrinterAgent.hpp +++ b/src/slic3r/Utils/OrcaPrinterAgent.hpp @@ -36,8 +36,6 @@ public: void set_cloud_agent(std::shared_ptr cloud) override; CameraStreamMode get_camera_stream_mode() const override; std::string get_camera_url() const override; - std::unique_ptr - create_camera_signaling_channel(const std::string& dev_id) override; // Communication int send_message(std::string dev_id, std::string json_str, int qos, int flag) override;