#pragma once
#include <common/memory.h>
+#include <common/future_fwd.h>
#include <core/monitor/monitor.h>
+#include <core/fwd.h>
#include <boost/noncopyable.hpp>
#include <vector>
-namespace caspar {
+FORWARD3(caspar, protocol, amcp, class amcp_command_repository);
-namespace core {
- class video_channel;
- class thumbnail_generator;
-}
+namespace caspar {
-class server sealed : public monitor::observable
- , boost::noncopyable
+class server final : public boost::noncopyable
{
public:
- server();
- const std::vector<spl::shared_ptr<core::video_channel>> channels() const;
- std::shared_ptr<core::thumbnail_generator> get_thumbnail_generator() const;
- // monitor::observable
+ explicit server(std::promise<bool>& shutdown_server_now);
+ void start();
+ spl::shared_ptr<core::system_info_provider_repository> get_system_info_provider_repo() const;
+ spl::shared_ptr<protocol::amcp::amcp_command_repository> get_amcp_command_repository() const;
- void subscribe(const monitor::observable::observer_ptr& o) override;
- void unsubscribe(const monitor::observable::observer_ptr& o) override;
+ core::monitor::subject& monitor_output();
private:
struct impl;
spl::shared_ptr<impl> impl_;