Use dcp::file_to_string().
[dcpomatic.git] / src / lib / copy_to_drive_job.cc
index 0fb41f85642cb3a6fa26929376c4080f2ad51adb..9ddedfe62dfc8c946f38a1fd7a65755bf8bccd7d 100644 (file)
@@ -37,7 +37,7 @@
 using std::string;
 using std::cout;
 using std::min;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
 using dcp::raw_convert;
 
@@ -53,7 +53,7 @@ CopyToDriveJob::CopyToDriveJob (boost::filesystem::path dcp, Drive drive, Nanoms
 string
 CopyToDriveJob::name () const
 {
-       return String::compose (_("Copying %1 to %2"), _dcp.filename().string(), _drive.description());
+       return String::compose (_("Copying %1\nto %2"), _dcp.filename().string(), _drive.description());
 }
 
 string
@@ -67,6 +67,7 @@ CopyToDriveJob::run ()
 {
        LOG_DISK("Sending write request to disk writer for %1 %2", _dcp.string(), _drive.device());
        if (!_nanomsg.send(String::compose(DISK_WRITER_WRITE "\n%1\n%2\n", _dcp.string(), _drive.device()), 2000)) {
+               LOG_DISK_NC("Failed to send write request.");
                throw CommunicationFailedError ();
        }
 
@@ -86,19 +87,24 @@ CopyToDriveJob::run ()
                        set_state (FINISHED_OK);
                        return;
                } else if (*s == DISK_WRITER_ERROR) {
-                       optional<string> const m = _nanomsg.receive (500);
-                       optional<string> const n = _nanomsg.receive (500);
+                       auto const m = _nanomsg.receive (500);
+                       auto const n = _nanomsg.receive (500);
                        throw CopyError (m.get_value_or("Unknown"), raw_convert<int>(n.get_value_or("0")));
-               } else if (*s == DISK_WRITER_FORMATTING) {
-                       sub (_("Formatting drive"));
-                       set_progress_unknown ();
-                       state = FORMAT;
+               } else if (*s == DISK_WRITER_FORMAT_PROGRESS) {
+                       if (state == SETUP) {
+                               sub (_("Formatting drive"));
+                               state = FORMAT;
+                       }
+                       auto progress = _nanomsg.receive (500);
+                       if (progress) {
+                               set_progress (raw_convert<float>(*progress));
+                       }
                } else if (*s == DISK_WRITER_COPY_PROGRESS) {
                        if (state == FORMAT) {
                                sub (_("Copying DCP"));
                                state = COPY;
                        }
-                       optional<string> progress = _nanomsg.receive (500);
+                       auto progress = _nanomsg.receive (500);
                        if (progress) {
                                set_progress (raw_convert<float>(*progress));
                        }
@@ -107,7 +113,7 @@ CopyToDriveJob::run ()
                                sub (_("Verifying copied files"));
                                state = VERIFY;
                        }
-                       optional<string> progress = _nanomsg.receive (500);
+                       auto progress = _nanomsg.receive (500);
                        if (progress) {
                                set_progress (raw_convert<float>(*progress));
                        }