diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/common.c | 10 | ||||
| -rw-r--r-- | src/server/common.h | 19 | ||||
| -rw-r--r-- | src/server/db.c | 36 | ||||
| -rw-r--r-- | src/server/meson.build | 3 | ||||
| -rw-r--r-- | src/server/resource.h | 5 | ||||
| -rw-r--r-- | src/server/server.c | 262 | ||||
| -rw-r--r-- | src/server/server.h | 20 |
7 files changed, 192 insertions, 163 deletions
diff --git a/src/server/common.c b/src/server/common.c deleted file mode 100644 index 765418c..0000000 --- a/src/server/common.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "common.h" - -//const str *CAMU_DB_PATH = al_str_c("/mnt/store/files/camu_db"); -str *CAMU_DB_PATH = al_str_c("/home/andrew/c/camu/data/camu_db_test"); - -str *CAMU_SERVER_IP = al_str_c("108.52.160.112"); -//str *CAMU_SERVER_IP = al_str_c("127.0.0.1"); - -str *CAMU_UNIX_PATH = al_str_c("/tmp/camu_sock"); -str *CAMU_UNIX_LOCAL = al_str_c("/tmp/cmv_sock"); diff --git a/src/server/common.h b/src/server/common.h index b6ee7a1..b4c6344 100644 --- a/src/server/common.h +++ b/src/server/common.h @@ -2,19 +2,10 @@ #include <al/str.h> -extern str *CAMU_DB_PATH; - #define CAMU_PORT 14356 #define CAMU_MULTIPLEX_RPC 0x53 #define CAMU_MULTIPLEX_LIANA 0x85 -extern str *CAMU_SERVER_IP; -extern str *CAMU_UNIX_PATH; -extern str *CAMU_UNIX_LOCAL; - -#define CAMU_LOCAL_TYPE AKI_SOCKET_TCP -#define CAMU_LOCAL_ADDR CAMU_SERVER_IP - enum { CAMU_NODE = 0, CAMU_CLIENT, @@ -47,9 +38,16 @@ enum { enum { CAMU_RESOURCE_FILE = 0, +#ifdef NAUNET_HAS_CURL + CAMU_RESOURCE_HTTP, +#endif +#ifdef CACHE_HAVE_CDIO CAMU_RESOURCE_CDIO, +#endif +#ifdef CAMU_HAVE_PORTAL CAMU_RESOURCE_PORTAL, CAMU_RESOURCE_SIMPLE_SEARCH +#endif }; AL_UNUSED_FUNCTION_PUSH @@ -57,8 +55,7 @@ AL_UNUSED_FUNCTION_PUSH static bool camu_is_url(str *s, u32 i) { return al_str_cmp(s, al_str_c("https://"), i, 8) == 0 - || al_str_cmp(s, al_str_c("http://"), i, 7) == 0 - || al_str_cmp(s, al_str_c("cdda://"), i, 7) == 0; + || al_str_cmp(s, al_str_c("http://"), i, 7) == 0; } AL_UNUSED_FUNCTION_POP diff --git a/src/server/db.c b/src/server/db.c index 6f76864..ce4c99e 100644 --- a/src/server/db.c +++ b/src/server/db.c @@ -1,17 +1,17 @@ #include <al/log.h> -#include <aki/file.h> +#include <nnwt/file.h> #include <jansson.h> #include "server.h" -static bool open_user(struct camu_server *server, struct aki_dir_entry *dir) +static bool open_user(struct camu_server *server, struct nn_dir_entry *dir) { - struct aki_file file; - if (!aki_file_open(&file, &dir->path, 0)) { + struct nn_file file; + if (!nn_file_open(&file, &dir->path, 0)) { return false; } str s; - aki_file_read_as_str(&file, &s); + nn_file_read_as_str(&file, &s); json_error_t error; json_t *root = json_loadb(s.data, s.len, 0, &error); if (!root) { @@ -30,28 +30,28 @@ static bool open_user(struct camu_server *server, struct aki_dir_entry *dir) bool camu_db_open(struct camu_server *server, str *path) { - struct aki_dir camu_db; - if (!aki_dir_open(&camu_db, path)) { + struct nn_dir camu_db; + if (!nn_dir_open(&camu_db, path)) { return false; } - struct aki_dir_entry entry; - while (aki_dir_read(&camu_db, &entry)) { + struct nn_dir_entry entry; + while (nn_dir_read(&camu_db, &entry)) { if (al_str_eq(&entry.name, al_str_c("users"))) { - struct aki_dir users; - if (aki_dir_open(&users, &entry.path)) { - struct aki_dir_entry user; - while (aki_dir_read(&users, &user)) { - if (user.type == AKI_ENTRY_FILE) { + struct nn_dir users; + if (nn_dir_open(&users, &entry.path)) { + struct nn_dir_entry user; + while (nn_dir_read(&users, &user)) { + if (user.type == NNWT_ENTRY_FILE) { open_user(server, &user); } - aki_dir_entry_free(&user); + nn_dir_entry_free(&user); } - aki_dir_close(&users); + nn_dir_close(&users); } } - aki_dir_entry_free(&entry); + nn_dir_entry_free(&entry); } - aki_dir_close(&camu_db); + nn_dir_close(&camu_db); return true; } diff --git a/src/server/meson.build b/src/server/meson.build index ab100e1..52c993f 100644 --- a/src/server/meson.build +++ b/src/server/meson.build @@ -1,8 +1,7 @@ server_src = [ 'server.c', - 'common.c', 'user.c', - 'db.c', + 'db.c' ] server_deps = [cache, liana_server] if get_option('portal').enabled() diff --git a/src/server/resource.h b/src/server/resource.h index 559e2b4..1cd00fc 100644 --- a/src/server/resource.h +++ b/src/server/resource.h @@ -17,6 +17,11 @@ struct camu_resource_file { str path; }; +struct camu_resource_http { + struct camu_resource r; + str url; +}; + struct camu_resource_portal { struct camu_resource r; struct camu_post *post; diff --git a/src/server/server.c b/src/server/server.c index 4ec61da..7d0b2fe 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -3,7 +3,9 @@ #include "../cache/handlers/file.h" #include "../cache/handlers/http.h" +#ifdef CACHE_HAVE_CDIO #include "../cache/handlers/cdio.h" +#endif #include "../libclient/common.h" #include "../libsink/common.h" #ifdef CAMU_HAVE_PORTAL @@ -25,7 +27,7 @@ static struct camu_user *get_user_by_username(struct camu_server *server, str *u return NULL; } -static struct camu_server_client *get_client_by_connection(struct camu_server *server, struct aki_rpc_connection *conn) +static struct camu_server_client *get_client_by_connection(struct camu_server *server, struct nn_rpc_connection *conn) { struct camu_server_client *client; al_array_foreach(server->clients, i, client) { @@ -52,26 +54,30 @@ static struct camu_server_sink *get_sink_from_name(struct camu_server *server, s return NULL; } -static void write_user_state(struct camu_server *server, struct camu_user *user, struct aki_packet *packet) +static void write_user_state(struct camu_server *server, struct camu_user *user, struct nn_packet *packet) { (void)user; +#ifdef CAMU_HAVE_PORTAL + nn_packet_write_u32(packet, server->bridge.searches.size); struct camu_search *search; - aki_packet_write_u32(packet, server->bridge.searches.size); al_array_foreach(server->bridge.searches, i, search) { - aki_packet_write_s32(packet, search->id); - aki_packet_write_str(packet, &search->module); - aki_packet_write_str(packet, &search->query); + nn_packet_write_s32(packet, search->id); + nn_packet_write_str(packet, &search->module); + nn_packet_write_str(packet, &search->query); } +#else + nn_packet_write_u32(packet, 0); +#endif } static void handle_toggle_sink(struct camu_server *server, str *name, struct camu_server_sink *sink, bool enable); -static bool identify_callback(void *userdata, struct aki_rpc_connection *conn, - struct aki_packet *packet, struct aki_packet *rpacket) +static bool identify_callback(void *userdata, struct nn_rpc_connection *conn, + struct nn_packet *packet, struct nn_packet *rpacket) { struct camu_server *server = (struct camu_server *)userdata; - u8 op = aki_packet_read_u8(packet); + u8 op = nn_packet_read_u8(packet); switch (op) { case CAMU_NODE: { struct camu_server_node *node = al_alloc_object(struct camu_server_node); @@ -84,7 +90,7 @@ static bool identify_callback(void *userdata, struct aki_rpc_connection *conn, struct camu_server_client *client = al_alloc_object(struct camu_server_client); client->conn = conn; str username; - aki_packet_read_str(packet, &username); + nn_packet_read_str(packet, &username); struct camu_user *user = get_user_by_username(server, &username); if (!user) { user = al_alloc_object(struct camu_user); @@ -101,7 +107,7 @@ static bool identify_callback(void *userdata, struct aki_rpc_connection *conn, struct camu_server_sink *sink = al_alloc_object(struct camu_server_sink); sink->conn = conn; str name; - aki_packet_read_str(packet, &name); + nn_packet_read_str(packet, &name); al_str_clone(&sink->name, &name); sink->server = server; al_array_push(server->sinks, sink); @@ -111,21 +117,10 @@ static bool identify_callback(void *userdata, struct aki_rpc_connection *conn, } } - aki_packet_free(packet); + nn_packet_free(packet); return true; } -static bool client_still_connected(struct camu_server *server, struct aki_rpc_connection *conn) -{ - struct camu_server_client *client; - al_array_foreach(server->clients, i, client) { - if (client->conn == conn) { - return true; - } - } - return false; -} - static void list_sink_callback(void *userdata, u8 op, struct lia_list_entry *entry, s32 sequence, struct lia_timing *timing) { struct camu_server_sink *sink = (struct camu_server_sink *)userdata; @@ -134,44 +129,44 @@ static void list_sink_callback(void *userdata, u8 op, struct lia_list_entry *ent case LIANA_SINK_BUFFER: case LIANA_SINK_BUFFER_AND_QUEUE: { struct camu_resource *resource = (struct camu_resource *)entry->opaque; - struct aki_packet *packet = aki_rpc_get_packet(sink->conn->rpc, CAMU_SINK_SET); - aki_packet_write_u8(packet, op); - aki_packet_write_str(packet, &sink->server->addr); - aki_packet_write_u16(packet, CAMU_PORT); - aki_packet_write_u32(packet, resource->node->id); - aki_packet_write_u32(packet, entry->id); - aki_packet_write_s32(packet, sequence); - aki_packet_write_u64(packet, timing->at); + struct nn_packet *packet = nn_rpc_get_packet(sink->conn->rpc, CAMU_SINK_SET); + nn_packet_write_u8(packet, op); + nn_packet_write_str(packet, &sink->server->addr); + nn_packet_write_u16(packet, CAMU_PORT); + nn_packet_write_u32(packet, resource->node->id); + nn_packet_write_u32(packet, entry->id); + nn_packet_write_s32(packet, sequence); + nn_packet_write_u64(packet, timing->at); al_assert(timing->seek_pos <= INT64_MAX); - aki_packet_write_u64(packet, timing->seek_pos); - aki_packet_write_u8(packet, timing->pause); - aki_packet_write_bool(packet, timing->previous_ended); - aki_packet_write_bool(packet, timing->ended); - aki_rpc_connection_command(sink->conn, packet, NULL, NULL); + nn_packet_write_u64(packet, timing->seek_pos); + nn_packet_write_u8(packet, timing->pause); + nn_packet_write_bool(packet, timing->previous_ended); + nn_packet_write_bool(packet, timing->ended); + nn_rpc_connection_command(sink->conn, packet, NULL, NULL); break; } case LIANA_SINK_UNSET: { - struct aki_packet *packet = aki_rpc_get_packet(sink->conn->rpc, CAMU_SINK_SET); - aki_packet_write_u8(packet, op); - aki_rpc_connection_command(sink->conn, packet, NULL, NULL); + struct nn_packet *packet = nn_rpc_get_packet(sink->conn->rpc, CAMU_SINK_SET); + nn_packet_write_u8(packet, op); + nn_rpc_connection_command(sink->conn, packet, NULL, NULL); break; } case LIANA_SINK_PAUSE: { - struct aki_packet *packet = aki_rpc_get_packet(sink->conn->rpc, CAMU_SINK_PAUSE); - aki_packet_write_u32(packet, entry->id); - aki_packet_write_s32(packet, sequence); - aki_packet_write_u64(packet, timing->at); - aki_packet_write_u8(packet, timing->pause); - aki_rpc_connection_command(sink->conn, packet, NULL, NULL); + struct nn_packet *packet = nn_rpc_get_packet(sink->conn->rpc, CAMU_SINK_PAUSE); + nn_packet_write_u32(packet, entry->id); + nn_packet_write_s32(packet, sequence); + nn_packet_write_u64(packet, timing->at); + nn_packet_write_u8(packet, timing->pause); + nn_rpc_connection_command(sink->conn, packet, NULL, NULL); break; } case LIANA_SINK_SEEK: { - struct aki_packet *packet = aki_rpc_get_packet(sink->conn->rpc, CAMU_SINK_SEEK); - aki_packet_write_u32(packet, entry->id); - aki_packet_write_s32(packet, sequence); - aki_packet_write_u64(packet, timing->at); - aki_packet_write_u64(packet, timing->seek_pos); - aki_rpc_connection_command(sink->conn, packet, NULL, NULL); + struct nn_packet *packet = nn_rpc_get_packet(sink->conn->rpc, CAMU_SINK_SEEK); + nn_packet_write_u32(packet, entry->id); + nn_packet_write_s32(packet, sequence); + nn_packet_write_u64(packet, timing->at); + nn_packet_write_u64(packet, timing->seek_pos); + nn_rpc_connection_command(sink->conn, packet, NULL, NULL); break; } } @@ -188,7 +183,7 @@ void handle_toggle_sink(struct camu_server *server, str *name, struct camu_serve static void process_pending(struct camu_resource *resource) { array(struct lia_list_entry *) pending; - // resource->pending may be edited in a list_pump() call. + // resource->pending may be edited during a list_pump() call. al_array_clone(pending, resource->pending); resource->pending.size = 0; struct lia_list_entry *entry; @@ -244,42 +239,54 @@ static void list_callback(void *userdata, u8 op, struct lia_list_entry *entry, v } break; } +} +#ifdef CAMU_HAVE_PORTAL +static bool client_still_connected(struct camu_server *server, struct nn_rpc_connection *conn) +{ + struct camu_server_client *client; + al_array_foreach(server->clients, i, client) { + if (client->conn == conn) { + return true; + } + } + return false; } static void client_portal_callback(void *userdata0, void *userdata1, struct camu_portal_result *result) { struct camu_server *server = (struct camu_server *)userdata0; - struct aki_rpc_connection *conn = (struct aki_rpc_connection *)userdata1; + struct nn_rpc_connection *conn = (struct nn_rpc_connection *)userdata1; if (!client_still_connected(server, conn)) return; - struct aki_packet *packet = aki_rpc_get_packet(conn->rpc, CAMU_CLIENT_RESULTS); - aki_packet_write_u8(packet, result->op); - aki_packet_write_s32(packet, result->id); + struct nn_packet *packet = nn_rpc_get_packet(conn->rpc, CAMU_CLIENT_RESULTS); + nn_packet_write_u8(packet, result->op); + nn_packet_write_s32(packet, result->id); switch (result->op) { case CAMU_CLIENT_CREATE_SEARCH: { break; } case CAMU_CLIENT_GET_PAGE: { struct camu_result_page *page = result->page; - aki_packet_write_u32(packet, page->num); - aki_packet_write_u32(packet, page->posts.size); + nn_packet_write_u32(packet, page->num); + nn_packet_write_u32(packet, page->posts.size); struct camu_post *post; al_array_foreach_ptr(page->posts, i, post) { - aki_packet_write_post(packet, post); + nn_packet_write_post(packet, post); } - aki_packet_write_u32(packet, page->list.size); + nn_packet_write_u32(packet, page->list.size); str *unique_id; al_array_foreach_ptr(page->list, i, unique_id) { - aki_packet_write_str(packet, unique_id); + nn_packet_write_str(packet, unique_id); } break; } } - aki_rpc_connection_command(conn, packet, NULL, NULL); + nn_rpc_connection_command(conn, packet, NULL, NULL); } +#endif -static bool client_command_callback(void *userdata, struct aki_rpc_connection *conn, - struct aki_packet *packet, struct aki_packet *rpacket) +static bool client_command_callback(void *userdata, struct nn_rpc_connection *conn, + struct nn_packet *packet, struct nn_packet *rpacket) { struct camu_server *server = (struct camu_server *)userdata; (void)rpacket; @@ -287,11 +294,11 @@ static bool client_command_callback(void *userdata, struct aki_rpc_connection *c struct camu_server_client *client = get_client_by_connection(server, conn); if (!client) goto out; - u8 op = aki_packet_read_u8(packet); + u8 op = nn_packet_read_u8(packet); switch (op) { case CAMU_CLIENT_CREATE_LIST: { str name; - aki_packet_read_str(packet, &name); + nn_packet_read_str(packet, &name); struct lia_list *list = al_alloc_object(struct lia_list); lia_list_init(list, &name); list->callback = list_callback; @@ -301,35 +308,38 @@ static bool client_command_callback(void *userdata, struct aki_rpc_connection *c } case CAMU_CLIENT_TOGGLE_SINK: { str name; - aki_packet_read_str(packet, &name); + nn_packet_read_str(packet, &name); struct camu_server_sink *sink = get_sink_from_name(server, &name); if (!sink) goto out; - aki_packet_read_str(packet, &name); // list name. - bool enable = aki_packet_read_bool(packet); + nn_packet_read_str(packet, &name); // list name. + bool enable = nn_packet_read_bool(packet); handle_toggle_sink(server, &name, sink, enable); break; } +#ifdef CAMU_HAVE_PORTAL case CAMU_CLIENT_CREATE_SEARCH: { str module; str query; - aki_packet_read_str(packet, &module); - aki_packet_read_str(packet, &query); + nn_packet_read_str(packet, &module); + nn_packet_read_str(packet, &query); camu_portal_create_search(&server->bridge, &module, &query, client_portal_callback, conn); break; } case CAMU_CLIENT_GET_PAGE: { - s32 id = aki_packet_read_s32(packet); - u32 num = aki_packet_read_u32(packet); + s32 id = nn_packet_read_s32(packet); + u32 num = nn_packet_read_u32(packet); camu_portal_get_page(&server->bridge, id, num, client_portal_callback, conn); break; } +#endif } out: - aki_packet_free(packet); + nn_packet_free(packet); return true; } +#ifdef CAMU_HAVE_PORTAL static struct cch_entry *entry_from_post(struct camu_server *server, struct camu_post *post, u32 index) { struct cch_entry *entry = NULL; @@ -378,17 +388,18 @@ static void simple_search_portal_callback(void *userdata0, void *userdata1, stru al_log_warn("server", "Server resource failed to load."); resource->load = LIANA_ENTRY_ERRORED; } +#endif -static void handle_add_command(struct camu_server *server, struct lia_list *list, struct aki_packet *packet) +static void handle_add_command(struct camu_server *server, struct lia_list *list, struct nn_packet *packet) { - u8 op = aki_packet_read_u8(packet); + u8 op = nn_packet_read_u8(packet); struct cch_entry *entry = NULL; struct camu_resource *resource = NULL; wstr name; switch (op) { case CAMU_RESOURCE_FILE: { str path; - aki_packet_read_str(packet, &path); + nn_packet_read_str(packet, &path); entry = cch_handler_file_create(&path); if (!entry) return; struct camu_resource_file *file = al_alloc_object(struct camu_resource_file); @@ -399,12 +410,36 @@ static void handle_add_command(struct camu_server *server, struct lia_list *list resource->load = LIANA_ENTRY_PREPARED; break; } +#ifdef NAUNET_HAS_CURL + case CAMU_RESOURCE_HTTP: { + str url; + nn_packet_read_str(packet, &url); + entry = cch_handler_http_create(&url, server->loop); + if (!entry) return; + entry->handler->maybe_spawn_worker(entry->handler, 0); + struct camu_resource_http *http = al_alloc_object(struct camu_resource_http); + al_str_clone(&http->url, &url); + al_wstr_from_str(&name, &url); + resource = (struct camu_resource *)http; + resource->type = CAMU_RESOURCE_HTTP; + resource->load = LIANA_ENTRY_PREPARED; + break; + } +#endif +#ifdef CACHE_HAVE_CDIO case CAMU_RESOURCE_CDIO: { - u32 track = aki_packet_read_u32(packet); entry = cch_handler_cdio_create(); if (!entry) return; - struct cch_chapter *chapter = &al_array_at(entry->chapters, track); - entry->handler->maybe_spawn_worker(entry->handler, chapter->start); + str url; + nn_packet_read_str(packet, &url); + u32 track = 0; + if (url.len > 7) { + s64 index = al_str_to_long(al_str_substr(&url, 7, url.len), 10); + if (index > 0 && index <= entry->chapters.size) + track = (u32)index - 1; + } + entry->chapter = &al_array_at(entry->chapters, track); + entry->handler->maybe_spawn_worker(entry->handler, entry->chapter->start); struct camu_resource_cdio *cdio = al_alloc_object(struct camu_resource_cdio); cdio->track = track; al_wstr_from_cstr(&name, "cdio"); @@ -413,10 +448,12 @@ static void handle_add_command(struct camu_server *server, struct lia_list *list resource->load = LIANA_ENTRY_PREPARED; break; } +#endif +#ifdef CAMU_HAVE_PORTAL case CAMU_RESOURCE_PORTAL: { str unique_id; - aki_packet_read_str(packet, &unique_id); - u32 index = aki_packet_read_u32(packet); + nn_packet_read_str(packet, &unique_id); + u32 index = nn_packet_read_u32(packet); struct camu_post *post = camu_post_cache_get(&server->cache, &unique_id); entry = entry_from_post(server, post, index); if (!entry) return; @@ -430,7 +467,7 @@ static void handle_add_command(struct camu_server *server, struct lia_list *list } case CAMU_RESOURCE_SIMPLE_SEARCH: { str search; - aki_packet_read_str(packet, &search); + nn_packet_read_str(packet, &search); struct camu_resource_portal *portal = al_alloc_object(struct camu_resource_portal); portal->post = NULL; al_wstr_from_str(&name, &search); @@ -448,6 +485,7 @@ static void handle_add_command(struct camu_server *server, struct lia_list *list al_str_free(&query); break; } +#endif } al_assert(resource); if (entry) { @@ -462,34 +500,34 @@ static void handle_add_command(struct camu_server *server, struct lia_list *list al_wstr_free(&name); } -static bool list_action_callback(void *userdata, struct aki_rpc_connection *conn, - struct aki_packet *packet, struct aki_packet *rpacket) +static bool list_action_callback(void *userdata, struct nn_rpc_connection *conn, + struct nn_packet *packet, struct nn_packet *rpacket) { struct camu_server *server = (struct camu_server *)userdata; (void)conn; (void)rpacket; str name; - aki_packet_read_str(packet, &name); + nn_packet_read_str(packet, &name); struct lia_list *list = get_list_from_name(server, &name); if (!list) goto out; - u8 op = aki_packet_read_u8(packet); + u8 op = nn_packet_read_u8(packet); switch (op) { case CAMU_LIST_ADD: { handle_add_command(server, list, packet); break; } case CAMU_LIST_SKIP: { - s32 sequence = aki_packet_read_s32(packet); - s32 n = aki_packet_read_s32(packet); + s32 sequence = nn_packet_read_s32(packet); + s32 n = nn_packet_read_s32(packet); lia_list_skip(list, sequence, n); break; } case CAMU_LIST_SKIPTO: { - s32 sequence = aki_packet_read_s32(packet); - s32 i = aki_packet_read_s32(packet); + s32 sequence = nn_packet_read_s32(packet); + s32 i = nn_packet_read_s32(packet); lia_list_skipto(list, sequence, i); break; } @@ -498,15 +536,15 @@ static bool list_action_callback(void *userdata, struct aki_rpc_connection *conn break; } case CAMU_LIST_TOGGLE_PAUSE: { - s32 sequence = aki_packet_read_s32(packet); - f64 pts = aki_packet_read_f64(packet); + s32 sequence = nn_packet_read_s32(packet); + f64 pts = nn_packet_read_f64(packet); lia_list_toggle_pause(list, sequence, pts); break; } case CAMU_LIST_SEEK: { - s32 sequence = aki_packet_read_s32(packet); - u32 id = aki_packet_read_u32(packet); - f64 percent = aki_packet_read_f64(packet); + s32 sequence = nn_packet_read_s32(packet); + u32 id = nn_packet_read_u32(packet); + f64 percent = nn_packet_read_f64(packet); lia_list_seek(list, sequence, id, percent); break; } @@ -515,24 +553,24 @@ static bool list_action_callback(void *userdata, struct aki_rpc_connection *conn break; } case CAMU_LIST_END: { - u32 id = aki_packet_read_u32(packet); + u32 id = nn_packet_read_u32(packet); lia_list_end(list, id); break; } } out: - aki_packet_free(packet); + nn_packet_free(packet); return false; } -static struct aki_rpc_command commands[] = { +static struct nn_rpc_command commands[] = { { .op = CAMU_SERVER_IDENTIFY, .callback = identify_callback, .userdata = NULL }, { .op = CAMU_SERVER_CLIENT_COMMAND, .callback = client_command_callback, .userdata = NULL }, { .op = CAMU_SERVER_LIST_ACTION, .callback = list_action_callback, .userdata = NULL } }; -static void connection_callback(void *userdata, struct aki_rpc_connection *conn) +static void connection_callback(void *userdata, struct nn_rpc_connection *conn) { // TODO: Cleanup zombie connections. (void)userdata; @@ -555,7 +593,7 @@ static void cleanup_sink(struct camu_server_sink *sink) al_free(sink); } -static void connection_closed_callback(void *userdata, struct aki_rpc_connection *conn) +static void connection_closed_callback(void *userdata, struct nn_rpc_connection *conn) { struct camu_server *server = (struct camu_server *)userdata; @@ -594,12 +632,12 @@ static void connection_closed_callback(void *userdata, struct aki_rpc_connection } } -static bool multiplex_callback(void *userdata, u8 id, struct aki_socket *sock) +static bool multiplex_callback(void *userdata, u8 id, struct nn_socket *sock) { struct camu_server *server = (struct camu_server *)userdata; switch (id) { case CAMU_MULTIPLEX_RPC: - aki_rpc_add_socket(&server->server, sock); + nn_rpc_add_socket(&server->server, sock); return true; case CAMU_MULTIPLEX_LIANA: lia_server_add_socket(&server->data.server, sock); @@ -610,7 +648,7 @@ static bool multiplex_callback(void *userdata, u8 id, struct aki_socket *sock) return false; } -bool camu_server_init(struct camu_server *server, u8 type, struct aki_event_loop *loop) +bool camu_server_init(struct camu_server *server, u8 type, struct nn_event_loop *loop) { server->loop = loop; server->addr = al_str_zero(); @@ -626,10 +664,10 @@ bool camu_server_init(struct camu_server *server, u8 type, struct aki_event_loop list->userdata = server; al_array_push(server->lists, list); - aki_rpc_init(&server->server, server->loop, connection_callback, connection_closed_callback, server); + nn_rpc_init(&server->server, server->loop, connection_callback, connection_closed_callback, server); for (u32 i = 0; i < ARRAY_SIZE(commands); i++) { commands[i].userdata = server; - aki_rpc_add_command(&server->server, &commands[i]); + nn_rpc_add_command(&server->server, &commands[i]); } lia_server_init(&server->data.server, server->loop); @@ -639,14 +677,14 @@ bool camu_server_init(struct camu_server *server, u8 type, struct aki_event_loop camu_portal_init(&server->bridge, &server->cache, server->loop, server); #endif - return aki_multiplex_socket_init(&server->multi, type, multiplex_callback, server); + return nn_multiplex_socket_init(&server->multi, type, multiplex_callback, server); } bool camu_server_listen(struct camu_server *server, str *addr, u16 port) { al_str_clone(&server->addr, addr); - if (server->multi.sock.type == AKI_SOCKET_TCP) addr = NULL; // any - return aki_multiplex_socket_listen(&server->multi, server->loop, addr, port); + if (server->multi.sock.type == NNWT_SOCKET_TCP) addr = NULL; // any + return nn_multiplex_socket_listen(&server->multi, server->loop, addr, port); } void camu_server_close(struct camu_server *server) @@ -655,7 +693,7 @@ void camu_server_close(struct camu_server *server) camu_portal_close(&server->bridge); #endif lia_server_close(&server->data.server); - aki_multiplex_socket_close(&server->multi); + nn_multiplex_socket_close(&server->multi); } void camu_server_free(struct camu_server *server) @@ -668,11 +706,11 @@ void camu_server_free(struct camu_server *server) //} al_array_free(server->data.resources); lia_server_free(&server->data.server); - aki_rpc_free(&server->server); + nn_rpc_free(&server->server); al_str_free(&server->addr); } -void camu_server_local_add(struct camu_server *server, struct aki_packet *packet) +void camu_server_local_add(struct camu_server *server, struct nn_packet *packet) { handle_add_command(server, al_array_last(server->lists), packet); } diff --git a/src/server/server.h b/src/server/server.h index ec0f85b..ab96e80 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -1,7 +1,7 @@ #pragma once -#include <aki/multiplex.h> -#include <aki/rpc2.h> +#include <nnwt/multiplex.h> +#include <nnwt/rpc2.h> #include "../liana/server.h" #include "../liana/list.h" @@ -13,25 +13,25 @@ #include "resource.h" struct camu_server_node { - struct aki_rpc_connection *conn; + struct nn_rpc_connection *conn; }; struct camu_server_client { - struct aki_rpc_connection *conn; + struct nn_rpc_connection *conn; struct camu_user *user; }; struct camu_server_sink { - struct aki_rpc_connection *conn; + struct nn_rpc_connection *conn; str name; struct camu_server *server; }; struct camu_server { - struct aki_event_loop *loop; + struct nn_event_loop *loop; str addr; - struct aki_multiplex_socket multi; - struct aki_rpc server; + struct nn_multiplex_socket multi; + struct nn_rpc server; array(struct camu_server_node *) nodes; array(struct camu_server_client *) clients; array(struct camu_server_sink *) sinks; @@ -49,9 +49,9 @@ struct camu_server { void *userdata; }; -bool camu_server_init(struct camu_server *server, u8 type, struct aki_event_loop *loop); +bool camu_server_init(struct camu_server *server, u8 type, struct nn_event_loop *loop); bool camu_server_listen(struct camu_server *server, str *addr, u16 port); void camu_server_close(struct camu_server *server); void camu_server_free(struct camu_server *server); -void camu_server_local_add(struct camu_server *server, struct aki_packet *packet); +void camu_server_local_add(struct camu_server *server, struct nn_packet *packet); |