@@ -272,7 +272,7 @@ DEFINE_ERROR_T_MESSAGE_MAP(error)
272272 { exhausted_variants, " exhausted variants" },
273273 { unknown_name, " unknown name" },
274274
275- // rpc error
275+ // query string parse error
276276 { message_overflow, " message overflow" },
277277 { undefined_type, " undefined type" },
278278 { unexpected_method, " unexpected method" },
@@ -281,7 +281,17 @@ DEFINE_ERROR_T_MESSAGE_MAP(error)
281281 { extra_named, " extra named" },
282282 { missing_array, " missing array" },
283283 { missing_object, " missing object" },
284- { missing_parameter, " missing parameter" }
284+ { missing_parameter, " missing parameter" },
285+
286+ // json-rpc error
287+ { jsonrpc_requires_method, " jsonrpc requires method" },
288+ { jsonrpc_v1_requires_params, " jsonrpc v1 requires params" },
289+ { jsonrpc_v1_requires_array_params, " jsonrpc v1 requires array params" },
290+ { jsonrpc_v1_requires_id, " jsonrpc v1 requires id" },
291+ { jsonrpc_reader_bad_buffer, " jsonrpc reader bad buffer" },
292+ { jsonrpc_reader_stall, " jsonrpc reader stall" },
293+ { jsonrpc_reader_exception, " jsonrpc reader exception" },
294+ { jsonrpc_writer_exception, " jsonrpc writer exception" }
285295};
286296
287297DEFINE_ERROR_T_CATEGORY (error, " network" , " network code" )
@@ -294,6 +304,7 @@ bool asio_is_canceled(const boost_code& ec) NOEXCEPT
294304 || ec == boost::asio::error::operation_aborted;
295305}
296306
307+ // TODO: change to cast model (like others).
297308// The success and operation_canceled codes are the only expected in normal
298309// operation, so these are first, to optimize the case where asio_is_canceled
299310// is not used. boost_code overloads the `==` operator to include category.
@@ -440,15 +451,30 @@ code ssl_to_error_code(const boost_code& ec) NOEXCEPT
440451
441452 switch (static_cast <asio_ssl_stream_error_t >(ec.value ()))
442453 {
443- case asio_ssl_stream_error_t ::stream_truncated: return error::tls_stream_truncated;
444- case asio_ssl_stream_error_t ::unspecified_system_error: return error::tls_unspecified_system_error;
445- case asio_ssl_stream_error_t ::unexpected_result: return error::tls_unexpected_result;
454+ case asio_ssl_stream_error_t ::stream_truncated:
455+ return error::tls_stream_truncated;
456+ case asio_ssl_stream_error_t ::unspecified_system_error:
457+ return error::tls_unspecified_system_error;
458+ case asio_ssl_stream_error_t ::unexpected_result:
459+ return error::tls_unexpected_result;
446460
447461 // TODO: return ssl category generic error.
448462 default : return error::unknown;
449463 }
450464}
451465
466+ // includes http codes
467+ code rpc_to_error_code (const boost_code& ec) NOEXCEPT
468+ {
469+ if (!ec)
470+ return error::success;
471+
472+ if (ec.category () == network::error::error_category::singleton)
473+ return { static_cast <error_t >(ec.value ()) };
474+
475+ return http_to_error_code (ec);
476+ }
477+
452478// includes json codes
453479code http_to_error_code (const boost_code& ec) NOEXCEPT
454480{
0 commit comments