Remove @type_to_string, @no_types arguments from udscs_connect(), udscs_create_server{,_for_fd}(). udscs is used only in vdagent.c and vdagentd.c and in both cases the args are the same (vdagentd_messages, VDAGENTD_NO_MESSAGES). Add debug_print_message_header(). Signed-off-by: Jakub Janků <jjanku@xxxxxxxxxx> --- src/udscs.c | 59 ++++++++++++++++------------------------- src/udscs.h | 16 ++++------- src/vdagent/vdagent.c | 3 +-- src/vdagentd/vdagentd.c | 5 +--- 4 files changed, 30 insertions(+), 53 deletions(-) diff --git a/src/udscs.c b/src/udscs.c index 59e24d8..62abc97 100644 --- a/src/udscs.c +++ b/src/udscs.c @@ -34,6 +34,7 @@ #include <glib.h> #include <glib-unix.h> #include "udscs.h" +#include "vdagentd-proto-strings.h" struct udscs_buf { uint8_t *buf; @@ -45,8 +46,6 @@ struct udscs_buf { struct udscs_connection { int fd; - const char * const *type_to_string; - int no_types; int debug; void *user_data; #ifndef UDSCS_NO_SERVER @@ -78,18 +77,32 @@ static gboolean udscs_io_channel_cb(GIOChannel *source, GIOCondition condition, gpointer data); +static void debug_print_message_header(struct udscs_connection *conn, + struct udscs_message_header *header, + const gchar *direction) +{ + const gchar *type = "invalid message"; + + if (conn == NULL || conn->debug == FALSE) + return; + + if (header->type < G_N_ELEMENTS(vdagentd_messages)) + type = vdagentd_messages[header->type]; + + syslog(LOG_DEBUG, "%p %s %s, arg1: %u, arg2: %u, size %u", + conn, direction, type, header->arg1, header->arg2, header->size); +} + struct udscs_connection *udscs_connect(const char *socketname, udscs_read_callback read_callback, udscs_disconnect_callback disconnect_callback, - const char * const type_to_string[], int no_types, int debug) + int debug) { int c; struct sockaddr_un address; struct udscs_connection *conn; conn = g_new0(struct udscs_connection, 1); - conn->type_to_string = type_to_string; - conn->no_types = no_types; conn->debug = debug; conn->fd = socket(PF_UNIX, SOCK_STREAM, 0); @@ -203,15 +216,7 @@ void udscs_write(struct udscs_connection *conn, uint32_t type, uint32_t arg1, memcpy(new_wbuf->buf, &header, sizeof(header)); memcpy(new_wbuf->buf + sizeof(header), data, size); - if (conn->debug) { - if (type < conn->no_types) - syslog(LOG_DEBUG, "%p sent %s, arg1: %u, arg2: %u, size %u", - conn, conn->type_to_string[type], arg1, arg2, size); - else - syslog(LOG_DEBUG, - "%p sent invalid message %u, arg1: %u, arg2: %u, size %u", - conn, type, arg1, arg2, size); - } + debug_print_message_header(conn, &header, "sent"); if (conn->io_channel && conn->write_watch_id == 0) conn->write_watch_id = @@ -238,18 +243,7 @@ static void udscs_read_complete(struct udscs_connection **connp) { struct udscs_connection *conn = *connp; - if (conn->debug) { - if (conn->header.type < conn->no_types) - syslog(LOG_DEBUG, - "%p received %s, arg1: %u, arg2: %u, size %u", - conn, conn->type_to_string[conn->header.type], - conn->header.arg1, conn->header.arg2, conn->header.size); - else - syslog(LOG_DEBUG, - "%p received invalid message %u, arg1: %u, arg2: %u, size %u", - conn, conn->header.type, conn->header.arg1, conn->header.arg2, - conn->header.size); - } + debug_print_message_header(conn, &conn->header, "received"); if (conn->read_callback) { conn->read_callback(connp, &conn->header, conn->data.buf); @@ -373,8 +367,6 @@ static gboolean udscs_io_channel_cb(GIOChannel *source, struct udscs_server { int fd; - const char * const *type_to_string; - int no_types; int debug; struct udscs_connection connections_head; udscs_connect_callback connect_callback; @@ -386,7 +378,7 @@ struct udscs_server *udscs_create_server_for_fd(int fd, udscs_connect_callback connect_callback, udscs_read_callback read_callback, udscs_disconnect_callback disconnect_callback, - const char * const type_to_string[], int no_types, int debug) + int debug) { struct udscs_server *server; @@ -396,8 +388,6 @@ struct udscs_server *udscs_create_server_for_fd(int fd, } server = g_new0(struct udscs_server, 1); - server->type_to_string = type_to_string; - server->no_types = no_types; server->debug = debug; server->fd = fd; server->connect_callback = connect_callback; @@ -411,7 +401,7 @@ struct udscs_server *udscs_create_server(const char *socketname, udscs_connect_callback connect_callback, udscs_read_callback read_callback, udscs_disconnect_callback disconnect_callback, - const char * const type_to_string[], int no_types, int debug) + int debug) { int c; int fd; @@ -441,8 +431,7 @@ struct udscs_server *udscs_create_server(const char *socketname, } server = udscs_create_server_for_fd(fd, connect_callback, read_callback, - disconnect_callback, type_to_string, - no_types, debug); + disconnect_callback, debug); if (!server) { close(fd); @@ -489,8 +478,6 @@ static void udscs_server_accept(struct udscs_server *server) { new_conn = g_new0(struct udscs_connection, 1); new_conn->fd = fd; - new_conn->type_to_string = server->type_to_string; - new_conn->no_types = server->no_types; new_conn->debug = server->debug; new_conn->read_callback = server->read_callback; new_conn->disconnect_callback = server->disconnect_callback; diff --git a/src/udscs.h b/src/udscs.h index a863e16..363ca18 100644 --- a/src/udscs.h +++ b/src/udscs.h @@ -61,15 +61,12 @@ typedef void (*udscs_disconnect_callback)(struct udscs_connection *conn); * Only sockets bound to a pathname are supported. * * If debug is true then the events on this connection will be traced. - * This includes the incoming and outgoing message names. So when debug is true - * no_types must be set to the value of the highest valid message id + 1, - * and type_to_string must point to a string array of size no_types for - * converting the message ids to their names. + * This includes the incoming and outgoing message names. */ struct udscs_connection *udscs_connect(const char *socketname, udscs_read_callback read_callback, udscs_disconnect_callback disconnect_callback, - const char * const type_to_string[], int no_types, int debug); + int debug); /* Close the connection, releases the corresponding resources and * sets *connp to NULL. @@ -112,7 +109,7 @@ struct udscs_server *udscs_create_server_for_fd(int fd, udscs_connect_callback connect_callback, udscs_read_callback read_callback, udscs_disconnect_callback disconnect_callback, - const char * const type_to_string[], int no_types, int debug); + int debug); /* Create the unix domain socket specified by socketname and * start listening on it. @@ -120,16 +117,13 @@ struct udscs_server *udscs_create_server_for_fd(int fd, * * If debug is true then the events on this socket and related individual * connections will be traced. - * This includes the incoming and outgoing message names. So when debug is true - * no_types must be set to the value of the highest valid message id + 1, - * and type_to_string must point to a string array of size no_types for - * converting the message ids to their names. + * This includes the incoming and outgoing message names. */ struct udscs_server *udscs_create_server(const char *socketname, udscs_connect_callback connect_callback, udscs_read_callback read_callback, udscs_disconnect_callback disconnect_callback, - const char * const type_to_string[], int no_types, int debug); + int debug); /* Close all the server's connections and releases the corresponding * resources. diff --git a/src/vdagent/vdagent.c b/src/vdagent/vdagent.c index c5e5952..f7c8b72 100644 --- a/src/vdagent/vdagent.c +++ b/src/vdagent/vdagent.c @@ -42,7 +42,6 @@ #include "udscs.h" #include "vdagentd-proto.h" -#include "vdagentd-proto-strings.h" #include "audio.h" #include "x11.h" #include "file-xfers.h" @@ -369,7 +368,7 @@ static gboolean vdagent_init_async_cb(gpointer user_data) agent->conn = udscs_connect(vdagentd_socket, daemon_read_complete, daemon_disconnect_cb, - vdagentd_messages, VDAGENTD_NO_MESSAGES, debug); + debug); if (agent->conn == NULL) { g_timeout_add_seconds(1, vdagent_init_async_cb, agent); return G_SOURCE_REMOVE; diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c index 6b04813..99683da 100644 --- a/src/vdagentd/vdagentd.c +++ b/src/vdagentd/vdagentd.c @@ -42,7 +42,6 @@ #include "udscs.h" #include "vdagentd-proto.h" -#include "vdagentd-proto-strings.h" #include "uinput.h" #include "xorg-conf.h" #include "virtio-port.h" @@ -1139,8 +1138,7 @@ int main(int argc, char *argv[]) server = udscs_create_server_for_fd(SD_LISTEN_FDS_START, agent_connect, agent_read_complete, agent_disconnect, - vdagentd_messages, - VDAGENTD_NO_MESSAGES, debug); + debug); own_socket = FALSE; } else /* systemd socket activation not enabled, create our own */ @@ -1148,7 +1146,6 @@ int main(int argc, char *argv[]) { server = udscs_create_server(vdagentd_socket, agent_connect, agent_read_complete, agent_disconnect, - vdagentd_messages, VDAGENTD_NO_MESSAGES, debug); } -- 2.17.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel