diff options
| author | 2025-04-26 15:21:42 -0400 | |
|---|---|---|
| committer | 2025-04-26 15:21:42 -0400 | |
| commit | 0935c234495c4945fcfd31e5f28d62218b7794d8 (patch) | |
| tree | 5ff5ea0fad58a41f1c28258e6d95ba54a7311d90 /src/cache | |
| parent | b1985414e54edf1eebe597551a48609ad08c6cfa (diff) | |
| download | camu-0935c234495c4945fcfd31e5f28d62218b7794d8.tar.gz camu-0935c234495c4945fcfd31e5f28d62218b7794d8.tar.bz2 camu-0935c234495c4945fcfd31e5f28d62218b7794d8.zip | |
Sink performance tweaks, cleanup and add notes
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/cache')
| -rw-r--r-- | src/cache/entry.c | 3 | ||||
| -rw-r--r-- | src/cache/entry.h | 33 | ||||
| -rw-r--r-- | src/cache/handlers/cdio.c | 2 | ||||
| -rw-r--r-- | src/cache/handlers/file.c | 2 | ||||
| -rw-r--r-- | src/cache/handlers/http.c | 2 |
5 files changed, 32 insertions, 10 deletions
diff --git a/src/cache/entry.c b/src/cache/entry.c index 560e5ee..a3ad9e9 100644 --- a/src/cache/entry.c +++ b/src/cache/entry.c @@ -10,7 +10,6 @@ bool cch_entry_get_handle(struct cch_entry *entry, struct cch_handle *handle) nn_cond_init(&handle->wait.cond); nn_mutex_init(&handle->wait.lock); nn_mutex_lock(&entry->mutex); - entry->ref_count++; nn_mutex_unlock(&entry->mutex); return true; } @@ -40,8 +39,8 @@ off_t cch_entry_get_size(struct cch_entry *entry) void cch_entry_return_handle(struct cch_entry *entry, struct cch_handle *handle) { + al_assert(handle->entry == entry); handle->entry = NULL; - entry->ref_count--; nn_mutex_destroy(&handle->wait.lock); nn_cond_destroy(&handle->wait.cond); } diff --git a/src/cache/entry.h b/src/cache/entry.h index 4a20058..161eaab 100644 --- a/src/cache/entry.h +++ b/src/cache/entry.h @@ -6,14 +6,43 @@ #include "backing.h" #include "handler.h" +/* + Types to consider: + - file + - http + - hls + - http index? + - archive + - cue + single file + - cue + multiple files + - dvd/bluray (drive or iso) + - live source (radio antenna) + + Other considerations: + - Chapter priority (disc drive) + - For now 1 user and 1 list owns the drive totally. + - Scan list from current down on order change to create priority. + - DVD's have a runtime + - We will minimially have to pass inputs to the handler. + - Resource has to support being networked at a point before a liana server node. + - Networked backing? + - Is a liana "node handler" necessary? + + Cache/liana refactor: + - On creation, the handler can create multiple backings and chapters. + - Chapters include index into array of backings. + - get_handle() takes chapter as a arugment. + - get/set_size() no longer make sense. + - Remove liana field from handler. + - Method of requesting a unique file backing. + */ + struct cch_chapter { off_t start; off_t end; }; struct cch_entry { - u32 hash; - s32 ref_count; bool unknown_size; array(struct cch_chapter) chapters; struct cch_chapter *chapter; diff --git a/src/cache/handlers/cdio.c b/src/cache/handlers/cdio.c index e978343..e319f74 100644 --- a/src/cache/handlers/cdio.c +++ b/src/cache/handlers/cdio.c @@ -192,9 +192,7 @@ struct cch_entry *cch_handler_cdio_create(void) struct cch_entry *entry = al_alloc_object(struct cch_entry); entry->backing = backing; entry->handler = (struct cch_handler *)cdio; - entry->ref_count = 0; entry->unknown_size = false; - entry->hash = 0; nn_mutex_init(&entry->mutex); entry->handler->can_seek = handler_cdio_can_seek; entry->handler->maybe_spawn_worker = handler_cdio_maybe_spawn_worker; diff --git a/src/cache/handlers/file.c b/src/cache/handlers/file.c index 9ac8933..9529772 100644 --- a/src/cache/handlers/file.c +++ b/src/cache/handlers/file.c @@ -39,9 +39,7 @@ struct cch_entry *cch_handler_file_create(str *path, str *liana) struct cch_entry *entry = al_alloc_object(struct cch_entry); entry->backing = backing; entry->handler = (struct cch_handler *)file; - entry->ref_count = 0; entry->unknown_size = false; - entry->hash = 0; nn_mutex_init(&entry->mutex); entry->handler->can_seek = handler_file_can_seek; entry->handler->maybe_spawn_worker = handler_file_maybe_spawn_worker; diff --git a/src/cache/handlers/http.c b/src/cache/handlers/http.c index 08bd165..ed84bdc 100644 --- a/src/cache/handlers/http.c +++ b/src/cache/handlers/http.c @@ -106,9 +106,7 @@ struct cch_entry *cch_handler_http_create(str *url, struct nn_event_loop *loop) struct cch_entry *entry = al_alloc_object(struct cch_entry); entry->backing = backing; entry->handler = (struct cch_handler *)http; - entry->ref_count = 0; entry->unknown_size = false; - entry->hash = 0; nn_mutex_init(&entry->mutex); entry->handler->can_seek = handler_http_can_seek; entry->handler->maybe_spawn_worker = handler_http_maybe_spawn_worker; |