sd-varlink: add sd_varlink_call_and_upgradeb() + sd_varlink_call_and_upgradebo()
This are to the existing sd_varlink_call_and_upgrade() what sd_varlink_callb() and sd_varlink_callbo() are to sd_varlink_call(): they put together an object on the fly, via the usual JSON builder logic.
This commit is contained in:
@@ -1108,6 +1108,7 @@ global:
|
||||
LIBSYSTEMD_262 {
|
||||
global:
|
||||
sd_varlink_bind_upgrade;
|
||||
sd_varlink_call_and_upgradeb;
|
||||
sd_varlink_respond_and_upgrade;
|
||||
sd_varlink_respond_and_upgradeb;
|
||||
} LIBSYSTEMD_261;
|
||||
|
||||
@@ -2183,6 +2183,31 @@ finish:
|
||||
return r;
|
||||
}
|
||||
|
||||
_public_ int sd_varlink_call_and_upgradeb(
|
||||
sd_varlink *v,
|
||||
const char *method,
|
||||
sd_json_variant **ret_parameters,
|
||||
const char **ret_error_id,
|
||||
int *ret_input_fd,
|
||||
int *ret_output_fd,
|
||||
...) {
|
||||
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *parameters = NULL;
|
||||
va_list ap;
|
||||
int r;
|
||||
|
||||
assert_return(v, -EINVAL);
|
||||
assert_return(method, -EINVAL);
|
||||
|
||||
va_start(ap, ret_output_fd);
|
||||
r = sd_json_buildv(¶meters, ap);
|
||||
va_end(ap);
|
||||
if (r < 0)
|
||||
return varlink_log_errno(v, r, "Failed to build json message: %m");
|
||||
|
||||
return sd_varlink_call_and_upgrade(v, method, parameters, ret_parameters, ret_error_id, ret_input_fd, ret_output_fd);
|
||||
}
|
||||
|
||||
_public_ int sd_varlink_callb_ap(
|
||||
sd_varlink *v,
|
||||
const char *method,
|
||||
|
||||
@@ -145,6 +145,9 @@ int sd_varlink_callb(sd_varlink *v, const char *method, sd_json_variant **ret_pa
|
||||
* Returns > 0 if the connection was upgraded, 0 if a Varlink error occurred (and ret_error_id was set),
|
||||
* or < 0 on local failure. */
|
||||
int sd_varlink_call_and_upgrade(sd_varlink *v, const char *method, sd_json_variant *parameters, sd_json_variant **ret_parameters, const char **ret_error_id, int *ret_input_fd, int *ret_output_fd);
|
||||
int sd_varlink_call_and_upgradeb(sd_varlink *v, const char *method, sd_json_variant **ret_parameters, const char **ret_error_id, int *ret_input_fd, int *ret_output_fd, ...);
|
||||
#define sd_varlink_call_and_upgradebo(v, method, ret_parameters, ret_error_id, ret_input_fd, ret_output_fd, ...) \
|
||||
sd_varlink_call_and_upgradeb((v), (method), (ret_parameters), (ret_error_id), (ret_input_fd), (ret_output_fd), SD_JSON_BUILD_OBJECT(__VA_ARGS__))
|
||||
|
||||
/* Send method call and begin collecting all 'more' replies into an array, finishing when a final reply is sent */
|
||||
int sd_varlink_collect_full(sd_varlink *v, const char *method, sd_json_variant *parameters, sd_json_variant **ret_parameters, const char **ret_error_id, sd_varlink_reply_flags_t *ret_flags);
|
||||
|
||||
Reference in New Issue
Block a user