diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-01-11 16:32:23 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-01-29 20:58:25 +0100 |
| commit | b09eed77ec297dd05c112f4e93d6db5641053fe1 (patch) | |
| tree | ba07376bd6b40b1fd6ed469b2395cdaef0815948 /src/lib | |
| parent | 50314d71c36895cab87c44be772589fafea894f8 (diff) | |
Use DiskWriterBackEndResponse, and add some more information to the unmount error.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/copy_to_drive_job.cc | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/lib/copy_to_drive_job.cc b/src/lib/copy_to_drive_job.cc index c6f9c84b0..9d3a6721a 100644 --- a/src/lib/copy_to_drive_job.cc +++ b/src/lib/copy_to_drive_job.cc @@ -97,44 +97,40 @@ CopyToDriveJob::run () } state = SETUP; while (true) { - optional<string> s = _nanomsg.receive (10000); - if (!s) { + auto response = DiskWriterBackEndResponse::read_from_nanomsg(_nanomsg, 10000); + if (!response) { continue; } - if (*s == DISK_WRITER_OK) { + + switch (response->type()) { + case DiskWriterBackEndResponse::Type::OK: set_state (FINISHED_OK); return; - } else if (*s == DISK_WRITER_ERROR) { - 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_FORMAT_PROGRESS) { + case DiskWriterBackEndResponse::Type::PONG: + break; + case DiskWriterBackEndResponse::Type::ERROR: + throw CopyError(response->error_message(), response->error_number()); + case DiskWriterBackEndResponse::Type::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) { + set_progress(response->progress()); + break; + case DiskWriterBackEndResponse::Type::COPY_PROGRESS: if (state == FORMAT) { sub (_("Copying DCP")); state = COPY; } - auto progress = _nanomsg.receive (500); - if (progress) { - set_progress (raw_convert<float>(*progress)); - } - } else if (*s == DISK_WRITER_VERIFY_PROGRESS) { + set_progress(response->progress()); + break; + case DiskWriterBackEndResponse::Type::VERIFY_PROGRESS: if (state == COPY) { sub (_("Verifying copied files")); state = VERIFY; } - auto progress = _nanomsg.receive (500); - if (progress) { - set_progress (raw_convert<float>(*progress)); - } + set_progress(response->progress()); + break; } } } |
