diff options
Diffstat (limited to 'forstio/io')
-rw-r--r-- | forstio/io/io.h | 9 | ||||
-rw-r--r-- | forstio/io/io_helpers.cpp | 12 |
2 files changed, 15 insertions, 6 deletions
diff --git a/forstio/io/io.h b/forstio/io/io.h index 4a87da5..bcc59fd 100644 --- a/forstio/io/io.h +++ b/forstio/io/io.h @@ -8,6 +8,15 @@ #include <variant> namespace saw { +/** + * Set of error common in io + */ +namespace err { +struct disconnected { + static constexpr std::string_view description = "Disconnected"; + static constexpr bool is_critical = true; +}; +} /* * Input stream */ diff --git a/forstio/io/io_helpers.cpp b/forstio/io/io_helpers.cpp index 47c5017..c2cf2be 100644 --- a/forstio/io/io_helpers.cpp +++ b/forstio/io/io_helpers.cpp @@ -11,7 +11,7 @@ void read_task_and_step_helper::read_step(input_stream &reader) { error_or<size_t> n_err = reader.read(task.buffer, task.max_length); if (n_err.is_error()) { - const error &error = n_err.error(); + const error &error = n_err.get_error(); if (error.is_critical()) { if (read_done) { read_done->fail(error.copy_error()); @@ -21,7 +21,7 @@ void read_task_and_step_helper::read_step(input_stream &reader) { break; } else if (n_err.is_value()) { - size_t n = n_err.value(); + size_t n = n_err.get_value(); if (static_cast<size_t>(n) >= task.min_length && static_cast<size_t>(n) <= task.max_length) { if (read_done) { @@ -37,7 +37,7 @@ void read_task_and_step_helper::read_step(input_stream &reader) { } else { if (read_done) { - read_done->fail(critical_error("Read failed")); + read_done->fail(make_error<err::invalid_state>("Read failed")); } read_task = std::nullopt; } @@ -52,7 +52,7 @@ void write_task_and_step_helper::write_step(output_stream &writer) { if (n_err.is_value()) { - size_t n = n_err.value(); + size_t n = n_err.get_value(); assert(n <= task.length); if (n == task.length) { if (write_done) { @@ -65,7 +65,7 @@ void write_task_and_step_helper::write_step(output_stream &writer) { task.already_written += n; } } else if (n_err.is_error()) { - const error &error = n_err.error(); + const error &error = n_err.get_error(); if (error.is_critical()) { if (write_done) { write_done->fail(error.copy_error()); @@ -75,7 +75,7 @@ void write_task_and_step_helper::write_step(output_stream &writer) { break; } else { if (write_done) { - write_done->fail(critical_error("Write failed")); + write_done->fail(make_error<err::invalid_state>("Write failed")); } write_task = std::nullopt; } |