diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/server.c | 29 | ||||
| -rw-r--r-- | src/server/server.h | 1 |
2 files changed, 28 insertions, 2 deletions
diff --git a/src/server/server.c b/src/server/server.c index c547b5d..7781c05 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -12,6 +12,7 @@ #ifdef CAMU_HAVE_PORTAL #include "../portal/src/packet_ext.h" #endif +#include "../codec/packet_ext.h" #include "server.h" #include "common.h" @@ -334,7 +335,11 @@ static struct cch_entry *entry_from_post(struct camu_server *server, struct camu if (index <= post->media.count) { struct camu_post_media *media = &al_array_at(post->media, index); if (!al_str_is_empty(&media->url)) { +#ifdef NAUNET_HAS_CURL entry = cch_handler_http_create(&media->url, server->loop); +#else + (void)server; +#endif } } if (!entry) { @@ -528,6 +533,22 @@ static void client_portal_callback(void *userdata0, void *userdata1, struct camu } #endif +static void maybe_send_visual_data(struct camu_server *server, struct nn_rpc_connection *conn, u32 node_id) +{ + struct camu_resource *resource = get_resource_by_node_id(server, node_id); + if (resource) { + struct lia_visual_data *visual = &resource->node->visual; + if (!visual->samples) return; + struct nn_packet *packet = nn_rpc_get_packet(conn->rpc, CAMU_CLIENT_VISUAL_DATA); + nn_packet_write_u32(packet, node_id); + nn_packet_write_audio_format(packet, &visual->fmt); + nn_packet_write_u32(packet, visual->size); + NNWT_PACKET_WRITE_DATA(packet, visual->samples, visual->size); + nn_packet_write_u32(packet, visual->count); + nn_rpc_connection_command(conn, packet, NULL, NULL); + } +} + static bool client_command_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet, struct nn_packet *rpacket) { @@ -577,8 +598,7 @@ static bool client_command_callback(void *userdata, struct nn_rpc_connection *co #endif case CAMU_CLIENT_REQUEST_VISUAL_DATA: { u32 node_id = nn_packet_read_u32(packet); - struct camu_resource *resource = get_resource_by_node_id(server, node_id); - (void)resource; + maybe_send_visual_data(server, conn, node_id); break; } } @@ -1004,3 +1024,8 @@ void camu_server_local_add(struct camu_server *server, struct nn_packet *packet) { handle_add_command(server, al_array_last(server->lists), packet); } + +void camu_server_local_set_index(struct camu_server *server, u32 index) +{ + lia_list_skipto(al_array_last(server->lists), LIANA_SEQUENCE_ANY, index); +} diff --git a/src/server/server.h b/src/server/server.h index b1548f8..6552413 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -57,3 +57,4 @@ void camu_server_free(struct camu_server *server); // Local compat. void camu_server_local_add(struct camu_server *server, struct nn_packet *packet); +void camu_server_local_set_index(struct camu_server *server, u32 index); |