[PATCH v3 10/18] gweb: Added and leveraged 'call_result_func_{failure,success}' wrappers.
Grant Erickson <[email protected]> Thu, 20 Mar 2025 16:39:01 -0700
| Newsgroups | dev.linux.lists.connman |
|---|---|
| Message-ID | <84263422c21dc7f9d388ef2d1d320231e19efe47.1742513884.git.gerickson@nuovations.com> |
These wrappers both self-document the GWeb result callback closures
and, for the success wrapper, reduce the parameter list by defaulting
the error parameter to 'NULL'.
---
gweb/gweb.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 67 insertions(+), 9 deletions(-)
diff --git a/gweb/gweb.c b/gweb/gweb.c
index 1915d3737eb0..7ad12c977ff8 100644
--- a/gweb/gweb.c
+++ b/gweb/gweb.c
@@ -185,6 +185,8 @@ G_DEFINE_QUARK(g-web-error-quark, g_web_error)
* information about an error that occurred during the GWeb request,
* if any.
*
+ * @sa call_result_func_failure
+ * @sa call_result_func_success
* @sa do_request
*
* @private
@@ -202,6 +204,62 @@ static void call_result_func(struct web_session *session,
session->result_func(error, &session->result, session->user_data);
}
+/**
+ * @brief
+ * Invoke the closure callback on failure associated with the web
+ * session request.
+ *
+ * This closes the specified web session request on failure with @a
+ * error by invoking the @a result_func originally assigned in
+ * #do_request when the session was first initiated.
+ *
+ * @param[in] session
+ * A pointer to the mutable web session request for which to invoke
+ * the closure callback.
+ *
+ * @param[in] error
+ * A required pointer to the immutable GError structure containing
+ * informatino about an error that occurred during the GWeb
+ * request.
+ *
+ * @sa call_result_func
+ * @sa call_result_func_success
+ * @sa do_request
+ *
+ * @private
+ *
+ */
+static inline void call_result_func_failure(struct web_session *session,
+ const GError *error)
+{
+ call_result_func(session, error);
+}
+
+/**
+ * @brief
+ * Invoke the closure callback on success associated with the web
+ * session request.
+ *
+ * This closes the specified web session request on success by
+ * invoking the @a result_func originally assigned in #do_request
+ * when the session was first initiated.
+ *
+ * @param[in] session
+ * A pointer to the mutable web session request for which to invoke
+ * the closure callback.
+ *
+ * @sa call_result_func
+ * @sa call_result_func_failure
+ * @sa do_request
+ *
+ * @private
+ *
+ */
+static void call_result_func_success(struct web_session *session)
+{
+ call_result_func(session, NULL);
+}
+
static inline void call_route_func(struct web_session *session)
{
if (session->route_func)
@@ -253,7 +311,7 @@ static gboolean connect_timeout_cb(gpointer user_data)
G_IO_ERROR_TIMED_OUT,
message);
- call_result_func(session, local_error);
+ call_result_func_failure(session, local_error);
if (local_error)
g_error_free(local_error);
@@ -997,7 +1055,7 @@ static int decode_chunked(struct web_session *session,
if (session->chunk_left <= len) {
session->result.buffer = ptr;
session->result.length = session->chunk_left;
- call_result_func(session, NULL);
+ call_result_func_success(session);
len -= session->chunk_left;
ptr += session->chunk_left;
@@ -1012,7 +1070,7 @@ static int decode_chunked(struct web_session *session,
/* more data */
session->result.buffer = ptr;
session->result.length = len;
- call_result_func(session, NULL);
+ call_result_func_success(session);
session->chunk_left -= len;
session->total_len += len;
@@ -1039,7 +1097,7 @@ static int handle_body(struct web_session *session,
if (len > 0) {
session->result.buffer = buf;
session->result.length = len;
- call_result_func(session, NULL);
+ call_result_func_success(session);
}
return 0;
}
@@ -1057,7 +1115,7 @@ static int handle_body(struct web_session *session,
G_WEB_ERROR_CHUNK_DECODE,
message);
- call_result_func(session, local_error);
+ call_result_func_failure(session, local_error);
if (local_error)
g_error_free(local_error);
@@ -1294,7 +1352,7 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond,
g_io_error_from_errno(EIO),
g_strerror(EIO));
- call_result_func(session, local_error);
+ call_result_func_failure(session, local_error);
if (local_error)
g_error_free(local_error);
@@ -2340,7 +2398,7 @@ static void handle_resolved_address(struct web_session *session)
G_WEB_ERROR_HOST_NOT_FOUND,
message);
- call_result_func(session, local_error);
+ call_result_func_failure(session, local_error);
goto done;
}
@@ -2353,7 +2411,7 @@ static void handle_resolved_address(struct web_session *session)
g_io_error_from_errno(ret),
g_strerror(ret));
- call_result_func(session, local_error);
+ call_result_func_failure(session, local_error);
goto done;
}
@@ -2388,7 +2446,7 @@ static void resolv_result(GResolvResultStatus status,
G_WEB_ERROR_HOST_NOT_FOUND,
message);
- call_result_func(session, local_error);
+ call_result_func_failure(session, local_error);
if (local_error)
g_error_free(local_error);
--
2.45.0