Lines Matching refs:request

85 parse_single_request(struct spdk_jsonrpc_request *request, struct spdk_json_val *values)  in parse_single_request()  argument
109 request->id = req.id; in parse_single_request()
126 jsonrpc_server_handle_request(request, req.method, params); in parse_single_request()
130 jsonrpc_server_handle_error(request, SPDK_JSONRPC_ERROR_INVALID_REQUEST); in parse_single_request()
136 struct spdk_jsonrpc_request *request = cb_ctx; in jsonrpc_server_write_cb() local
137 size_t new_size = request->send_buf_size; in jsonrpc_server_write_cb()
139 while (new_size - request->send_len < size) { in jsonrpc_server_write_cb()
149 if (new_size != request->send_buf_size) { in jsonrpc_server_write_cb()
153 new_buf = realloc(request->send_buf, new_size + 1); in jsonrpc_server_write_cb()
156 request->send_buf_size, new_size); in jsonrpc_server_write_cb()
160 request->send_buf = new_buf; in jsonrpc_server_write_cb()
161 request->send_buf_size = new_size; in jsonrpc_server_write_cb()
164 memcpy(request->send_buf + request->send_len, data, size); in jsonrpc_server_write_cb()
165 request->send_len += size; in jsonrpc_server_write_cb()
173 struct spdk_jsonrpc_request *request; in jsonrpc_parse_request() local
185 request = calloc(1, sizeof(*request)); in jsonrpc_parse_request()
186 if (request == NULL) { in jsonrpc_parse_request()
193 STAILQ_INSERT_TAIL(&conn->outstanding_queue, request, link); in jsonrpc_parse_request()
196 request->conn = conn; in jsonrpc_parse_request()
199 request->recv_buffer = malloc(len + 1); in jsonrpc_parse_request()
200 if (request->recv_buffer == NULL) { in jsonrpc_parse_request()
202 jsonrpc_free_request(request); in jsonrpc_parse_request()
206 memcpy(request->recv_buffer, json, len); in jsonrpc_parse_request()
207 request->recv_buffer[len] = '\0'; in jsonrpc_parse_request()
209 jsonrpc_log(request->recv_buffer, "request: "); in jsonrpc_parse_request()
212 request->values_cnt = rc; in jsonrpc_parse_request()
213 request->values = malloc(request->values_cnt * sizeof(request->values[0])); in jsonrpc_parse_request()
214 if (request->values == NULL) { in jsonrpc_parse_request()
216 request->values_cnt * sizeof(request->values[0])); in jsonrpc_parse_request()
217 jsonrpc_free_request(request); in jsonrpc_parse_request()
222 request->send_offset = 0; in jsonrpc_parse_request()
223 request->send_len = 0; in jsonrpc_parse_request()
224 request->send_buf_size = SPDK_JSONRPC_SEND_BUF_SIZE_INIT; in jsonrpc_parse_request()
226 request->send_buf = malloc(request->send_buf_size + 1); in jsonrpc_parse_request()
227 if (request->send_buf == NULL) { in jsonrpc_parse_request()
228 SPDK_ERRLOG("Failed to allocate send_buf (%zu bytes)\n", request->send_buf_size); in jsonrpc_parse_request()
229 jsonrpc_free_request(request); in jsonrpc_parse_request()
233 request->response = spdk_json_write_begin(jsonrpc_server_write_cb, request, 0); in jsonrpc_parse_request()
234 if (request->response == NULL) { in jsonrpc_parse_request()
236 jsonrpc_free_request(request); in jsonrpc_parse_request()
242 jsonrpc_server_handle_error(request, SPDK_JSONRPC_ERROR_PARSE_ERROR); in jsonrpc_parse_request()
252 rc = spdk_json_parse(request->recv_buffer, size, request->values, request->values_cnt, &end, in jsonrpc_parse_request()
256 jsonrpc_server_handle_error(request, SPDK_JSONRPC_ERROR_PARSE_ERROR); in jsonrpc_parse_request()
262 if (request->values[0].type == SPDK_JSON_VAL_OBJECT_BEGIN) { in jsonrpc_parse_request()
263 parse_single_request(request, request->values); in jsonrpc_parse_request()
264 } else if (request->values[0].type == SPDK_JSON_VAL_ARRAY_BEGIN) { in jsonrpc_parse_request()
266 jsonrpc_server_handle_error(request, SPDK_JSONRPC_ERROR_INVALID_REQUEST); in jsonrpc_parse_request()
269 jsonrpc_server_handle_error(request, SPDK_JSONRPC_ERROR_INVALID_REQUEST); in jsonrpc_parse_request()
276 spdk_jsonrpc_get_conn(struct spdk_jsonrpc_request *request) in spdk_jsonrpc_get_conn() argument
278 return request->conn; in spdk_jsonrpc_get_conn()
283 begin_response(struct spdk_jsonrpc_request *request) in begin_response() argument
285 struct spdk_json_write_ctx *w = request->response; in begin_response()
291 if (request->id) { in begin_response()
292 spdk_json_write_val(w, request->id); in begin_response()
301 skip_response(struct spdk_jsonrpc_request *request) in skip_response() argument
303 request->send_len = 0; in skip_response()
304 spdk_json_write_end(request->response); in skip_response()
305 request->response = NULL; in skip_response()
306 jsonrpc_server_send_response(request); in skip_response()
310 end_response(struct spdk_jsonrpc_request *request) in end_response() argument
312 spdk_json_write_object_end(request->response); in end_response()
313 spdk_json_write_end(request->response); in end_response()
314 request->response = NULL; in end_response()
316 jsonrpc_server_write_cb(request, "\n", 1); in end_response()
317 jsonrpc_server_send_response(request); in end_response()
321 jsonrpc_free_request(struct spdk_jsonrpc_request *request) in jsonrpc_free_request() argument
326 if (!request) { in jsonrpc_free_request()
331 assert(request->response == NULL); in jsonrpc_free_request()
333 conn = request->conn; in jsonrpc_free_request()
338 if (req == request) { in jsonrpc_free_request()
346 free(request->recv_buffer); in jsonrpc_free_request()
347 free(request->values); in jsonrpc_free_request()
348 free(request->send_buf); in jsonrpc_free_request()
349 free(request); in jsonrpc_free_request()
353 jsonrpc_complete_request(struct spdk_jsonrpc_request *request) in jsonrpc_complete_request() argument
355 jsonrpc_log(request->send_buf, "response: "); in jsonrpc_complete_request()
357 jsonrpc_free_request(request); in jsonrpc_complete_request()
361 spdk_jsonrpc_begin_result(struct spdk_jsonrpc_request *request) in spdk_jsonrpc_begin_result() argument
363 struct spdk_json_write_ctx *w = begin_response(request); in spdk_jsonrpc_begin_result()
370 spdk_jsonrpc_end_result(struct spdk_jsonrpc_request *request, struct spdk_json_write_ctx *w) in spdk_jsonrpc_end_result() argument
373 assert(w == request->response); in spdk_jsonrpc_end_result()
376 if (request->id && request->id->type != SPDK_JSON_VAL_NULL) { in spdk_jsonrpc_end_result()
377 end_response(request); in spdk_jsonrpc_end_result()
379 skip_response(request); in spdk_jsonrpc_end_result()
384 spdk_jsonrpc_send_bool_response(struct spdk_jsonrpc_request *request, bool value) in spdk_jsonrpc_send_bool_response() argument
388 w = spdk_jsonrpc_begin_result(request); in spdk_jsonrpc_send_bool_response()
391 spdk_jsonrpc_end_result(request, w); in spdk_jsonrpc_send_bool_response()
395 spdk_jsonrpc_send_error_response(struct spdk_jsonrpc_request *request, in spdk_jsonrpc_send_error_response() argument
398 struct spdk_json_write_ctx *w = begin_response(request); in spdk_jsonrpc_send_error_response()
405 end_response(request); in spdk_jsonrpc_send_error_response()
409 spdk_jsonrpc_send_error_response_fmt(struct spdk_jsonrpc_request *request, in spdk_jsonrpc_send_error_response_fmt() argument
412 struct spdk_json_write_ctx *w = begin_response(request); in spdk_jsonrpc_send_error_response_fmt()
422 end_response(request); in spdk_jsonrpc_send_error_response_fmt()