summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/common.c10
-rw-r--r--src/server/common.h19
-rw-r--r--src/server/db.c36
-rw-r--r--src/server/meson.build3
-rw-r--r--src/server/resource.h5
-rw-r--r--src/server/server.c262
-rw-r--r--src/server/server.h20
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);