diff options
| author | 2024-11-12 12:12:31 -0500 | |
|---|---|---|
| committer | 2024-11-12 12:12:31 -0500 | |
| commit | 29fa4f8d667d543595e652e7402d395d507ba464 (patch) | |
| tree | eaa2adf9f687c499b31eeddef42493c4bfda9b1c /src/server | |
| parent | b4bcfa1da5c1be9f7999d4d4df4e8d1b73c3061a (diff) | |
| download | camu-29fa4f8d667d543595e652e7402d395d507ba464.tar.gz camu-29fa4f8d667d543595e652e7402d395d507ba464.tar.bz2 camu-29fa4f8d667d543595e652e7402d395d507ba464.zip | |
Add user volume, simple client add cli
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/server.c | 106 |
1 files changed, 55 insertions, 51 deletions
diff --git a/src/server/server.c b/src/server/server.c index a77046b..6fc2892 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -188,56 +188,6 @@ void handle_toggle_sink(struct camu_server *server, str *name, struct camu_serve } } -static bool client_command_callback(void *userdata, struct aki_rpc_connection *conn, - struct aki_packet *packet, struct aki_packet *rpacket) -{ - struct camu_server *server = (struct camu_server *)userdata; - (void)rpacket; - - struct camu_server_client *client = get_client_by_connection(server, conn); - if (!client) goto out; - - u8 op = aki_packet_read_u8(packet); - switch (op) { - case CAMU_CLIENT_CREATE_LIST: { - str name; - aki_packet_read_str(packet, &name); - struct lia_list *list = al_alloc_object(struct lia_list); - lia_list_init(list, &name); - al_array_push(server->lists, list); - break; - } - case CAMU_CLIENT_TOGGLE_SINK: { - str name; - aki_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); - handle_toggle_sink(server, &name, sink, enable); - break; - } - case CAMU_CLIENT_CREATE_SEARCH: { - str module; - aki_packet_read_str(packet, &module); - str query; - aki_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); - camu_portal_get_page(&server->bridge, id, num, client_portal_callback, conn); - break; - } - } - -out: - aki_packet_free(packet); - return true; -} - static void node_callback(void *userdata, u8 op, u64 duration) { struct camu_resource *resource = (struct camu_resource *)userdata; @@ -293,6 +243,58 @@ static void list_callback(void *userdata, u8 op, struct lia_list_entry *entry, v } } +static bool client_command_callback(void *userdata, struct aki_rpc_connection *conn, + struct aki_packet *packet, struct aki_packet *rpacket) +{ + struct camu_server *server = (struct camu_server *)userdata; + (void)rpacket; + + struct camu_server_client *client = get_client_by_connection(server, conn); + if (!client) goto out; + + u8 op = aki_packet_read_u8(packet); + switch (op) { + case CAMU_CLIENT_CREATE_LIST: { + str name; + aki_packet_read_str(packet, &name); + struct lia_list *list = al_alloc_object(struct lia_list); + lia_list_init(list, &name); + list->callback = list_callback; + list->userdata = server; + al_array_push(server->lists, list); + break; + } + case CAMU_CLIENT_TOGGLE_SINK: { + str name; + aki_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); + handle_toggle_sink(server, &name, sink, enable); + break; + } + case CAMU_CLIENT_CREATE_SEARCH: { + str module; + aki_packet_read_str(packet, &module); + str query; + aki_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); + camu_portal_get_page(&server->bridge, id, num, client_portal_callback, conn); + break; + } + } + +out: + aki_packet_free(packet); + return true; +} + static void handle_add_command(struct camu_server *server, struct lia_list *list, struct aki_packet *packet) { u8 op = aki_packet_read_u8(packet); @@ -300,11 +302,13 @@ static void handle_add_command(struct camu_server *server, struct lia_list *list case CAMU_RESOURCE_FILE: { str path; aki_packet_read_str(packet, &path); + struct cch_entry *entry = cch_handler_file_create(&path); + if (!entry) return; struct camu_resource_file *resource = al_alloc_object(struct camu_resource_file); resource->r.type = CAMU_RESOURCE_FILE; resource->r.load = CAMU_RESOURCE_NOT_LOADED; al_str_clone(&resource->path, &path); - resource->r.entry = cch_handler_file_create(&path); + resource->r.entry = entry; resource->r.node = lia_server_create_node(&server->data.server, resource->r.entry); resource->r.node->callback = node_callback; resource->r.node->userdata = (struct camu_resource *)resource; |