summaryrefslogtreecommitdiff
path: root/src/cache
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-04-26 15:21:42 -0400
committerAndrew Opalach <andrew@akon.city> 2025-04-26 15:21:42 -0400
commit0935c234495c4945fcfd31e5f28d62218b7794d8 (patch)
tree5ff5ea0fad58a41f1c28258e6d95ba54a7311d90 /src/cache
parentb1985414e54edf1eebe597551a48609ad08c6cfa (diff)
downloadcamu-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.c3
-rw-r--r--src/cache/entry.h33
-rw-r--r--src/cache/handlers/cdio.c2
-rw-r--r--src/cache/handlers/file.c2
-rw-r--r--src/cache/handlers/http.c2
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;