summaryrefslogtreecommitdiff
path: root/src/cache/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache/handlers')
-rw-r--r--src/cache/handlers/cdio.c9
-rw-r--r--src/cache/handlers/http.c14
-rw-r--r--src/cache/handlers/http.h2
3 files changed, 18 insertions, 7 deletions
diff --git a/src/cache/handlers/cdio.c b/src/cache/handlers/cdio.c
index 8326868..90c5ce9 100644
--- a/src/cache/handlers/cdio.c
+++ b/src/cache/handlers/cdio.c
@@ -1,6 +1,7 @@
#define AL_LOG_SECTION "cache_cdio"
//#define AL_LOG_ENABLE_TRACE
#include <al/log.h>
+#include <nnwt/common.h>
#include "../../codec/codec.h"
@@ -51,9 +52,10 @@ static nn_thread_result NNWT_THREADCALL cd_read_thread(void *userdata)
cdio_log_messages(cdio);
al_assert(ret <= SECTORS_PER_STEP);
off_t pointer = cdio->sector * CDIO_CD_FRAMESIZE_RAW;
- size_t size;
+ size_t size = BYTES_PER_STEP;
u8 *ptr = cdio->backing->get_ptr(cdio->backing, pointer, &size);
al_assert(size >= BYTES_PER_STEP);
+ log_trace("cdio_read(), ret: %ld, size: %zu", ret, size);
if (ret == SECTORS_PER_STEP) {
al_memcpy(ptr, nn_buffer_get_ptr(&cdio->buffer, 0), BYTES_PER_STEP);
} else if (ret == -10) {
@@ -192,7 +194,10 @@ static bool open_cd_drive(struct cch_handler_cdio *cdio)
struct cch_entry *cch_handler_cdio_create(void)
{
- struct cch_backing *backing = cch_backing_file_create(&al_str_c("/tmp/camu_cd_data"), 4096);
+ str tmpfile;
+ al_str_clone(&tmpfile, &nn_temp_directory);
+ nn_path_append(&tmpfile, &al_str_c("camu_cd_data"));
+ struct cch_backing *backing = cch_backing_file_create(&tmpfile, 4096);
if (!backing) return NULL;
struct cch_handler_cdio *cdio = al_alloc_object(struct cch_handler_cdio);
cdio->backing = backing;
diff --git a/src/cache/handlers/http.c b/src/cache/handlers/http.c
index f57d3eb..4fe82e2 100644
--- a/src/cache/handlers/http.c
+++ b/src/cache/handlers/http.c
@@ -1,10 +1,12 @@
#define AL_LOG_SECTION "cache_http"
+#define AL_LOG_ENABLE_TRACE
#include <al/log.h>
+#include <nnwt/common.h>
#include "../../codec/codec.h"
#include "../backings/memory.h"
-//#include "../backings/file.h"
+#include "../backings/file.h"
#include "../threaded_waits.h"
#include "../wait.h"
@@ -78,11 +80,14 @@ static void handler_http_maybe_spawn_worker(struct cch_handler *handler, size_t
{
struct cch_handler_http *http = (struct cch_handler_http *)handler;
(void)index;
- al_array_push(http->requests, (struct nn_http){ 0 });
- struct nn_http *request = &al_array_last(http->requests);
+ struct nn_http *request = al_alloc_object(struct nn_http);
+ al_array_push(http->requests, request);
nn_http_init(request);
nn_http_set_url(request, &http->url);
nn_http_set_user_agent(request, &USER_AGENT);
+ if (index != 0) {
+ nn_http_set_range(request, index, 0);
+ }
nn_http_request_stream(request, NNWT_HTTP_GET, http->loop, http_callback, http);
log_debug("Spawning worker for %.*s.", al_str_x(&http->url));
}
@@ -104,7 +109,7 @@ static void handler_http_free(struct cch_handler **handler)
struct cch_handler_http *http = (struct cch_handler_http *)*handler;
cch_threaded_waits_disable_all(&http->waits);
struct nn_http *request;
- al_array_foreach_ptr(http->requests, i, request) {
+ al_array_foreach(http->requests, i, request) {
nn_http_close(request);
}
cch_threaded_waits_close(&http->waits);
@@ -115,6 +120,7 @@ static void handler_http_free(struct cch_handler **handler)
*handler = NULL;
}
+
struct cch_entry *cch_handler_http_create(str *url, struct nn_event_loop *loop)
{
struct cch_backing *backing = cch_backing_memory_create(1024 * 128);
diff --git a/src/cache/handlers/http.h b/src/cache/handlers/http.h
index 93efdae..3e0bfca 100644
--- a/src/cache/handlers/http.h
+++ b/src/cache/handlers/http.h
@@ -14,7 +14,7 @@ struct cch_handler_http {
struct nn_event_loop *loop;
str url;
off_t pointer;
- array(struct nn_http) requests;
+ array(struct nn_http *) requests;
struct cch_threaded_waits waits;
};