jsonrpc: add spdk_jsonrpc_send_error_response_fmt
To help printing more descriptive error message add fmt version. Change-Id: I8d383d76d0f6e6f2882160fb8fd8459ec8f5495a Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com> Reviewed-on: https://review.gerrithub.io/401025 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
a5cfd43036
commit
97cb1713ff
@ -107,6 +107,20 @@ void spdk_jsonrpc_end_result(struct spdk_jsonrpc_request *request, struct spdk_j
|
|||||||
void spdk_jsonrpc_send_error_response(struct spdk_jsonrpc_request *request,
|
void spdk_jsonrpc_send_error_response(struct spdk_jsonrpc_request *request,
|
||||||
int error_code, const char *msg);
|
int error_code, const char *msg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send an error response to a JSON-RPC request.
|
||||||
|
*
|
||||||
|
* \param request JSON-RPC request to respond to.
|
||||||
|
* \param error_code Integer error code to return (may be one of the SPDK_JSONRPC_ERROR_ errors,
|
||||||
|
* or a custom error code).
|
||||||
|
* \param fmt Printf-like format string.
|
||||||
|
*
|
||||||
|
* This is shorthand for printf() + spdk_jsonrpc_send_error_response().
|
||||||
|
*/
|
||||||
|
void spdk_jsonrpc_send_error_response_fmt(struct spdk_jsonrpc_request *request,
|
||||||
|
int error_code, const char *fmt, ...) __attribute__((format(printf, 3, 4)));
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -318,4 +318,35 @@ spdk_jsonrpc_send_error_response(struct spdk_jsonrpc_request *request,
|
|||||||
end_response(request, w);
|
end_response(request, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
spdk_jsonrpc_send_error_response_fmt(struct spdk_jsonrpc_request *request,
|
||||||
|
int error_code, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
struct spdk_json_write_ctx *w;
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
if (request->id.type == SPDK_JSON_VAL_INVALID) {
|
||||||
|
/* For error responses, if id is missing, explicitly respond with "id": null. */
|
||||||
|
request->id.type = SPDK_JSON_VAL_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
w = begin_response(request);
|
||||||
|
if (w == NULL) {
|
||||||
|
free(request);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
spdk_json_write_name(w, "error");
|
||||||
|
spdk_json_write_object_begin(w);
|
||||||
|
spdk_json_write_name(w, "code");
|
||||||
|
spdk_json_write_int32(w, error_code);
|
||||||
|
spdk_json_write_name(w, "message");
|
||||||
|
va_start(args, fmt);
|
||||||
|
spdk_json_write_string_fmt_v(w, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
spdk_json_write_object_end(w);
|
||||||
|
|
||||||
|
end_response(request, w);
|
||||||
|
}
|
||||||
|
|
||||||
SPDK_LOG_REGISTER_COMPONENT("rpc", SPDK_LOG_RPC)
|
SPDK_LOG_REGISTER_COMPONENT("rpc", SPDK_LOG_RPC)
|
||||||
|
Loading…
Reference in New Issue
Block a user