Move server code into library; Server -> ServerDescription.
authorCarl Hetherington <cth@carlh.net>
Mon, 17 Sep 2012 21:50:47 +0000 (22:50 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 17 Sep 2012 21:50:47 +0000 (22:50 +0100)
16 files changed:
src/lib/config.cc
src/lib/config.h
src/lib/dcp_video_frame.cc
src/lib/dcp_video_frame.h
src/lib/j2k_wav_encoder.cc
src/lib/j2k_wav_encoder.h
src/lib/log.h
src/lib/server.cc
src/lib/server.h
src/tools/servomatic.cc [deleted file]
src/tools/servomatic_cli.cc [new file with mode: 0644]
src/tools/wscript
src/wx/config_dialog.cc
src/wx/config_dialog.h
src/wx/server_dialog.cc
src/wx/server_dialog.h

index 53674645d864abea3a988852c7ccce84707a29f3..44d110689352e5b81c92305bceb078690c608182 100644 (file)
@@ -76,7 +76,7 @@ Config::Config ()
                } else if (k == "reference_filter") {
                        _reference_filters.push_back (Filter::from_id (v));
                } else if (k == "server") {
-                       _servers.push_back (Server::create_from_metadata (v));
+                       _servers.push_back (ServerDescription::create_from_metadata (v));
                } else if (k == "screen") {
                        _screens.push_back (Screen::create_from_metadata (v));
                } else if (k == "tms_ip") {
@@ -131,7 +131,7 @@ Config::write () const
                f << "reference_filter " << (*i)->id () << "\n";
        }
        
-       for (vector<Server*>::const_iterator i = _servers.begin(); i != _servers.end(); ++i) {
+       for (vector<ServerDescription*>::const_iterator i = _servers.begin(); i != _servers.end(); ++i) {
                f << "server " << (*i)->as_metadata () << "\n";
        }
 
index 14b541ee69563cfdf43ec2a2491b3c31914d0cf4..b002da7df3978eba94a9e0020870502092f4db40 100644 (file)
@@ -28,7 +28,7 @@
 #include <boost/shared_ptr.hpp>
 #include <sigc++/signal.h>
 
-class Server;
+class ServerDescription;
 class Screen;
 class Scaler;
 class Filter;
@@ -65,7 +65,7 @@ public:
        }
 
        /** @return J2K encoding servers to use */
-       std::vector<Server*> servers () const {
+       std::vector<ServerDescription*> servers () const {
                return _servers;
        }
 
@@ -126,7 +126,7 @@ public:
        }
 
        /** @param s New list of servers */
-       void set_servers (std::vector<Server*> s) {
+       void set_servers (std::vector<ServerDescription*> s) {
                _servers = s;
                Changed ();
        }
@@ -188,7 +188,7 @@ private:
        int _j2k_bandwidth;
 
        /** J2K encoding servers to use */
-       std::vector<Server *> _servers;
+       std::vector<ServerDescription *> _servers;
 
        /** Screen definitions */
        std::vector<boost::shared_ptr<Screen> > _screens;
index 24cdda2e6031dd6e6c670c8a94cbe3e168fff1db..91c4415430f1b3f376c08c5e28a4abd3dd8a8057 100644 (file)
@@ -289,7 +289,7 @@ DCPVideoFrame::encode_locally ()
  *  @return Encoded data.
  */
 shared_ptr<EncodedData>
-DCPVideoFrame::encode_remotely (Server const * serv)
+DCPVideoFrame::encode_remotely (ServerDescription const * serv)
 {
        asio::io_service io_service;
        asio::ip::tcp::resolver resolver (io_service);
index 464d4851550430b1234fb430b169f78ed9a17ad9..ee54bc0f5e5dbe8dac06e8eb00f4c3b66241eae2 100644 (file)
@@ -27,7 +27,7 @@
 
 class FilmState;
 class Options;
-class Server;
+class ServerDescription;
 class Scaler;
 class Image;
 class Log;
@@ -113,7 +113,7 @@ public:
        virtual ~DCPVideoFrame ();
 
        boost::shared_ptr<EncodedData> encode_locally ();
-       boost::shared_ptr<EncodedData> encode_remotely (Server const *);
+       boost::shared_ptr<EncodedData> encode_remotely (ServerDescription const *);
 
        int frame () const {
                return _frame;
index 2f29f9021d2ba7561e53bb8406df0f5c35f6ba1a..ff450d1ad21e218efaec34ebddb7286951248acd 100644 (file)
@@ -130,7 +130,7 @@ J2KWAVEncoder::process_video (shared_ptr<Image> yuv, int frame)
 }
 
 void
-J2KWAVEncoder::encoder_thread (Server* server)
+J2KWAVEncoder::encoder_thread (ServerDescription* server)
 {
        /* Number of seconds that we currently wait between attempts
           to connect to the server; not relevant for localhost
@@ -210,12 +210,12 @@ void
 J2KWAVEncoder::process_begin ()
 {
        for (int i = 0; i < Config::instance()->num_local_encoding_threads (); ++i) {
-               _worker_threads.push_back (new boost::thread (boost::bind (&J2KWAVEncoder::encoder_thread, this, (Server *) 0)));
+               _worker_threads.push_back (new boost::thread (boost::bind (&J2KWAVEncoder::encoder_thread, this, (ServerDescription *) 0)));
        }
 
-       vector<Server*> servers = Config::instance()->servers ();
+       vector<ServerDescription*> servers = Config::instance()->servers ();
 
-       for (vector<Server*>::iterator i = servers.begin(); i != servers.end(); ++i) {
+       for (vector<ServerDescription*>::iterator i = servers.begin(); i != servers.end(); ++i) {
                for (int j = 0; j < (*i)->threads (); ++j) {
                        _worker_threads.push_back (new boost::thread (boost::bind (&J2KWAVEncoder::encoder_thread, this, *i)));
                }
index 656af8321321940471f84ef2731724c59c6fa9ca..1c2f5006590028aa503876c507173787dcd21f58 100644 (file)
@@ -29,7 +29,7 @@
 #include <sndfile.h>
 #include "encoder.h"
 
-class Server;
+class ServerDescription;
 class DCPVideoFrame;
 class Image;
 class Log;
@@ -50,7 +50,7 @@ public:
 
 private:       
 
-       void encoder_thread (Server *);
+       void encoder_thread (ServerDescription *);
        void close_sound_files ();
        void terminate_worker_threads ();
 
index d4de8ebde6ff466110b2b49ae67e51ab6ae6c6c9..d32b368f5a2ed202c3b62658a51c79956bfc8546 100644 (file)
@@ -17,6 +17,9 @@
 
 */
 
+#ifndef DVDOMATIC_LOG_H
+#define DVDOMATIC_LOG_H
+
 /** @file src/log.h
  *  @brief A very simple logging class.
  */
@@ -53,3 +56,5 @@ private:
        /** level above which to ignore log messages */
        Level _level;
 };
+
+#endif
index 8a5b5cfca604564aadaf5abe0531060d052800f3..f4aaa25e128ec193c3c49939bd4419ef1e11997e 100644 (file)
@@ -19,7 +19,7 @@
 
 /** @file src/server.cc
  *  @brief Class to describe a server to which we can send
- *  encoding work.
+ *  encoding work, and a class to implement such a server.
  */
 
 #include <string>
 #include <sstream>
 #include <boost/algorithm/string.hpp>
 #include "server.h"
+#include "util.h"
+#include "scaler.h"
+#include "image.h"
+#include "dcp_video_frame.h"
+#include "config.h"
 
 using namespace std;
 using namespace boost;
 
-/** Create a server from a string of metadata returned from as_metadata().
+/** Create a server description from a string of metadata returned from as_metadata().
  *  @param v Metadata.
- *  @return Server, or 0.
+ *  @return ServerDescription, or 0.
  */
-Server *
-Server::create_from_metadata (string v)
+ServerDescription *
+ServerDescription::create_from_metadata (string v)
 {
        vector<string> b;
        split (b, v, is_any_of (" "));
@@ -45,14 +50,158 @@ Server::create_from_metadata (string v)
                return 0;
        }
 
-       return new Server (b[0], atoi (b[1].c_str ()));
+       return new ServerDescription (b[0], atoi (b[1].c_str ()));
 }
 
 /** @return Description of this server as text */
 string
-Server::as_metadata () const
+ServerDescription::as_metadata () const
 {
        stringstream s;
        s << _host_name << " " << _threads;
        return s.str ();
 }
+
+Server::Server ()
+       : _log ("servomatic.log")
+{
+
+}
+
+int
+Server::process (shared_ptr<asio::ip::tcp::socket> socket)
+{
+       SocketReader reader (socket);
+       
+       char buffer[128];
+       reader.read_indefinite ((uint8_t *) buffer, sizeof (buffer));
+       reader.consume (strlen (buffer) + 1);
+       
+       stringstream s (buffer);
+       
+       string command;
+       s >> command;
+       if (command != "encode") {
+               return -1;
+       }
+       
+       Size in_size;
+       int pixel_format_int;
+       Size out_size;
+       int padding;
+       string scaler_id;
+       int frame;
+       float frames_per_second;
+       string post_process;
+       int colour_lut_index;
+       int j2k_bandwidth;
+       
+       s >> in_size.width >> in_size.height
+         >> pixel_format_int
+         >> out_size.width >> out_size.height
+         >> padding
+         >> scaler_id
+         >> frame
+         >> frames_per_second
+         >> post_process
+         >> colour_lut_index
+         >> j2k_bandwidth;
+       
+       PixelFormat pixel_format = (PixelFormat) pixel_format_int;
+       Scaler const * scaler = Scaler::from_id (scaler_id);
+       if (post_process == "none") {
+               post_process = "";
+       }
+       
+       shared_ptr<SimpleImage> image (new SimpleImage (pixel_format, in_size));
+       
+       for (int i = 0; i < image->components(); ++i) {
+               int line_size;
+               s >> line_size;
+               image->set_line_size (i, line_size);
+       }
+       
+       for (int i = 0; i < image->components(); ++i) {
+               reader.read_definite_and_consume (image->data()[i], image->line_size()[i] * image->lines(i));
+       }
+       
+#ifdef DEBUG_HASH
+       image->hash ("Image for encoding (as received by server)");
+#endif         
+       
+       DCPVideoFrame dcp_video_frame (image, out_size, padding, scaler, frame, frames_per_second, post_process, colour_lut_index, j2k_bandwidth, &_log);
+       shared_ptr<EncodedData> encoded = dcp_video_frame.encode_locally ();
+       encoded->send (socket);
+
+#ifdef DEBUG_HASH
+       encoded->hash ("Encoded image (as made by server and as sent back)");
+#endif         
+       
+       return frame;
+}
+
+void
+Server::worker_thread ()
+{
+       while (1) {
+               mutex::scoped_lock lock (_worker_mutex);
+               while (_queue.empty ()) {
+                       _worker_condition.wait (lock);
+               }
+
+               shared_ptr<asio::ip::tcp::socket> socket = _queue.front ();
+               _queue.pop_front ();
+               
+               lock.unlock ();
+
+               int frame = -1;
+
+               struct timeval start;
+               gettimeofday (&start, 0);
+               
+               try {
+                       frame = process (socket);
+               } catch (std::exception& e) {
+                       cerr << "Error: " << e.what() << "\n";
+               }
+               
+               socket.reset ();
+               
+               lock.lock ();
+
+               if (frame >= 0) {
+                       struct timeval end;
+                       gettimeofday (&end, 0);
+                       cout << "Encoded frame " << frame << " in " << (seconds (end) - seconds (start)) << "\n";
+               }
+               
+               _worker_condition.notify_all ();
+       }
+}
+
+void
+Server::run ()
+{
+       int const num_threads = Config::instance()->num_local_encoding_threads ();
+       
+       for (int i = 0; i < num_threads; ++i) {
+               _worker_threads.push_back (new thread (bind (&Server::worker_thread, this)));
+       }
+       
+       asio::io_service io_service;
+       asio::ip::tcp::acceptor acceptor (io_service, asio::ip::tcp::endpoint (asio::ip::tcp::v4(), Config::instance()->server_port ()));
+       while (1) {
+               shared_ptr<asio::ip::tcp::socket> socket (new asio::ip::tcp::socket (io_service));
+               acceptor.accept (*socket);
+
+               mutex::scoped_lock lock (_worker_mutex);
+               
+               /* Wait until the queue has gone down a bit */
+               while (int (_queue.size()) >= num_threads * 2) {
+                       _worker_condition.wait (lock);
+               }
+               
+               _queue.push_back (socket);
+               _worker_condition.notify_all ();
+       }
+}
index d06df34e9e649dd84d49a85dc6472f6c5cf2b87a..8c0f86ebbe5360631df40d16072a4e7871a609c0 100644 (file)
 
 /** @file src/server.h
  *  @brief Class to describe a server to which we can send
- *  encoding work.
+ *  encoding work, and a class to implement such a server.
  */
 
 #include <string>
+#include <boost/thread.hpp>
+#include <boost/asio.hpp>
+#include <boost/thread/condition.hpp>
+#include "log.h"
 
-/** @class Server
+/** @class ServerDescription
  *  @brief Class to describe a server to which we can send encoding work.
  */
-class Server
+class ServerDescription
 {
 public:
        /** @param h Server host name or IP address in string form.
         *  @param t Number of threads to use on the server.
         */
-       Server (std::string h, int t)
+       ServerDescription (std::string h, int t)
                : _host_name (h)
                , _threads (t)
        {}
@@ -58,7 +62,7 @@ public:
 
        std::string as_metadata () const;
        
-       static Server * create_from_metadata (std::string v);
+       static ServerDescription * create_from_metadata (std::string v);
 
 private:
        /** server's host name */
@@ -66,3 +70,21 @@ private:
        /** number of threads to use on the server */
        int _threads;
 };
+
+class Server
+{
+public:
+       Server ();
+
+       void run ();
+
+private:
+       void worker_thread ();
+       int process (boost::shared_ptr<boost::asio::ip::tcp::socket> socket);
+       
+       std::vector<boost::thread *> _worker_threads;
+       std::list<boost::shared_ptr<boost::asio::ip::tcp::socket> > _queue;
+       boost::mutex _worker_mutex;
+       boost::condition _worker_condition;
+       Log _log;
+};
diff --git a/src/tools/servomatic.cc b/src/tools/servomatic.cc
deleted file mode 100644 (file)
index a9c45b3..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
-    Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#include <iostream>
-#include <stdexcept>
-#include <sstream>
-#include <cstring>
-#include <vector>
-#include <unistd.h>
-#include <errno.h>
-#include <boost/array.hpp>
-#include <boost/asio.hpp>
-#include <boost/algorithm/string.hpp>
-#include <boost/thread.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition.hpp>
-#include "config.h"
-#include "dcp_video_frame.h"
-#include "exceptions.h"
-#include "util.h"
-#include "config.h"
-#include "scaler.h"
-#include "image.h"
-#include "log.h"
-
-#define BACKLOG 8
-
-using namespace std;
-using namespace boost;
-
-static vector<thread *> worker_threads;
-
-static std::list<shared_ptr<asio::ip::tcp::socket> > queue;
-static mutex worker_mutex;
-static condition worker_condition;
-static Log log_ ("servomatic.log");
-
-int
-process (shared_ptr<asio::ip::tcp::socket> socket)
-{
-       SocketReader reader (socket);
-       
-       char buffer[128];
-       reader.read_indefinite ((uint8_t *) buffer, sizeof (buffer));
-       reader.consume (strlen (buffer) + 1);
-       
-       stringstream s (buffer);
-       
-       string command;
-       s >> command;
-       if (command != "encode") {
-               return -1;
-       }
-       
-       Size in_size;
-       int pixel_format_int;
-       Size out_size;
-       int padding;
-       string scaler_id;
-       int frame;
-       float frames_per_second;
-       string post_process;
-       int colour_lut_index;
-       int j2k_bandwidth;
-       
-       s >> in_size.width >> in_size.height
-         >> pixel_format_int
-         >> out_size.width >> out_size.height
-         >> padding
-         >> scaler_id
-         >> frame
-         >> frames_per_second
-         >> post_process
-         >> colour_lut_index
-         >> j2k_bandwidth;
-       
-       PixelFormat pixel_format = (PixelFormat) pixel_format_int;
-       Scaler const * scaler = Scaler::from_id (scaler_id);
-       if (post_process == "none") {
-               post_process = "";
-       }
-       
-       shared_ptr<SimpleImage> image (new SimpleImage (pixel_format, in_size));
-       
-       for (int i = 0; i < image->components(); ++i) {
-               int line_size;
-               s >> line_size;
-               image->set_line_size (i, line_size);
-       }
-       
-       for (int i = 0; i < image->components(); ++i) {
-               reader.read_definite_and_consume (image->data()[i], image->line_size()[i] * image->lines(i));
-       }
-       
-#ifdef DEBUG_HASH
-       image->hash ("Image for encoding (as received by server)");
-#endif         
-       
-       DCPVideoFrame dcp_video_frame (image, out_size, padding, scaler, frame, frames_per_second, post_process, colour_lut_index, j2k_bandwidth, &log_);
-       shared_ptr<EncodedData> encoded = dcp_video_frame.encode_locally ();
-       encoded->send (socket);
-
-#ifdef DEBUG_HASH
-       encoded->hash ("Encoded image (as made by server and as sent back)");
-#endif         
-       
-       return frame;
-}
-
-void
-worker_thread ()
-{
-       while (1) {
-               mutex::scoped_lock lock (worker_mutex);
-               while (queue.empty ()) {
-                       worker_condition.wait (lock);
-               }
-
-               shared_ptr<asio::ip::tcp::socket> socket = queue.front ();
-               queue.pop_front ();
-               
-               lock.unlock ();
-
-               int frame = -1;
-
-               struct timeval start;
-               gettimeofday (&start, 0);
-               
-               try {
-                       frame = process (socket);
-               } catch (std::exception& e) {
-                       cerr << "Error: " << e.what() << "\n";
-               }
-               
-               socket.reset ();
-               
-               lock.lock ();
-
-               if (frame >= 0) {
-                       struct timeval end;
-                       gettimeofday (&end, 0);
-                       cout << "Encoded frame " << frame << " in " << (seconds (end) - seconds (start)) << "\n";
-               }
-               
-               worker_condition.notify_all ();
-       }
-}
-
-int
-main ()
-{
-       Scaler::setup_scalers ();
-
-       int const num_threads = Config::instance()->num_local_encoding_threads ();
-       
-       for (int i = 0; i < num_threads; ++i) {
-               worker_threads.push_back (new thread (worker_thread));
-       }
-       
-       asio::io_service io_service;
-       asio::ip::tcp::acceptor acceptor (io_service, asio::ip::tcp::endpoint (asio::ip::tcp::v4(), Config::instance()->server_port ()));
-       while (1) {
-               shared_ptr<asio::ip::tcp::socket> socket (new asio::ip::tcp::socket (io_service));
-               acceptor.accept (*socket);
-
-               mutex::scoped_lock lock (worker_mutex);
-               
-               /* Wait until the queue has gone down a bit */
-               while (int (queue.size()) >= num_threads * 2) {
-                       worker_condition.wait (lock);
-               }
-               
-               queue.push_back (socket);
-               worker_condition.notify_all ();
-       }
-       
-       return 0;
-}
diff --git a/src/tools/servomatic_cli.cc b/src/tools/servomatic_cli.cc
new file mode 100644 (file)
index 0000000..1fcd021
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+    Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include "lib/server.h"
+#include <iostream>
+#include <stdexcept>
+#include <sstream>
+#include <cstring>
+#include <vector>
+#include <unistd.h>
+#include <errno.h>
+#include <boost/array.hpp>
+#include <boost/asio.hpp>
+#include <boost/algorithm/string.hpp>
+#include <boost/thread.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/condition.hpp>
+#include "config.h"
+#include "dcp_video_frame.h"
+#include "exceptions.h"
+#include "util.h"
+#include "config.h"
+#include "scaler.h"
+#include "image.h"
+#include "log.h"
+
+int
+main ()
+{
+       Scaler::setup_scalers ();
+       Server server;
+       server.run ();
+       return 0;
+}
index be3d44e6dddfc2786a1440b87fe5bd336d6d1968..ff7134d15ee96aa86fad62e77fc90e018632840f 100644 (file)
@@ -1,5 +1,5 @@
 def build(bld):
-    for t in ['makedcp', 'fixlengths', 'servomatic']:
+    for t in ['makedcp', 'fixlengths', 'servomatic_cli']:
         obj = bld(features = 'cxx cxxprogram')
        obj.uselib = 'BOOST_THREAD'
        obj.includes = ['..']
index b87f912b80fa38454cb4faa7db31884e94f3a754..c53eeddf0e4e395d4b40fd60e48f6bce172c8aea 100644 (file)
@@ -155,8 +155,8 @@ ConfigDialog::ConfigDialog (wxWindow* parent)
        _reference_filters->SetLabel (std_to_wx (p.first + " " + p.second));
        _reference_filters_button->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ConfigDialog::edit_reference_filters_clicked), 0, this);
 
-       vector<Server*> servers = config->servers ();
-       for (vector<Server*>::iterator i = servers.begin(); i != servers.end(); ++i) {
+       vector<ServerDescription*> servers = config->servers ();
+       for (vector<ServerDescription*>::iterator i = servers.begin(); i != servers.end(); ++i) {
                add_server_to_control (*i);
        }
        
@@ -225,7 +225,7 @@ ConfigDialog::j2k_bandwidth_changed (wxCommandEvent &)
 }
 
 void
-ConfigDialog::add_server_to_control (Server* s)
+ConfigDialog::add_server_to_control (ServerDescription* s)
 {
        wxListItem item;
        int const n = _servers->GetItemCount ();
@@ -240,11 +240,11 @@ ConfigDialog::add_server_clicked (wxCommandEvent &)
 {
        ServerDialog* d = new ServerDialog (this, 0);
        d->ShowModal ();
-       Server* s = d->server ();
+       ServerDescription* s = d->server ();
        d->Destroy ();
        
        add_server_to_control (s);
-       vector<Server*> o = Config::instance()->servers ();
+       vector<ServerDescription*> o = Config::instance()->servers ();
        o.push_back (s);
        Config::instance()->set_servers (o);
 }
@@ -262,8 +262,8 @@ ConfigDialog::edit_server_clicked (wxCommandEvent &)
        item.SetColumn (0);
        _servers->GetItem (item);
 
-       vector<Server*> servers = Config::instance()->servers ();
-       vector<Server*>::iterator j = servers.begin();
+       vector<ServerDescription*> servers = Config::instance()->servers ();
+       vector<ServerDescription*>::iterator j = servers.begin();
        while (j != servers.end() && (*j)->host_name() != wx_to_std (item.GetText ())) {
                ++j;
        }
index c9ca8034faf4dd069d58716c802792af30c44491..b1d3eb84d8f118d9eb4c12e8f5481ae6cd8d3fc5 100644 (file)
@@ -26,7 +26,7 @@
 #include <wx/listctrl.h>
 
 class Screen;
-class Server;
+class ServerDescription;
 
 /** @class ConfigDialog
  *  @brief A dialogue to edit DVD-o-matic configuration.
@@ -52,7 +52,7 @@ private:
        void remove_server_clicked (wxCommandEvent &);
        void server_selection_changed (wxListEvent &);
 
-       void add_server_to_control (Server *);
+       void add_server_to_control (ServerDescription *);
        
        wxTextCtrl* _tms_ip;
        wxTextCtrl* _tms_path;
index 0ae34b1fcac3888ddc2d4da2feda6ce71d052139..ad0f7a567e7fcab00c1f46d6d56129a7f6587806 100644 (file)
 #include "server_dialog.h"
 #include "wx_util.h"
 
-ServerDialog::ServerDialog (wxWindow* parent, Server* server)
+ServerDialog::ServerDialog (wxWindow* parent, ServerDescription* server)
        : wxDialog (parent, wxID_ANY, wxString (_("Server")))
 {
        if (server) {
                _server = server;
        } else {
-               _server = new Server ("localhost", 1);
+               _server = new ServerDescription ("localhost", 1);
        }
                
        wxFlexGridSizer* table = new wxFlexGridSizer (2, 4, 4);
@@ -73,7 +73,7 @@ ServerDialog::threads_changed (wxCommandEvent &)
        _server->set_threads (_threads->GetValue ());
 }
 
-Server *
+ServerDescription *
 ServerDialog::server () const
 {
        return _server;
index 05630c377bf416ded597e32bc14f208206269c93..0912fd60f19291a866b57cc5456320d9f7e24e00 100644 (file)
 #include <wx/wx.h>
 #include <wx/spinctrl.h>
 
-class Server;
+class ServerDescription;
 
 class ServerDialog : public wxDialog
 {
 public:
-       ServerDialog (wxWindow *, Server *);
+       ServerDialog (wxWindow *, ServerDescription *);
 
-       Server* server () const;
+       ServerDescription* server () const;
 
 private:
        void host_changed (wxCommandEvent &);
        void threads_changed (wxCommandEvent &);
 
-       Server* _server;
+       ServerDescription* _server;
        wxTextCtrl* _host;
        wxSpinCtrl* _threads;
 };