summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-01-11 16:32:23 +0100
committerCarl Hetherington <cth@carlh.net>2023-01-29 20:58:25 +0100
commitb09eed77ec297dd05c112f4e93d6db5641053fe1 (patch)
treeba07376bd6b40b1fd6ed469b2395cdaef0815948 /src/lib
parent50314d71c36895cab87c44be772589fafea894f8 (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.cc40
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;
}
}
}