SVDRP "Proxy"? Hat schonmal wer was in der Richtung gemacht?

  • Sers, ich bin irgendwie mit der Gesamtsituation unzufrieden (ROFL), dass immer nur ein Client sich an den VDR connecten kann.


    Daher frage ich mich, ob schonmal wer ne Art "Proxy" gebastelt hat, der sich an den VDR connected und - sagen wir mal 8 - weitere Ports öffnet - sagen wir mal 2002 - 2009 - und dann die Anfragen an den VDR durchreicht sowie die Ergebnisse dann korrekt zurückrouted.


    Dann könnte man VDRAdmin auf einem der Proxy-Ports laufen lassen und dennoch ungestört mit "irgendwas Andrem" auf weiteren Ports agieren...


    Wäre so ein Ding von Nutzen?

    This is a .44 Magnum, the most powerful handgun in the world. It can take your head clean off. You've got to ask yourself one question, Do I feel lucky?
    easyvdr 0.9a2 - TT-DVB-S2-6400 - ASUS AT3IONT-I deluxe - Atom 330 - 1,5TB WD EADS - Denon 1910 - Toshiba 42X3030D - Harmony 700

  • Hi!


    Also von der Limitierung merkt man doch eigentlich eh nicht wirklich was oder?
    Z.B. habe ich XXV und epgsearch am Laufen und ich hätte noch keine Probleme gehabt. Auch nicht wenn ich dann zusätzlich noch einen SVDRP-Befehl auf der Konsole abgesetzt habe. Früher hatte ich öfters Probleme damit, aber mit den aktuellen Versionen von VDR nicht mehr.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Zitat

    Original von Brougs78
    Hi!


    Also von der Limitierung merkt man doch eigentlich eh nicht wirklich was oder?
    Z.B. habe ich XXV und epgsearch am Laufen und ich hätte noch keine Probleme gehabt. Auch nicht wenn ich dann zusätzlich noch einen SVDRP-Befehl auf der Konsole abgesetzt habe. Früher hatte ich öfters Probleme damit, aber mit den aktuellen Versionen von VDR nicht mehr.


    Gruß,
    Brougs78


    Naja, ich denke da hauptsächlich fü die Zukunft an Umgehung des VDR-Zugriffs, wenn möglich, z.B. könnte man Anfragen gegen die EPG-Daten oder Kanallisten ja eigentlich auch "selber machen" und dafür nicht den VDR blockieren -> ähnlich "EPG_DIRECT" in VDRAdmin, aber nur generell für alle Clients...


    IMHO ist es doch auch so, dass für die Dauer des Zugriffs per SVDRP der VDR auch für die Fernbedienung blockiert, oder? Und das tritt bei mir schon paarmal auf :rolleyes:

    This is a .44 Magnum, the most powerful handgun in the world. It can take your head clean off. You've got to ask yourself one question, Do I feel lucky?
    easyvdr 0.9a2 - TT-DVB-S2-6400 - ASUS AT3IONT-I deluxe - Atom 330 - 1,5TB WD EADS - Denon 1910 - Toshiba 42X3030D - Harmony 700

  • Schöner wäre SVDRP selbst als eigenen Thread zu implementieren (damit entfällt die Wartezeit von bis zu 1 Sekunde bis VDR sich um SVDRP kümmert) und dann natürlich jede Verbindung als eigenen Thread. Dann könnte z.B. auch das streamdev-plugin über SVDRP arbeiten. Ein Teil des streamdev-servers ist momentan eine Nachimplementierung von SVDRP, nur eben mit Threads.

  • Zitat

    Original von schmirl
    Ein Teil des streamdev-servers ist momentan eine Nachimplementierung von SVDRP, nur eben mit Threads.


    Nein, mit einem Thread ;D für Server und Clients (zumindest bis hin zur eigentlichen Datenübertragung)


    Zitat

    Original von s_herzog
    IMHO ist es doch auch so, dass für die Dauer des Zugriffs per SVDRP der VDR auch für die Fernbedienung blockiert, oder?


    Nicht für die Gesamtdauer des Zugriffs, aber schon für die Dauer der Abarbeitung eines einzelnen SVDRP-Befehls. Bei LSTE ist das aber auch schon ganz schän lange ;)

  • Wie sieht das denn aus, hätte ein Plugin alle Daten zur Verfügung und entsprechend Aufrufmöglichkeiten, um selbst alle SVDRP-Befehle zu implementieren?


    Ohne jetzt im VDR "drin" zu sein, steht da eine Art allgemeine Threadkommunikationsmethode zur Verfügung, oder muss man wenn man multithreaded Plugins bauen will, das alles selbst machen?

    This is a .44 Magnum, the most powerful handgun in the world. It can take your head clean off. You've got to ask yourself one question, Do I feel lucky?
    easyvdr 0.9a2 - TT-DVB-S2-6400 - ASUS AT3IONT-I deluxe - Atom 330 - 1,5TB WD EADS - Denon 1910 - Toshiba 42X3030D - Harmony 700

  • Viele der nötigen Methoden sind inzwischen irgendwie thread-safe herausgeführt, aber einige sind immernoch nicht von einem Thread aus aufrufbar... Für erstere gibts dann fertige Locking- (Kanäle, EPG, Aufnahmeliste) oder Queueingmechanismen (OSD-Messages) für die Plugin-API.

  • Hmm... vielleicht eine Multithread Lösung, d.h. pro Client wird wie üblich ein Thread gespawned (<- wie man das wohl auf deutsch ausdrückt).
    Für Resourcen für die kein Locking existiert müsste man in SVDRP ein Locking einbauen. Alle Anfragen werden dann solange gequeued, bis die jeweilige Resource wieder entsperrt ist.

    (( Kein VDR im Augenblick ))
    Desktop: OS X 10.4 - PowerBook G4
    Misc. HW: XBox 1.0 w/ XBMC & Sanyo Z3S & Onkyo TX-SR503E

  • Zitat

    Original von ravemax
    Hmm... vielleicht eine Multithread Lösung, d.h. pro Client wird wie üblich ein Thread gespawned (<- wie man das wohl auf deutsch ausdrückt).
    Für Resourcen für die kein Locking existiert müsste man in SVDRP ein Locking einbauen. Alle Anfragen werden dann solange gequeued, bis die jeweilige Resource wieder entsperrt ist.


    Threads "forked" man und den Socket "accepted" man, dann hat man schonmal einenn Server.


    Ist im SVDRP Command Set ein Locking denn überhaupt notwendig? Das Einzige, was mir jetzt einfällt wäre eben, dass die der Anfrage folgende Antwort eben korekt zugestellt werden muss, für die Dauer "Anfrage" + "Antwortauslieferung" kämen dann weitere Anfragen/Steuerbefehle in den großen Topf...

    This is a .44 Magnum, the most powerful handgun in the world. It can take your head clean off. You've got to ask yourself one question, Do I feel lucky?
    easyvdr 0.9a2 - TT-DVB-S2-6400 - ASUS AT3IONT-I deluxe - Atom 330 - 1,5TB WD EADS - Denon 1910 - Toshiba 42X3030D - Harmony 700

  • Hallo,


    mein Antrieb in dieser Richtung was zu tun war nicht der Bedarf von mehreren Maschinen gleichzeitig den VDR bedienen zu wollen, sondern einfach der Wunsch nach schnelleren Antwortzeiten.


    Der Proxy läuft bei mir auf meinem kleinen VDR unter LinVDR und funzt zu meiner Zufriedenheit :)


    Vielleicht paßt er ja auch bei Euch?

  • Das größte Problem sind die Operationen, die etwas editieren oder löschen. Da wird ja die fortlaufende Nummer zur Identifizierung verwendet, und diese Nummer kann sich von Verbindung zu Verbindung ändern. Insbesondere ist Chaos vorprogrammiert, wenn zwei SVDRP-Kunden gleichzeitig Timer verändern oder ähnliches. Oder eine Verbindung bearbeitet etwas, was kurz zuvor von einer anderen Verbindung gelöscht wurde.


    Eine saubere Lösung müsste am SVDRP-Protokoll ansetzen, und entsprechendes locking implementieren. Sehr aufwändig.


    Gruß,


    Udo

  • In dem Punkt kann ich Dir nur zustimmen!
    Ohne Unterstützung des VDR ist alles weitere locking o.ä. nur vertane Zeit.


    Deshalb unterstützt dieser Proxy nur RO-Operation direkt und leitet alle anderen Aktionen an den VDR weiter.


    Für meinen Bedarf reicht diese Funktionalität, da das Antwort-Zeitverhalten (rein subjektiv) deutlich verbessert wurde :)


    Die Verbindung zum VDR ist atomar, d.h. wenn zufällig zwei gleichzeitig was vom VDR wollen, bekommt der erste die Verbindung und der zweite eine Fehlermeldung.


    Da kann man jetzt drüber diskutieren, was besser is:
    warten ohne Rückmeldung, oder ne Fehlermeldung zu bekommen und es aktiv neu zu versuchen ...


    P.S. by the way:
    So aufwändig muss das nicht sein.
    Wenn man einen Zeitstempel der letzten Änderung, oder einen Änderungszähler mitführt und der VDR eine Änderung nur akzeptiert, wenn der Zeitpunkt, bzw. der Zähler paßt, müßte der Aufwand eigentlich überschaubar bleiben (und auf komplexes Locking könnte verzichtet werden).
    Natürlich muss das Format der Schnittstelle dann angepaßt werden.

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

    Einmal editiert, zuletzt von geronimo ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!