mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-24 02:03:54 +03:00
bus: convert a couple of calls over to new convenience functions
This commit is contained in:
parent
f10dda3b82
commit
d4100e2444
@ -46,7 +46,7 @@ int sd_bus_get_unique_name(sd_bus *bus, const char **unique) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
|
int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -55,21 +55,17 @@ int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
|
|||||||
if (!name)
|
if (!name)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"RequestName",
|
"RequestName",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
&reply,
|
||||||
return r;
|
"su",
|
||||||
|
name,
|
||||||
r = sd_bus_message_append(m, "su", name, flags);
|
flags);
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -81,7 +77,7 @@ int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sd_bus_release_name(sd_bus *bus, const char *name) {
|
int sd_bus_release_name(sd_bus *bus, const char *name) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -90,21 +86,16 @@ int sd_bus_release_name(sd_bus *bus, const char *name) {
|
|||||||
if (!name)
|
if (!name)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"ReleaseName",
|
"ReleaseName",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
&reply,
|
||||||
return r;
|
"s",
|
||||||
|
name);
|
||||||
r = sd_bus_message_append(m, "s", name);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -116,7 +107,7 @@ int sd_bus_release_name(sd_bus *bus, const char *name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sd_bus_list_names(sd_bus *bus, char ***l) {
|
int sd_bus_list_names(sd_bus *bus, char ***l) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m1 = NULL, *reply1 = NULL, *m2 = NULL, *reply2 = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *reply1 = NULL, *reply2 = NULL;
|
||||||
char **x = NULL;
|
char **x = NULL;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -125,31 +116,27 @@ int sd_bus_list_names(sd_bus *bus, char ***l) {
|
|||||||
if (!l)
|
if (!l)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"ListNames",
|
"ListNames",
|
||||||
&m1);
|
NULL,
|
||||||
|
&reply1,
|
||||||
|
NULL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"ListActivatableNames",
|
"ListActivatableNames",
|
||||||
&m2);
|
NULL,
|
||||||
if (r < 0)
|
&reply2,
|
||||||
return r;
|
NULL);
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m1, 0, NULL, &reply1);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m2, 0, NULL, &reply2);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -170,7 +157,7 @@ int sd_bus_list_names(sd_bus *bus, char ***l) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
|
int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
|
||||||
const char *found;
|
const char *found;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -179,21 +166,16 @@ int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
|
|||||||
if (!name)
|
if (!name)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"GetNameOwner",
|
"GetNameOwner",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
&reply,
|
||||||
return r;
|
"s",
|
||||||
|
name);
|
||||||
r = sd_bus_message_append(m, "s", name);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -215,7 +197,7 @@ int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
|
int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
|
||||||
uint32_t u;
|
uint32_t u;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -226,21 +208,16 @@ int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
|
|||||||
if (!uid)
|
if (!uid)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"GetConnectionUnixUser",
|
"GetConnectionUnixUser",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
&reply,
|
||||||
return r;
|
"s",
|
||||||
|
name);
|
||||||
r = sd_bus_message_append(m, "s", name);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -253,7 +230,7 @@ int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
|
int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
|
||||||
uint32_t u;
|
uint32_t u;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -264,21 +241,16 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
|
|||||||
if (!pid)
|
if (!pid)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"GetConnectionUnixProcessID",
|
"GetConnectionUnixProcessID",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
&reply,
|
||||||
return r;
|
"s",
|
||||||
|
name);
|
||||||
r = sd_bus_message_append(m, "s", name);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -294,49 +266,33 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int bus_add_match_internal(sd_bus *bus, const char *match) {
|
int bus_add_match_internal(sd_bus *bus, const char *match) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(match);
|
assert(match);
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
return sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"AddMatch",
|
"AddMatch",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
NULL,
|
||||||
return r;
|
"s",
|
||||||
|
match);
|
||||||
r = sd_bus_message_append(m, "s", match);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int bus_remove_match_internal(sd_bus *bus, const char *match) {
|
int bus_remove_match_internal(sd_bus *bus, const char *match) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(match);
|
assert(match);
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
return sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.DBus",
|
"org.freedesktop.DBus",
|
||||||
"RemoveMatch",
|
"RemoveMatch",
|
||||||
&m);
|
NULL,
|
||||||
if (r < 0)
|
NULL,
|
||||||
return r;
|
"s",
|
||||||
|
match);
|
||||||
r = sd_bus_message_append(m, "s", match);
|
|
||||||
if (r < 0)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
|
|
||||||
}
|
}
|
||||||
|
@ -53,13 +53,7 @@ static int object_callback(sd_bus *bus, int error, sd_bus_message *m, void *user
|
|||||||
|
|
||||||
log_info("Invoked Foobar() on %s", sd_bus_message_get_path(m));
|
log_info("Invoked Foobar() on %s", sd_bus_message_get_path(m));
|
||||||
|
|
||||||
r = sd_bus_message_new_method_return(bus, m, &reply);
|
r = sd_bus_reply_method_return(bus, m, NULL);
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = sd_bus_send(bus, reply, NULL);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to send reply: %s", strerror(-r));
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
return r;
|
return r;
|
||||||
@ -142,7 +136,7 @@ static int server(sd_bus *bus) {
|
|||||||
bool client1_gone = false, client2_gone = false;
|
bool client1_gone = false, client2_gone = false;
|
||||||
|
|
||||||
while (!client1_gone || !client2_gone) {
|
while (!client1_gone || !client2_gone) {
|
||||||
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
|
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
|
||||||
pid_t pid = 0;
|
pid_t pid = 0;
|
||||||
|
|
||||||
r = sd_bus_process(bus, &m);
|
r = sd_bus_process(bus, &m);
|
||||||
@ -179,12 +173,6 @@ static int server(sd_bus *bus) {
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_bus_message_new_method_return(bus, m, &reply);
|
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
lowercase = strdup(hello);
|
lowercase = strdup(hello);
|
||||||
if (!lowercase) {
|
if (!lowercase) {
|
||||||
r = log_oom();
|
r = log_oom();
|
||||||
@ -193,34 +181,34 @@ static int server(sd_bus *bus) {
|
|||||||
|
|
||||||
ascii_strlower(lowercase);
|
ascii_strlower(lowercase);
|
||||||
|
|
||||||
r = sd_bus_message_append(reply, "s", lowercase);
|
r = sd_bus_reply_method_return(bus, m, "s", lowercase);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to append message: %s", strerror(-r));
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient1")) {
|
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient1")) {
|
||||||
|
|
||||||
r = sd_bus_message_new_method_return(bus, m, &reply);
|
r = sd_bus_reply_method_return(bus, m, NULL);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
client1_gone = true;
|
client1_gone = true;
|
||||||
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient2")) {
|
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient2")) {
|
||||||
|
|
||||||
r = sd_bus_message_new_method_return(bus, m, &reply);
|
r = sd_bus_reply_method_return(bus, m, NULL);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
client2_gone = true;
|
client2_gone = true;
|
||||||
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) {
|
} else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) {
|
||||||
|
|
||||||
r = sd_bus_message_new_method_return(bus, m, &reply);
|
r = sd_bus_reply_method_return(bus, m, NULL);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,34 +232,21 @@ static int server(sd_bus *bus) {
|
|||||||
|
|
||||||
close_nointr_nofail(fd);
|
close_nointr_nofail(fd);
|
||||||
|
|
||||||
r = sd_bus_message_new_method_return(bus, m, &reply);
|
r = sd_bus_reply_method_return(bus, m, NULL);
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (sd_bus_message_is_method_call(m, NULL, NULL)) {
|
|
||||||
|
|
||||||
r = sd_bus_message_new_method_error(
|
|
||||||
bus, m,
|
|
||||||
&SD_BUS_ERROR_MAKE("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."),
|
|
||||||
&reply);
|
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to allocate return: %s", strerror(-r));
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (reply) {
|
|
||||||
r = sd_bus_send(bus, reply, NULL);
|
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to send reply: %s", strerror(-r));
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* log_info("Sent"); */
|
} else if (sd_bus_message_is_method_call(m, NULL, NULL)) {
|
||||||
/* bus_message_dump(reply); */
|
|
||||||
/* sd_bus_message_rewind(reply, true); */
|
r = sd_bus_reply_method_error(
|
||||||
|
bus, m,
|
||||||
|
&SD_BUS_ERROR_MAKE("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."));
|
||||||
|
if (r < 0) {
|
||||||
|
log_error("Failed to send reply: %s", strerror(-r));
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,27 +276,18 @@ static void* client1(void*p) {
|
|||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = sd_bus_message_new_method_call(
|
r = sd_bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
"org.freedesktop.systemd.test",
|
"org.freedesktop.systemd.test",
|
||||||
"/",
|
"/",
|
||||||
"org.freedesktop.systemd.test",
|
"org.freedesktop.systemd.test",
|
||||||
"LowerCase",
|
"LowerCase",
|
||||||
&m);
|
&error,
|
||||||
|
&reply,
|
||||||
|
"s",
|
||||||
|
"HELLO");
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
log_error("Failed to allocate method call: %s", strerror(-r));
|
log_error("Failed to issue method call: %s", strerror(-r));
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = sd_bus_message_append(m, "s", "HELLO");
|
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to append string: %s", strerror(-r));
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply);
|
|
||||||
if (r < 0) {
|
|
||||||
log_error("Failed to issue method call: %s", bus_error_message(&error, -r));
|
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user