X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fencode_server_finder.h;h=f8a30af54b295f9a3d6906bd5ab3b878ee6fe805;hb=26866fdeba6dd868b1809de49799690555164f70;hp=c639dfe3bf3aabdd641ee4295348699ca7cd2b0d;hpb=57d00c880094b1dfebaee18f4ecafb1dd44b0afb;p=dcpomatic.git diff --git a/src/lib/encode_server_finder.h b/src/lib/encode_server_finder.h index c639dfe3b..f8a30af54 100644 --- a/src/lib/encode_server_finder.h +++ b/src/lib/encode_server_finder.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2015 Carl Hetherington + Copyright (C) 2013-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,19 +18,32 @@ */ + /** @file src/lib/encode_server_finder.h * @brief EncodeServerFinder class. */ -#include "signaller.h" -#include "encode_server_description.h" + #include "config.h" +#include "encode_server_description.h" #include "exception_store.h" +#include "signaller.h" #include #include + class Socket; + +/** @class EncodeServerFinder + * @brief Locater of encoding servers. + * + * This class finds active (i.e. responding) encode servers. Depending on + * configuration it finds servers by: + * + * 1. broadcasting a request to the local subnet and + * 2. checking to see if any of the configured server hosts are up. + */ class EncodeServerFinder : public Signaller, public ExceptionStore { public: @@ -53,26 +66,29 @@ private: void search_thread (); void listen_thread (); - bool server_found (std::string) const; void start_accept (); - void handle_accept (boost::system::error_code ec, boost::shared_ptr socket); + void handle_accept (boost::system::error_code ec); void config_changed (Config::Property what); /** Thread to periodically issue broadcasts and requests to find encoding servers */ - boost::thread* _search_thread; + boost::thread _search_thread; /** Thread to listen to the responses from servers */ - boost::thread* _listen_thread; + boost::thread _listen_thread; + /** Available servers */ std::list _servers; + /** Mutex for _servers */ mutable boost::mutex _servers_mutex; boost::asio::io_service _listen_io_service; - boost::shared_ptr _listen_acceptor; + std::shared_ptr _listen_acceptor; bool _stop; boost::condition _search_condition; boost::mutex _search_condition_mutex; + std::shared_ptr _accept_socket; + static EncodeServerFinder* _instance; };