diff options
Diffstat (limited to 'src/fruits/cmv')
| -rw-r--r-- | src/fruits/cmv/cmv.c | 70 |
1 files changed, 44 insertions, 26 deletions
diff --git a/src/fruits/cmv/cmv.c b/src/fruits/cmv/cmv.c index 0fe33ad..8509485 100644 --- a/src/fruits/cmv/cmv.c +++ b/src/fruits/cmv/cmv.c @@ -1,18 +1,21 @@ #include <al/log.h> -#include <aki/event_loop.h> -#include <aki/thread.h> +#include <nnwt/event_loop.h> +#include <nnwt/thread.h> #include "../../sink/desktop.h" #include "../../server/common.h" #include "../../codec/ffmpeg/common.h" #ifndef CAMU_SINK_ONLY #include "../../server/server.h" -#else -#include "../../server/common.c" #endif +#include "../../server/common.h" + +#include "../common.h" + +static str *CMV_UNIX_PATH = al_str_c("/tmp/cmv_sock"); struct cmv { - struct aki_event_loop loop; + struct nn_event_loop loop; struct camu_desktop desktop; #ifndef CAMU_SINK_ONLY struct camu_server server; @@ -28,10 +31,10 @@ static void exit_callback(void *userdata, struct camu_desktop *desktop) } #endif -static aki_thread_result AKI_THREADCALL event_loop_thread(void *userdata) +static nn_thread_result NNWT_THREADCALL event_loop_thread(void *userdata) { struct cmv *c = (struct cmv *)userdata; - aki_event_loop_run(&c->loop); + nn_event_loop_run(&c->loop); return 0; } @@ -53,7 +56,7 @@ s32 main(s32 argc, char *argv[]) s32 wmain(s32 argc, wchar_t **argv) #endif { - if (!aki_common_init() || !stl_global_init(false)) { + if (!nn_common_init() || !stl_global_init(false)) { return EXIT_FAILURE; } @@ -65,22 +68,26 @@ s32 wmain(s32 argc, wchar_t **argv) camu_ff_set_default_log_callback(); #endif - aki_event_loop_init(&c.loop); + nn_event_loop_init(&c.loop); u8 type; str *addr; #ifndef CAMU_SINK_ONLY bool local = argc > 1; if (local) { - type = AKI_SOCKET_UNIX; addr = CAMU_UNIX_LOCAL; +#ifndef _WIN32 + type = NNWT_SOCKET_UNIX; addr = CMV_UNIX_PATH; +#else + type = NNWT_SOCKET_TCP; addr = CAMU_LOCALHOST; +#endif if (!camu_server_init(&c.server, type, &c.loop)) failure(); if (!camu_server_listen(&c.server, addr, CAMU_PORT)) failure(); } else { - type = CAMU_LOCAL_TYPE; - addr = CAMU_LOCAL_ADDR; + type = CAMU_TEST_TYPE; + addr = CAMU_TEST_ADDR; } #else - type = AKI_SOCKET_TCP; addr = CAMU_SERVER_IP; + type = NNWT_SOCKET_TCP; addr = CAMU_SERVER_IP; #endif #ifndef CAMU_SINK_ONLY @@ -90,18 +97,29 @@ s32 wmain(s32 argc, wchar_t **argv) str arg = *al_str_cr(argv[i]); #else str arg; - al_wstr_to_str(al_wstr_cr(argv[i]), &arg); + if (!al_wstr_to_str(al_wstr_cr(argv[i]), &arg)) { + al_log_error("cmv", "Failed to parse argument #%i.", i); + continue; + } +#endif + struct nn_packet *packet = nn_packet_create(); +#ifdef CAMU_HAVE_PORTAL + if (al_str_at(&arg, 0) == ';' || camu_is_url(&arg, 0)) { + nn_packet_write_u8(packet, CAMU_RESOURCE_SIMPLE_SEARCH); +#elif defined NAUNET_HAS_CURL + if (camu_is_url(&arg, 0)) { + nn_packet_write_u8(packet, CAMU_RESOURCE_HTTP); +#endif +#if CACHE_HAVE_CDIO + } else if (al_str_cmp(&arg, al_str_c("cdda://"), 0, 7) == 0) { + nn_packet_write_u8(packet, CAMU_RESOURCE_CDIO); #endif - struct aki_packet *packet = aki_packet_create(); - if (al_str_at(&arg, 0) == ';') { - aki_packet_write_u8(packet, CAMU_RESOURCE_PORTAL); - aki_packet_write_str(packet, al_str_substr(&arg, 1, arg.len)); } else { - aki_packet_write_u8(packet, CAMU_RESOURCE_FILE); - aki_packet_write_str(packet, &arg); + nn_packet_write_u8(packet, CAMU_RESOURCE_FILE); } + nn_packet_write_str(packet, &arg); camu_server_local_add(&c.server, packet); - aki_packet_free(packet); + nn_packet_free(packet); } } #else @@ -118,13 +136,13 @@ s32 wmain(s32 argc, wchar_t **argv) #endif if (!camu_desktop_connect(&c.desktop, type, &c.loop, addr, CAMU_PORT)) failure(); - struct aki_thread thread0; - aki_thread_create(&thread0, event_loop_thread, &c); + struct nn_thread thread0; + nn_thread_create(&thread0, event_loop_thread, &c); while (camu_desktop_tick(&c.desktop)) {} camu_desktop_stop(&c.desktop); - aki_thread_join(&thread0); + nn_thread_join(&thread0); camu_desktop_free(&c.desktop); #ifndef CAMU_SINK_ONLY camu_server_free(&c.server); @@ -132,14 +150,14 @@ s32 wmain(s32 argc, wchar_t **argv) ret = EXIT_SUCCESS; out: - aki_event_loop_destroy(&c.loop); + nn_event_loop_destroy(&c.loop); #ifdef CAMU_HAVE_FFMPEG camu_ff_free_default_log_callback(); #endif stl_global_close(); - aki_common_close(); + nn_common_close(); return ret; } |