Complete refactoring for rktplayer, in order to make it play on DLNA renderers and also use UpNP media server resources.

This commit is contained in:
2026-08-08 14:29:01 +02:00
parent 186b3bb8d7
commit f5fdc38e67
69 changed files with 5953 additions and 1647 deletions
+74
View File
@@ -0,0 +1,74 @@
#lang racket/base
(require "../misc/utils.rkt")
(provide
(struct-out library-item)
library-item->store
store->library-item)
(define library-item-store-version
1)
(struct library-item
(id
name
kind
kind-version
root
host
item-limit
current)
#:transparent
#:guard
(lambda (id name kind kind-version root host item-limit current type-name)
(check/c* library-item
(id symbol?)
(name string?)
(kind (or/c 'filesystem 'media-server))
(kind-version exact-positive-integer?)
(root (or/c path? string?))
(host (or/c #f string?))
(item-limit exact-positive-integer?)
(current boolean?))
(values id
name
kind
kind-version
root
host
item-limit
current)))
(define (library-item->store item)
(check/c library-item->store item library-item?)
(let ((root (library-item-root item)))
(hash
'version library-item-store-version
'id (library-item-id item)
'name (library-item-name item)
'kind (library-item-kind item)
'kind-version (library-item-kind-version item)
'root (if (path? root) (path->string root) root)
'host (library-item-host item)
'item-limit (library-item-item-limit item)
'current (library-item-current item))))
(define (store->library-item stored)
(check/c store->library-item stored hash?)
(let ((version (hash-ref stored 'version #f)))
(check/c store->library-item
version
(=/c library-item-store-version))
(library-item
(hash-ref stored 'id)
(hash-ref stored 'name)
(hash-ref stored 'kind)
(hash-ref stored 'kind-version)
(hash-ref stored 'root)
(hash-ref stored 'host)
(hash-ref stored 'item-limit 100)
(hash-ref stored 'current))))