X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fserver.h;h=97bc26fd896b130d777426a41c680e1a58ca1bbc;hb=1ad291db7e847fbb71e5bd9f2f81db6bfb2a022e;hp=9f3e99f9cbe577c20c7c07bedccbe0d7298f8c07;hpb=e6c67f4aac2ca9afc275b6f13058e1e46f2cecc3;p=dcpomatic.git diff --git a/src/lib/server.h b/src/lib/server.h index 9f3e99f9c..97bc26fd8 100644 --- a/src/lib/server.h +++ b/src/lib/server.h @@ -21,71 +21,22 @@ #define DCPOMATIC_SERVER_H /** @file src/server.h - * @brief Class to describe a server to which we can send - * encoding work, and a class to implement such a server. + * @brief Server class. */ -#include +#include "exception_store.h" #include #include #include -#include -#include -#include "log.h" -#include "exceptions.h" +#include class Socket; +class Log; -namespace cxml { - class Node; -} - -/** @class ServerDescription - * @brief Class to describe a server to which we can send encoding work. +/** @class Server + * @brief A class to run a server which can accept requests to perform JPEG2000 + * encoding work. */ -class ServerDescription -{ -public: - ServerDescription () - : _host_name ("") - , _threads (1) - {} - - /** @param h Server host name or IP address in string form. - * @param t Number of threads to use on the server. - */ - ServerDescription (std::string h, int t) - : _host_name (h) - , _threads (t) - {} - - /* Default copy constructor is fine */ - - /** @return server's host name or IP address in string form */ - std::string host_name () const { - return _host_name; - } - - /** @return number of threads to use on the server */ - int threads () const { - return _threads; - } - - void set_host_name (std::string n) { - _host_name = n; - } - - void set_threads (int t) { - _threads = t; - } - -private: - /** server's host name */ - std::string _host_name; - /** number of threads to use on the server */ - int _threads; -}; - class Server : public ExceptionStore, public boost::noncopyable { public: @@ -107,29 +58,27 @@ private: std::vector _worker_threads; std::list > _queue; boost::mutex _worker_mutex; - boost::condition _worker_condition; - + boost::condition _full_condition; + boost::condition _empty_condition; boost::shared_ptr _log; bool _verbose; boost::asio::io_service _io_service; boost::asio::ip::tcp::acceptor _acceptor; - int _num_threads; - struct Broadcast { Broadcast () : thread (0) , socket (0) {} - + boost::thread* thread; boost::asio::ip::udp::socket* socket; char buffer[64]; boost::asio::ip::udp::endpoint send_endpoint; boost::asio::io_service io_service; - + } _broadcast; };