summaryrefslogtreecommitdiff
path: root/src/libclient
diff options
context:
space:
mode:
Diffstat (limited to 'src/libclient')
-rw-r--r--src/libclient/client.c40
-rw-r--r--src/libclient/client.h9
-rw-r--r--src/libclient/common.h3
3 files changed, 35 insertions, 17 deletions
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 <nnwt/rpc2.h>
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
};