Commit c49abdd2 authored by Jim Harris's avatar Jim Harris
Browse files

rpc: add helper method to find matching method_name

parent 656c938d
Loading
Loading
Loading
Loading
+26 −13
Original line number Diff line number Diff line
@@ -73,6 +73,20 @@ spdk_rpc_get_state(void)
	return g_rpc_state;
}

static struct spdk_rpc_method *
_get_rpc_method(const struct spdk_json_val *method)
{
	struct spdk_rpc_method *m;

	SLIST_FOREACH(m, &g_rpc_methods, slist) {
		if (spdk_json_strequal(method, m->name)) {
			return m;
		}
	}

	return NULL;
}

static void
spdk_jsonrpc_handler(struct spdk_jsonrpc_request *request,
		     const struct spdk_json_val *method,
@@ -82,8 +96,12 @@ spdk_jsonrpc_handler(struct spdk_jsonrpc_request *request,

	assert(method != NULL);

	SLIST_FOREACH(m, &g_rpc_methods, slist) {
		if (spdk_json_strequal(method, m->name)) {
	m = _get_rpc_method(method);
	if (m == NULL) {
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_METHOD_NOT_FOUND, "Method not found");
		return;
	}

	if ((m->state_mask & g_rpc_state) == g_rpc_state) {
		m->func(request, params);
	} else {
@@ -92,11 +110,6 @@ spdk_jsonrpc_handler(struct spdk_jsonrpc_request *request,
						     " but current state is (%"PRIx32")",
						     m->state_mask, g_rpc_state);
	}
			return;
		}
	}

	spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_METHOD_NOT_FOUND, "Method not found");
}

int