Barely-functioning GL playback with new arrangement.
[dcpomatic.git] / src / lib / encode_server_description.h
index 2ff1b80f1f01d97e798b7404dee5ab3f60e871f4..f60051b85fcd9a06c7b98348f2ed20bc0b0ae50e 100644 (file)
@@ -1,25 +1,29 @@
 /*
     Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
 
-    This program is free software; you can redistribute it and/or modify
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic 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,
+    DCP-o-matic 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.
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
 
 */
 
 #ifndef DCPOMATIC_ENCODE_SERVER_DESCRIPTION_H
 #define DCPOMATIC_ENCODE_SERVER_DESCRIPTION_H
 
+#include "types.h"
+#include <boost/date_time/posix_time/posix_time.hpp>
+
 /** @class EncodeServerDescription
  *  @brief Class to describe a server to which we can send encoding work.
  */
@@ -29,14 +33,19 @@ public:
        EncodeServerDescription ()
                : _host_name ("")
                , _threads (1)
+               , _link_version (0)
+               , _last_seen (boost::posix_time::second_clock::local_time())
        {}
 
        /** @param h Server host name or IP address in string form.
         *  @param t Number of threads to use on the server.
+        *  @param l Server link version number of the server.
         */
-       EncodeServerDescription (std::string h, int t)
+       EncodeServerDescription (std::string h, int t, int l)
                : _host_name (h)
                , _threads (t)
+               , _link_version (l)
+               , _last_seen (boost::posix_time::second_clock::local_time())
        {}
 
        /* Default copy constructor is fine */
@@ -51,6 +60,10 @@ public:
                return _threads;
        }
 
+       bool current_link_version () const {
+               return _link_version == SERVER_LINK_VERSION;
+       }
+
        void set_host_name (std::string n) {
                _host_name = n;
        }
@@ -59,11 +72,22 @@ public:
                _threads = t;
        }
 
+       void set_seen () {
+               _last_seen = boost::posix_time::second_clock::local_time();
+       }
+
+       int last_seen_seconds () const {
+               return boost::posix_time::time_duration(boost::posix_time::second_clock::local_time() - _last_seen).total_seconds();
+       }
+
 private:
        /** server's host name */
        std::string _host_name;
        /** number of threads to use on the server */
        int _threads;
+       /** server link (i.e. protocol) version number */
+       int _link_version;
+       boost::posix_time::ptime _last_seen;
 };
 
 #endif