#pragma once
#include <common/memory.h>
+#include <common/future_fwd.h>
#include <core/monitor/monitor.h>
namespace core {
class video_channel;
+ class thumbnail_generator;
+ struct media_info_repository;
+ class system_info_provider_repository;
+ class cg_producer_registry;
}
-class server sealed : public monitor::observable
- , boost::noncopyable
+class server final : public boost::noncopyable
{
public:
- server();
+ explicit server(std::promise<bool>& shutdown_server_now);
+ void start();
const std::vector<spl::shared_ptr<core::video_channel>> channels() const;
+ std::shared_ptr<core::thumbnail_generator> get_thumbnail_generator() const;
+ spl::shared_ptr<core::media_info_repository> get_media_info_repo() const;
+ spl::shared_ptr<core::system_info_provider_repository> get_system_info_provider_repo() const;
+ spl::shared_ptr<core::cg_producer_registry> get_cg_registry() const;
- // monitor::observable
-
- 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_;