summaryrefslogtreecommitdiff
path: root/forstio/io
diff options
context:
space:
mode:
Diffstat (limited to 'forstio/io')
-rw-r--r--forstio/io/io.h9
-rw-r--r--forstio/io/io_helpers.cpp12
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;
}