10 std::getline(in, read_key,
':');
15 std::string error_msg(
"deserialisation failed, ");
16 error_msg +=
"could not read key";
17 std::runtime_error e(error_msg);
22 if (read_key != key.
str())
24 std::string error_msg(
"deserialisation failed, read key ('");
26 error_msg +=
"') did not match queried key ('";
27 error_msg += key.
str();
29 std::runtime_error e(error_msg);
38 std::getline(in, read_value);
43 std::string error_msg(
"deserialisation failed, ");
44 error_msg +=
"could not read value";
45 std::runtime_error e(error_msg);
63 std::istringstream isstr(value_string);
64 isstr >> std::boolalpha >> val;
69 std::string error_msg(
"deserialisation failed, ");
70 error_msg +=
"could not extract value";
71 std::runtime_error e(error_msg);
85 std::string string_size_string;
86 std::getline(in, string_size_string,
':');
91 std::string error_msg(
"deserialisation failed, ");
92 error_msg +=
"could not read string size";
93 std::runtime_error e(error_msg);
99 std::istringstream isstr(string_size_string);
100 isstr >> string_size;
105 std::string error_msg(
"deserialisation failed, ");
106 error_msg +=
"could not extract string size";
107 std::runtime_error e(error_msg);
112 char buf[string_size + 1];
113 in.read(buf, string_size + 1);
114 buf[string_size] =
'\0';
118 std::string error_msg(
"deserialisation failed, ");
119 error_msg +=
"could not extract string";
120 std::runtime_error e(error_msg);
124 std::string val(buf);
132 auto raw_command_string = deserialise_scalar_value<std::string>(key, in);
135 return static_cast<Command>(raw_command_string);
142 auto input_string = deserialise_scalar_value<std::string>(
"m_input_string",
146 auto output_string = deserialise_scalar_value<std::string>(
147 "m_output_string", in);
150 auto error_code = deserialise_scalar_value<int>(
"m_error_code", in);
155 if (output_string.empty() && (error_code == -1))
161 task.recordOutputAndErrorCode(output_string, error_code);
const std::string & str() const
value_type deserialise_scalar_value(const LineString &key, std::istream &in)
void read_key(const LineString &key, std::istream &in)
std::istream & operator>>(std::istream &in, LineString &line_string)
std::string read_value(std::istream &in)