Add some possibly-useful markers for debugging threads from coredumps.
[dcpomatic.git] / src / lib / screen.cc
index 6323708101b6b0ff9f20748d18fc651593c68ba1..8e1e83e36697f0e802d05fafc8b1fd2605cff529 100644 (file)
 #include "film.h"
 #include "cinema.h"
 #include <libxml++/libxml++.h>
-#include <boost/foreach.hpp>
 #include <boost/algorithm/string.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
 
 using std::string;
 using std::vector;
-using boost::shared_ptr;
+using std::list;
+using std::shared_ptr;
 using boost::optional;
 using namespace dcpomatic;
 
 Screen::Screen (cxml::ConstNodePtr node)
-       : name (node->string_child("Name"))
-       , notes (node->optional_string_child("Notes").get_value_or (""))
+       : KDMRecipient (node)
 {
-       if (node->optional_string_child ("Certificate")) {
-               recipient = dcp::Certificate (node->string_child ("Certificate"));
-       } else if (node->optional_string_child ("Recipient")) {
-               recipient = dcp::Certificate (node->string_child ("Recipient"));
-       }
-
-       BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children ("TrustedDevice")) {
+       for (auto i: node->node_children ("TrustedDevice")) {
                if (boost::algorithm::starts_with(i->content(), "-----BEGIN CERTIFICATE-----")) {
                        trusted_devices.push_back (TrustedDevice(dcp::Certificate(i->content())));
                } else {
@@ -55,14 +48,8 @@ Screen::Screen (cxml::ConstNodePtr node)
 void
 Screen::as_xml (xmlpp::Element* parent) const
 {
-       parent->add_child("Name")->add_child_text (name);
-       if (recipient) {
-               parent->add_child("Recipient")->add_child_text (recipient->certificate (true));
-       }
-
-       parent->add_child("Notes")->add_child_text (notes);
-
-       BOOST_FOREACH (TrustedDevice i, trusted_devices) {
+       KDMRecipient::as_xml (parent);
+       for (auto i: trusted_devices) {
                parent->add_child("TrustedDevice")->add_child_text(i.as_string());
        }
 }
@@ -71,44 +58,12 @@ vector<string>
 Screen::trusted_device_thumbprints () const
 {
        vector<string> t;
-       BOOST_FOREACH (TrustedDevice i, trusted_devices) {
+       for (auto i: trusted_devices) {
                t.push_back (i.thumbprint());
        }
        return t;
 }
 
-TrustedDevice::TrustedDevice (string thumbprint)
-       : _thumbprint (thumbprint)
-{
-
-}
-
-TrustedDevice::TrustedDevice (dcp::Certificate certificate)
-       : _certificate (certificate)
-{
-
-}
-
-string
-TrustedDevice::as_string () const
-{
-       if (_certificate) {
-               return _certificate->certificate(true);
-       }
-
-       return *_thumbprint;
-}
-
-string
-TrustedDevice::thumbprint () const
-{
-       if (_certificate) {
-               return _certificate->thumbprint ();
-       }
-
-       return *_thumbprint;
-}
-
 
 KDMWithMetadataPtr
 kdm_for_screen (
@@ -151,6 +106,6 @@ kdm_for_screen (
        name_values['e'] = end.date() + " " + end.time_of_day(true, false);
        name_values['i'] = kdm.cpl_id();
 
-       return KDMWithMetadataPtr(new DCPKDMWithMetadata(name_values, cinema, kdm));
+       return KDMWithMetadataPtr(new KDMWithMetadata(name_values, cinema.get(), cinema ? cinema->emails : list<string>(), kdm));
 }