From 5073f74aefb91616fb8e1df087747105e46e265d Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Wed, 22 Jan 2025 08:02:14 -0500 Subject: Rough draft of some tui stuff Signed-off-by: Andrew Opalach --- src/libclient/client.c | 40 ++++++++++++++++++++++++++++------------ src/libclient/client.h | 9 +++++---- src/libclient/common.h | 3 ++- 3 files changed, 35 insertions(+), 17 deletions(-) (limited to 'src/libclient') diff --git a/src/libclient/client.c b/src/libclient/client.c index dcceb05..525b26e 100644 --- a/src/libclient/client.c +++ b/src/libclient/client.c @@ -4,6 +4,7 @@ #include "common.h" #include "../server/common.h" +#include "../liana/list.h" static bool results_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet, struct nn_packet *rpacket) @@ -20,7 +21,7 @@ static bool results_callback(void *userdata, struct nn_rpc_connection *conn, break; } case CAMU_CLIENT_GET_PAGE: - client->callback(client->userdata, CAMU_CLIENT_PAGE_RESULTS, packet); + client->callback(client->userdata, CAMU_CLIENT_GOT_RESULTS, packet); break; } @@ -29,14 +30,29 @@ static bool results_callback(void *userdata, struct nn_rpc_connection *conn, return false; } +static bool meta_callback(void *userdata, struct nn_rpc_connection *conn, + struct nn_packet *packet, struct nn_packet *rpacket) +{ + struct camu_client *client = (struct camu_client *)userdata; + (void)conn; + (void)rpacket; + + client->callback(client->userdata, CAMU_CLIENT_GOT_META, packet); + + nn_packet_stream_return_packet(conn->stream, packet); + + return false; +} + static struct nn_rpc_command commands[] = { - { .op = CAMU_CLIENT_RESULTS, .callback = results_callback, .userdata = NULL } + { .op = CAMU_CLIENT_RESULTS, .callback = results_callback, .userdata = NULL }, + { .op = CAMU_CLIENT_META, .callback = meta_callback, .userdata = NULL } }; static void idd_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet) { struct camu_client *client = (struct camu_client *)userdata; - client->callback(client->userdata, CAMU_CLIENT_LOGIN, packet); + client->callback(client->userdata, CAMU_CLIENT_LOGGED_IN, packet); nn_packet_stream_return_packet(conn->stream, packet); } @@ -119,24 +135,24 @@ void camu_client_get_page(struct camu_client *client, s32 id, u32 num) nn_rpc_connection_command(client->conn, packet, NULL, NULL); } -void camu_client_add_from_path(struct camu_client *client, str *list, str *path) +void camu_client_skipto(struct camu_client *client, str *list, s32 i) { struct nn_packet *packet = nn_rpc_get_packet(&client->client, CAMU_SERVER_LIST_ACTION); nn_packet_write_str(packet, list); - nn_packet_write_u8(packet, CAMU_LIST_ADD); - nn_packet_write_u8(packet, CAMU_RESOURCE_FILE); - nn_packet_write_str(packet, path); + nn_packet_write_u8(packet, CAMU_LIST_SKIPTO); + nn_packet_write_s32(packet, LIANA_SEQUENCE_ANY); + nn_packet_write_s32(packet, i); nn_rpc_connection_command(client->conn, packet, NULL, NULL); } -void camu_client_add_from_post(struct camu_client *client, str *list, str *unique_id, u32 index) +void camu_client_seek(struct camu_client *client, str *list, u32 id, f64 percent) { struct nn_packet *packet = nn_rpc_get_packet(&client->client, CAMU_SERVER_LIST_ACTION); nn_packet_write_str(packet, list); - nn_packet_write_u8(packet, CAMU_LIST_ADD); - nn_packet_write_u8(packet, CAMU_RESOURCE_PORTAL); - nn_packet_write_str(packet, unique_id); - nn_packet_write_u32(packet, index); + nn_packet_write_u8(packet, CAMU_LIST_SEEK); + nn_packet_write_s32(packet, LIANA_SEQUENCE_ANY); + nn_packet_write_u32(packet, id); + nn_packet_write_f64(packet, percent); nn_rpc_connection_command(client->conn, packet, NULL, NULL); } diff --git a/src/libclient/client.h b/src/libclient/client.h index fee7de1..e6e80c8 100644 --- a/src/libclient/client.h +++ b/src/libclient/client.h @@ -3,9 +3,10 @@ #include enum { - CAMU_CLIENT_LOGIN = 0, + CAMU_CLIENT_LOGGED_IN = 0, CAMU_CLIENT_SEARCH_CREATED, - CAMU_CLIENT_PAGE_RESULTS + CAMU_CLIENT_GOT_RESULTS, + CAMU_CLIENT_GOT_META }; struct camu_client { @@ -28,7 +29,7 @@ void camu_client_toggle_sink(struct camu_client *client, str *sink, str *list, b void camu_client_create_search(struct camu_client *client, str *module, str *query); void camu_client_get_page(struct camu_client *client, s32 id, u32 num); -void camu_client_add_from_path(struct camu_client *client, str *list, str *path); -void camu_client_add_from_post(struct camu_client *client, str *list, str *unique_id, u32 index); +void camu_client_skipto(struct camu_client *client, str *list, s32 i); +void camu_client_seek(struct camu_client *client, str *list, u32 id, f64 percent); void camu_client_disconnect(struct camu_client *client); diff --git a/src/libclient/common.h b/src/libclient/common.h index 5b8dcbf..b074277 100644 --- a/src/libclient/common.h +++ b/src/libclient/common.h @@ -1,5 +1,6 @@ #pragma once enum { - CAMU_CLIENT_RESULTS = 0 + CAMU_CLIENT_RESULTS = 0, + CAMU_CLIENT_META }; -- cgit v1.2.3-101-g0448