From 15a449ee447aea2e321a88f1225e16461bfa6dbc Mon Sep 17 00:00:00 2001 From: hippoz <10706925-hippoz@users.noreply.gitlab.com> Date: Tue, 10 Jan 2023 13:08:49 +0200 Subject: [PATCH] improve naming --- main.c | 8 +-- server.c | 178 +++++++++++++++++++++++++++---------------------------- server.h | 46 +++++++------- 3 files changed, 116 insertions(+), 116 deletions(-) diff --git a/main.c b/main.c index 8bbe17a..a6a9454 100644 --- a/main.c +++ b/main.c @@ -27,7 +27,7 @@ int main(int argc, char *argv[]) /* we handle send() errors directly in the code */ signal(SIGPIPE, SIG_IGN); - struct jb_server *srv = jb_server_create(socket_path); + bus_t *srv = bus_create(socket_path); if (srv == NULL) { fprintf(stderr, "server_create failed\n"); return EXIT_FAILURE; @@ -36,14 +36,14 @@ int main(int argc, char *argv[]) printf("Listening on %s\n", socket_path); while (1) { - if (jb_server_turn(srv) < 0) { + if (bus_turn(srv) < 0) { fprintf(stderr, "server_turn failed (errno=%d, strerror=%s)\n", errno, strerror(errno)); - jb_server_free(srv); + bus_free(srv); return EXIT_FAILURE; } } - jb_server_free(srv); + bus_free(srv); return EXIT_SUCCESS; } diff --git a/server.c b/server.c index 5035cac..684d07f 100644 --- a/server.c +++ b/server.c @@ -28,14 +28,14 @@ uint64_t hashmap_hash(const char *bytes, size_t bytes_n, size_t map_len) return (hash % map_len); } -int jb_server_client_add(struct jb_server *s, int fd) +int bus_client_add(bus_t *s, int fd) { - for (int i = 0; i < JB_MAX_CLIENTS; i++) { + for (int i = 0; i < BUS_MAX_CLIENTS; i++) { if (s->clients[i].fd < 0) { s->clients[i].fd = fd; s->clients[i].owned_name_index = -1; s->clients[i].unique_name_index = -1; - s->clients[i].state = JB_CLIENT_STATE_WAIT_AUTH; + s->clients[i].state = BUS_CLIENT_STATE_WAIT_AUTH; s->fds[i].fd = fd; s->fds[i].events = POLLIN; s->clients_count++; @@ -45,11 +45,11 @@ int jb_server_client_add(struct jb_server *s, int fd) return -1; } -int jb_server_name_find(struct jb_server *s, char *name) +int bus_name_find(bus_t *s, char *name) { - int bucket = hashmap_hash(name, strlen(name), JB_MAX_NAMES); + int bucket = hashmap_hash(name, strlen(name), BUS_MAX_NAMES); - for (int i = bucket; i < bucket + 12 && i < JB_MAX_NAMES; i++) { + for (int i = bucket; i < bucket + 12 && i < BUS_MAX_NAMES; i++) { if (s->names[i].name && strcmp(s->names[i].name, name) == 0) { return i; } @@ -58,9 +58,9 @@ int jb_server_name_find(struct jb_server *s, char *name) return -1; } -struct jb_client *jb_server_name_find_client(struct jb_server *s, char *name) +bus_client_t *bus_name_find_client(bus_t *s, char *name) { - int name_index = jb_server_name_find(s, name); + int name_index = bus_name_find(s, name); if (name_index < 0) { return NULL; } @@ -69,22 +69,22 @@ struct jb_client *jb_server_name_find_client(struct jb_server *s, char *name) return NULL; } - if (s->clients[s->names[name_index].client_index].state != JB_CLIENT_STATE_READY) { + if (s->clients[s->names[name_index].client_index].state != BUS_CLIENT_STATE_READY) { return NULL; } return &s->clients[s->names[name_index].client_index]; } -int jb_server_name_add(struct jb_server *s, char *name, int client_index) +int bus_name_add(bus_t *s, char *name, int client_index) { - if (jb_server_name_find(s, name) >= 0) { + if (bus_name_find(s, name) >= 0) { return -1; } - int bucket = hashmap_hash(name, strlen(name), JB_MAX_NAMES); + int bucket = hashmap_hash(name, strlen(name), BUS_MAX_NAMES); - for (int i = bucket; i < bucket + 12 && i < JB_MAX_NAMES; i++) { + for (int i = bucket; i < bucket + 12 && i < BUS_MAX_NAMES; i++) { if (s->names[i].client_index == -1) { s->names[i].client_index = client_index; s->names[i].name = name; @@ -96,11 +96,11 @@ int jb_server_name_add(struct jb_server *s, char *name, int client_index) return -1; } -int jb_server_client_match_add(struct jb_server *s, int client_index, char *match) +int bus_client_match_add(bus_t *s, int client_index, char *match) { - struct jb_client *c = &s->clients[client_index]; + bus_client_t *c = &s->clients[client_index]; - for (int i = 0; i < JB_MAX_MATCH; i++) { + for (int i = 0; i < BUS_MAX_MATCH; i++) { if (!c->matches[i]) { c->matches[i] = match_rule_from_string(match); c->match_count++; @@ -111,9 +111,9 @@ int jb_server_client_match_add(struct jb_server *s, int client_index, char *matc return -1; } -int jb_server_client_assign_unique_name(struct jb_server *s, int i) +int bus_client_assign_unique_name(bus_t *s, int i) { - struct jb_client *c = &s->clients[i]; + bus_client_t *c = &s->clients[i]; if (c->unique_name_index != -1) { return -1; } @@ -136,7 +136,7 @@ int jb_server_client_assign_unique_name(struct jb_server *s, int i) return -1; } - int name_index = jb_server_name_add(s, name, i); + int name_index = bus_name_add(s, name, i); if (name_index < 0) { free(name); return -1; @@ -146,14 +146,14 @@ int jb_server_client_assign_unique_name(struct jb_server *s, int i) return name_index; } -int jb_server_client_assign_own_name(struct jb_server *s, int i, char *name) +int bus_client_assign_own_name(bus_t *s, int i, char *name) { - struct jb_client *c = &s->clients[i]; + bus_client_t *c = &s->clients[i]; if (c->owned_name_index != -1 || !name || *name == ':' || *name == '\0') { return -1; } - int name_index = jb_server_name_add(s, name, i); + int name_index = bus_name_add(s, name, i); if (name_index < 0) { return -1; } @@ -162,7 +162,7 @@ int jb_server_client_assign_own_name(struct jb_server *s, int i, char *name) return 0; } -void jb_server_name_remove(struct jb_server *s, int i) +void bus_name_remove(bus_t *s, int i) { if (i >= 0) { if (s->names[i].name) { @@ -174,61 +174,61 @@ void jb_server_name_remove(struct jb_server *s, int i) } } -void jb_server_client_remove(struct jb_server *s, int i) +void bus_client_remove(bus_t *s, int i) { - struct jb_client *c = &s->clients[i]; + bus_client_t *c = &s->clients[i]; if (c->fd >= 0) { close(c->fd); } - for (int i = 0; i < JB_MAX_MATCH; i++) { + for (int i = 0; i < BUS_MAX_MATCH; i++) { if (c->matches[i]) { match_rule_free(c->matches[i]); c->matches[i] = NULL; } } - jb_server_name_remove(s, c->unique_name_index); - jb_server_name_remove(s, c->owned_name_index); + bus_name_remove(s, c->unique_name_index); + bus_name_remove(s, c->owned_name_index); c->unique_name_index = -1; c->owned_name_index = -1; c->match_count = 0; c->fd = -1; - c->state = JB_CLIENT_STATE_NONE; + c->state = BUS_CLIENT_STATE_NONE; s->fds[i].fd = -1; s->fds[i].events = 0; s->fds[i].revents = 0; s->clients_count--; } -void jb_server_client_error(struct jb_server *s, int i, const char *msg) +void bus_client_error(bus_t *s, int i, const char *msg) { - printf("jb_server_client_error: %s\n", msg); + printf("bus_client_error: %s\n", msg); send(s->clients[i].fd, msg, strlen(msg), 0); - jb_server_client_remove(s, i); + bus_client_remove(s, i); } -ssize_t jb_server_client_recv(struct jb_server *s, int i, void *buf, size_t n) +ssize_t bus_client_recv(bus_t *s, int i, void *buf, size_t n) { ssize_t status = recv(s->fds[i].fd, buf, n, 0); if (status <= 0) { - jb_server_client_remove(s, i); + bus_client_remove(s, i); } return status; } -int jb_server_broadcast_message(struct jb_server *s, wire_message_t *msg, wire_context_t *ctx, char *sender_unique_name) +int bus_broadcast_message(bus_t *s, wire_message_t *msg, wire_context_t *ctx, char *sender_unique_name) { int left = s->clients_count; - for (int i = 0; i < JB_MAX_CLIENTS && left > 0; i++) { + for (int i = 0; i < BUS_MAX_CLIENTS && left > 0; i++) { if (s->clients[i].match_count <= 0) { continue; } left--; - struct jb_client *c = &s->clients[i]; + bus_client_t *c = &s->clients[i]; int match_left = c->match_count; - for (int i = 0; i < JB_MAX_MATCH && match_left > 0; i++) { + for (int i = 0; i < BUS_MAX_MATCH && match_left > 0; i++) { if (!c->matches[i]) { continue; } @@ -253,9 +253,9 @@ int jb_server_broadcast_message(struct jb_server *s, wire_message_t *msg, wire_c return 0; } -int jb_server_unicast_message(struct jb_server *s, wire_message_t *msg, wire_context_t *ctx, char *target_name, char *sender_unique_name) +int bus_unicast_message(bus_t *s, wire_message_t *msg, wire_context_t *ctx, char *target_name, char *sender_unique_name) { - struct jb_client *target = jb_server_name_find_client(s, target_name); + bus_client_t *target = bus_name_find_client(s, target_name); if (!target) { return -1; } @@ -297,9 +297,9 @@ int jb_server_unicast_message(struct jb_server *s, wire_message_t *msg, wire_con } \ } while(0) \ -int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t *ctx) +int bus_client_process_message(bus_t *s, int i, wire_context_t *ctx) { - struct jb_client *client = &s->clients[i]; + bus_client_t *client = &s->clients[i]; wire_message_t msg = {0}; @@ -344,7 +344,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t } if (strcmp(member, "Hello") == 0) { - int unique_name_index = jb_server_client_assign_unique_name(s, i); + int unique_name_index = bus_client_assign_unique_name(s, i); if (unique_name_index < 0) { return -1; } @@ -365,7 +365,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t int status_code = DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER; - if (jb_server_client_assign_own_name(s, i, name_str) < 0) { + if (bus_client_assign_own_name(s, i, name_str) < 0) { free(name_str); // TODO: report the actual error status_code = DBUS_REQUEST_NAME_REPLY_EXISTS; @@ -385,7 +385,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t return -1; } - struct jb_client *target = jb_server_name_find_client(s, name); + bus_client_t *target = bus_name_find_client(s, name); if (!target || target->unique_name_index < 0) { _reply_error("org.freedesktop.DBus.Error.NameHasNoOwner"); return 0; @@ -401,7 +401,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t return -1; } - struct jb_client *target = jb_server_name_find_client(s, name); + bus_client_t *target = bus_name_find_client(s, name); _reply_begin("b") { TRYPTR(wire_set_u32(&reply_ctx, target ? 1 : 0)); @@ -418,7 +418,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t TRYPTR(wire_set_string(&reply_ctx, "org.freedesktop.DBus")); int left = s->names_count; - for (int i = 0; i < JB_MAX_NAMES && left > 0; i++) { + for (int i = 0; i < BUS_MAX_NAMES && left > 0; i++) { if (s->names[i].name && s->names[i].client_index >= 0) { left--; TRYPTR(wire_set_string(&reply_ctx, s->names[i].name)); @@ -461,7 +461,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t printf("client index %d adding match rule: '%s'\n", i, match); - TRYST(jb_server_client_match_add(s, i, match)); + TRYST(bus_client_match_add(s, i, match)); _reply_begin("") {} _reply_end() } else if (strcmp(member, "RemoveMatch") == 0) { @@ -492,7 +492,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t return -1; } - struct jb_client *target = jb_server_name_find_client(s, name); + bus_client_t *target = bus_name_find_client(s, name); if (!target || target->unique_name_index < 0 || target->fd < 0) { _reply_error("org.freedesktop.DBus.Error.NameHasNoOwner"); return 0; @@ -516,8 +516,8 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t uint32_t outer_array_start = reply_ctx.byte_cursor; int left = s->names_count; - for (int i = 0; i < JB_MAX_NAMES && left > 0; i++) { - struct jb_name *n = &s->names[i]; + for (int i = 0; i < BUS_MAX_NAMES && left > 0; i++) { + bus_name_t *n = &s->names[i]; if (!n->name || n->client_index < 0 || *n->name != ':') { continue; } @@ -525,7 +525,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t TRYPTR(wire_write_align(&reply_ctx, 8)); /* structs always aligned to 8 */ - struct jb_client *c = &s->clients[s->names[i].client_index]; + bus_client_t *c = &s->clients[s->names[i].client_index]; TRYPTR(wire_set_string(&reply_ctx, s->names[i].name)); /* unique name */ @@ -534,7 +534,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t uint32_t *name_array_len = TRYPTR(wire_set_u32(&reply_ctx, 0)); TRYPTR(wire_write_align(&reply_ctx, 4)); /* arrays start with the alignment of the type they contain */ uint32_t name_array_start = reply_ctx.byte_cursor; - for (int i = 0; i < JB_MAX_MATCH && match_left > 0; i++) { + for (int i = 0; i < BUS_MAX_MATCH && match_left > 0; i++) { if (!c->matches[i]) { continue; } @@ -580,13 +580,13 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t } if (destination_field->present) { /* unicast */ - if (jb_server_unicast_message(s, &msg, ctx, destination_field->t.str, s->names[client->unique_name_index].name) < 0) { + if (bus_unicast_message(s, &msg, ctx, destination_field->t.str, s->names[client->unique_name_index].name) < 0) { _reply_error("xyz.hippoz.jitterbug.UnicastFailed"); return 0; } } else { /* broadcast */ - if (jb_server_broadcast_message(s, &msg, ctx, s->names[client->unique_name_index].name) < 0) { + if (bus_broadcast_message(s, &msg, ctx, s->names[client->unique_name_index].name) < 0) { _reply_error("xyz.hippoz.jitterbug.BroadcastFailed"); return 0; } @@ -596,7 +596,7 @@ int jb_server_client_process_message(struct jb_server *s, int i, wire_context_t return 0; } -int jb_server_client_drain_messages(struct jb_server *s, int ci, uint8_t *data, uint32_t data_len) +int bus_client_drain_messages(bus_t *s, int ci, uint8_t *data, uint32_t data_len) { wire_context_t ctx = { .byte_cursor = 0, @@ -604,7 +604,7 @@ int jb_server_client_drain_messages(struct jb_server *s, int ci, uint8_t *data, .data_len = data_len }; - TRYST(jb_server_client_process_message(s, ci, &ctx)); + TRYST(bus_client_process_message(s, ci, &ctx)); for (int i = 0; i < 10; i++) { if (ctx.byte_cursor >= ctx.data_len || ctx.data[ctx.byte_cursor] != 'l') { @@ -614,26 +614,26 @@ int jb_server_client_drain_messages(struct jb_server *s, int ci, uint8_t *data, ctx.data = ctx.data + ctx.byte_cursor; ctx.data_len = ctx.data_len - ctx.byte_cursor; ctx.byte_cursor = 0; - TRYST(jb_server_client_process_message(s, ci, &ctx)); + TRYST(bus_client_process_message(s, ci, &ctx)); } return 0; } -void jb_server_free(struct jb_server *s) +void bus_free(bus_t *s) { if (!s) return; if (s->sock_fd) close(s->sock_fd); // freeing all clients will also free all matches and names - for (int i = 0; i < JB_MAX_CLIENTS; i++) { - jb_server_client_remove(s, i); + for (int i = 0; i < BUS_MAX_CLIENTS; i++) { + bus_client_remove(s, i); } free(s); } -struct jb_server *jb_server_create(const char *socket_path) +bus_t *bus_create(const char *socket_path) { - struct jb_server *s = malloc(sizeof(struct jb_server)); + bus_t *s = malloc(sizeof(bus_t)); if (s == NULL) { return NULL; } @@ -656,42 +656,42 @@ struct jb_server *jb_server_create(const char *socket_path) free(s); return NULL; } - if (listen(s->sock_fd, JB_BACKLOG) == -1) { + if (listen(s->sock_fd, BUS_BACKLOG) == -1) { close(s->sock_fd); free(s); return NULL; } - for (int i = 0; i < JB_MAX_CLIENTS; i++) { + for (int i = 0; i < BUS_MAX_CLIENTS; i++) { s->clients[i].fd = -1; s->clients[i].owned_name_index = -1; s->clients[i].unique_name_index = -1; - s->clients[i].state = JB_CLIENT_STATE_NONE; + s->clients[i].state = BUS_CLIENT_STATE_NONE; s->clients[i].match_count = 0; s->fds[i].fd = -1; s->fds[i].events = 0; s->fds[i].revents = 0; - for (int j = 0; j < JB_MAX_MATCH; j++) { + for (int j = 0; j < BUS_MAX_MATCH; j++) { s->clients[i].matches[j] = NULL; } } - for (int i = 0; i < JB_MAX_NAMES; i++) { + for (int i = 0; i < BUS_MAX_NAMES; i++) { s->names[i].client_index = -1; s->names[i].name = NULL; } s->names_count = 0; s->clients_count = 0; - s->fds[JB_MAX_CLIENTS].fd = s->sock_fd; - s->fds[JB_MAX_CLIENTS].events = POLLIN; - s->fd_num = JB_MAX_CLIENTS + 1; + s->fds[BUS_MAX_CLIENTS].fd = s->sock_fd; + s->fds[BUS_MAX_CLIENTS].events = POLLIN; + s->fd_num = BUS_MAX_CLIENTS + 1; return s; } -#define _client_die(m) ({jb_server_client_error(s,i,m);continue;}) -int jb_server_turn(struct jb_server *s) +#define _client_die(m) ({bus_client_error(s,i,m);continue;}) +int bus_turn(bus_t *s) { static const char agree_unix_fd[] = "AGREE_UNIX_FD\r\n"; static const char auth_ok[] = "OK aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r\n"; @@ -714,23 +714,23 @@ int jb_server_turn(struct jb_server *s) for (int i = 0; i < s->fd_num; i++) { int fd = s->fds[i].fd; if (s->fds[i].revents & POLLNVAL) { - fprintf(stderr, "jb_server_turn: error: got POLLNVAL for fds[%d]. This is considered a bug in the server implementation.\n", i); + fprintf(stderr, "bus_turn: error: got POLLNVAL for fds[%d]. This is considered a bug in the server implementation.\n", i); return -1; } if (s->fds[i].revents & POLLERR) { if (fd == s->sock_fd) { - fprintf(stderr, "jb_server_turn: error: got POLLERR for sock_fd\n"); + fprintf(stderr, "bus_turn: error: got POLLERR for sock_fd\n"); return -1; } - jb_server_client_remove(s, i); + bus_client_remove(s, i); continue; } if (s->fds[i].revents & POLLHUP) { if (fd == s->sock_fd) { - fprintf(stderr, "jb_server_turn: error: got POLLHUP for sock_fd\n"); + fprintf(stderr, "bus_turn: error: got POLLHUP for sock_fd\n"); return -1; } - jb_server_client_remove(s, i); + bus_client_remove(s, i); continue; } if (s->fds[i].revents & POLLIN) { @@ -740,7 +740,7 @@ int jb_server_turn(struct jb_server *s) // new connection int fd = TRYST(accept(s->sock_fd, NULL, NULL)); - if (jb_server_client_add(s, fd) == -1) { + if (bus_client_add(s, fd) == -1) { close(fd); } continue; @@ -753,15 +753,15 @@ int jb_server_turn(struct jb_server *s) if (bytes <= 0) { // error during recv() OR client disconnected, disconnect the client // TODO: should we actually do this? - jb_server_client_remove(s, i); + bus_client_remove(s, i); continue; } printf("\nrecv: got %zd bytes\n", bytes); - struct jb_client *c = &s->clients[i]; + bus_client_t *c = &s->clients[i]; switch (c->state) { - case JB_CLIENT_STATE_WAIT_AUTH: { + case BUS_CLIENT_STATE_WAIT_AUTH: { // The D-Bus authentication protocol is a simple plain text protocol. // Before the flow of messages can begin, the two applications must authenticate. // SPEC: https://dbus.freedesktop.org/doc/dbus-specification.html#auth-protocol @@ -778,23 +778,23 @@ int jb_server_turn(struct jb_server *s) send(fd, auth_list, sizeof(auth_list) - 1, 0); } else if (strcmp(auth_string, "AUTH EXTERNAL 31303030\r\n") == 0 || strcmp(auth_string, "DATA\r\n") == 0) { send(fd, auth_ok, sizeof(auth_ok) - 1, 0); - c->state = JB_CLIENT_STATE_WAIT_BEGIN; + c->state = BUS_CLIENT_STATE_WAIT_BEGIN; } else if (strcmp(auth_string, "AUTH EXTERNAL\r\n") == 0) { send(fd, auth_data, sizeof(auth_data) - 1, 0); } } break; - case JB_CLIENT_STATE_WAIT_BEGIN: { + case BUS_CLIENT_STATE_WAIT_BEGIN: { // Right now, we're expecting the client to either immediately begin the connection, // or to negotiate UNIX file descriptor passing. if (strncmp(data, "BEGIN\r\n", 7) == 0) { - c->state = JB_CLIENT_STATE_READY; + c->state = BUS_CLIENT_STATE_READY; // At this point, a D-Bus connection has been established. // The first octet after the \r\n of the BEGIN command is the first octet of the D-Bus communication. // SPEC: https://dbus.freedesktop.org/doc/dbus-specification.html#auth-command-begin char *first_message_begin = data + 7; /* 7 = length of "BEGIN\r\n" */ if (*first_message_begin == 'l' || *first_message_begin == 'B') { // This looks like a D-Bus message. Let's process it! - if (jb_server_client_drain_messages(s, i, (uint8_t *)first_message_begin, data_buffer_len - 7) < 0) { + if (bus_client_drain_messages(s, i, (uint8_t *)first_message_begin, data_buffer_len - 7) < 0) { _client_die("failed to process message"); } } @@ -806,13 +806,13 @@ int jb_server_turn(struct jb_server *s) } } break; - case JB_CLIENT_STATE_READY: { - if (jb_server_client_drain_messages(s, i, (uint8_t*)data, data_buffer_len) < 0) { + case BUS_CLIENT_STATE_READY: { + if (bus_client_drain_messages(s, i, (uint8_t*)data, data_buffer_len) < 0) { _client_die("failed to process message"); } } break; - case JB_CLIENT_STATE_NONE: {} /* through */ + case BUS_CLIENT_STATE_NONE: {} /* through */ default: { _client_die("bad state"); } break; diff --git a/server.h b/server.h index 190579a..134445a 100644 --- a/server.h +++ b/server.h @@ -6,48 +6,48 @@ #include // TODO: dynamically size the arrays -#define JB_MAX_CLIENTS 256 -#define JB_MAX_NAMES 512 -#define JB_MAX_MATCH 12 -#define JB_BACKLOG 12 +#define BUS_MAX_CLIENTS 256 +#define BUS_MAX_NAMES 512 +#define BUS_MAX_MATCH 12 +#define BUS_BACKLOG 12 enum { - JB_CLIENT_STATE_NONE, - JB_CLIENT_STATE_WAIT_AUTH, - JB_CLIENT_STATE_WAIT_BEGIN, - JB_CLIENT_STATE_READY + BUS_CLIENT_STATE_NONE, + BUS_CLIENT_STATE_WAIT_AUTH, + BUS_CLIENT_STATE_WAIT_BEGIN, + BUS_CLIENT_STATE_READY }; -struct jb_client { +typedef struct bus_client { int fd; uint8_t state; int16_t unique_name_index; int16_t owned_name_index; int8_t match_count; - match_rule_t *matches[JB_MAX_MATCH]; -}; + match_rule_t *matches[BUS_MAX_MATCH]; +} bus_client_t; -struct jb_name { +typedef struct bus_name { char *name; int32_t client_index; -}; +} bus_name_t; -struct jb_server { +typedef struct bus { int sock_fd; int fd_num; int names_count; int clients_count; - struct jb_client clients[JB_MAX_CLIENTS]; - struct jb_name names[JB_MAX_NAMES]; - struct pollfd fds[JB_MAX_CLIENTS + 1]; -}; + bus_client_t clients[BUS_MAX_CLIENTS]; + bus_name_t names[BUS_MAX_NAMES]; + struct pollfd fds[BUS_MAX_CLIENTS + 1]; +} bus_t; -int jb_server_client_add(struct jb_server *s, int fd); -void jb_server_client_remove(struct jb_server *s, int i); -void jb_server_free(struct jb_server *s); -struct jb_server *jb_server_create(const char *socket_path); -int jb_server_turn(struct jb_server *s); +int bus_client_add(bus_t *s, int fd); +void bus_client_remove(bus_t *s, int i); +void bus_free(bus_t *s); +bus_t *bus_create(const char *socket_path); +int bus_turn(bus_t *s); #endif // _JITTERBUG__SERVER_H \ No newline at end of file