Net :: dbus :: Tutorial :: ExportingObjects

net :: dbus :: Tutorial :: ExportingObjects ist ein Perl-Modul, das Tutorials zur Bereitstellung eines DBUs-Dienstes enthält.
Jetzt downloaden

Net :: dbus :: Tutorial :: ExportingObjects Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Daniel Berrange
  • Website des Verlags:
  • http://search.cpan.org/~danberr/Config-Record-1.1.2/lib/Config/Record.pod

Net :: dbus :: Tutorial :: ExportingObjects Stichworte


Net :: dbus :: Tutorial :: ExportingObjects Beschreibung

Net :: DBus :: Tutorial :: ExportingObjects ist ein Perl-Modul, das Tutorials auf die Bereitstellung einer DBus-Dienst enthält. Net :: DBus :: Tutorial :: ExportingObjects ist ein Perl-Modul, das Tutorials auf die Bereitstellung einer DBus service.This Dokument enthält ein Tutorial enthält einen D-Bus-Service auf die Bereitstellung der Perl Net :: DBus Anwendung Bindungen verwenden. Diese Beispiele in diesem Dokument werden von der Musik :: Spielerverteilung, die ein einfacher DBus-Service ist auf den Code basiert, ein Musikstück player.CREATING AN OBJECTThe ersten Schritt der Bereitstellung in der Erstellung ein Objekts ist ein neues Paket, das erbt von Net zu erstellen :: DBus :: Object. Das Musik-Player :: :: Manager-Objekt stellt eine API für die Sammlung von Musik-Player Backends für verschiedene Spurtypen zu verwalten. So starten Sie mit, lässt sich das Skelett des Pakets und seinem Konstruktor erstellen. Der Konstruktor der Supertyp, Net :: DBus :: Object erwartet auf Parameter gegeben werden, ein Handle auf das Net :: DBus :: Service, das Objekt zu besitzen, und einen Pfad, unter dem das Objekt exportiert werden soll. Da der Manager-Klasse soll ein Singleton-Objekt sein, wir können hart Code der Weg, um es im Konstruktor: package Musik :: Spieler ::-Manager; verwenden Basis qw (Net :: DBus); Sub New {My $ Class = Schicht; mein $ service = shift; my $ self = $ class-> SUPER :: neu ($ service "/ Musik / Spieler / Manager"); segnen $ SELF, $ class; ergib $ selbst zurück; } 1; Jetzt, da eine Reihe von verschiedenen Spieler-Backends der Manager mit Griff erwähnt. Also brauchen wir Methoden schaffen für neue Backends Registrierung und Abfragen für Backends der Lage, einen bestimmten Dateityp zu spielen. Also den obigen Code zu modifizieren wir eine Hash-Tabelle im Konstruktor hinzufügen, speichern die Backends: sub new {my $ class = shift; mein $ service = shift; my $ self = $ class-> SUPER :: neu ($ service "/ Musik / Spieler / Manager"); $ Self -> {Backends} = {}; segnen $ SELF, $ class; ergib $ selbst zurück; } Und nun ein Verfahren ein neues Backend zu registrieren. Das dauert einen Perl-Modul-Namen und verwendet es eine Back-End-instanziiert. Da die Backends auch DBus-Objekte sein werden, müssen wir den Dienst in einer Referenz zu übergeben wir an, zusammen mit einem Pfad verbunden sind, unter denen die backend.We verwenden, um die get_service Methode registrieren Sie einen Verweis auf den Dienst retreieve die Leiter ist an, und bringt die Spieler Backend selber Service: Wenn eine Methode auf DBus Objekt aufgerufen wird, wird der erste Parameter ist die Objektreferenz ($ SELF), und der Rest sind die Parameter für den Methodenaufruf zur Verfügung gestellt. So schreibt ein Verfahren Implementierung auf einem DBUS ist wirklich nicht anders zu normalen objektorientierter Perl (cf perltoot): sub register_backend {my $ self = shift; my $ name = shift; mein $ module = shift; eval "$ Modul verwenden"; if ($ @) {die "kann nicht geladen werden Backend $ module: $ @"; } $ Self -> {Backends} = $ Modul-> new ($ self-> get_service "/ Musik / Player / backend / $ name"); } In diesem Man könnte sich fragen suchen was, wenn das Düsenverfahren geschieht ausgelöst wird. In einem solchen Szenario, anstatt den Service-Prozess beendet wird, wird der Fehler aufgefangen und zurück an den Remote-Aufrufer propagiert werden, um with.The Spieler Backends stellen ein Verfahren get_track_types zu befassen, die eine Array-Referenz der Musik Streckenarten- kehrt sie unterstützen. Wir können diese Methode verwenden, um eine API zur Verfügung zu stellen einfachen Abruf von einem Back-End für eine bestimmte Spur Art zu ermöglichen. Diese Methode wird einen Pfad zurückkehren, mit dem das Objekt Backend Unter find_backend zugegriffen werden kann {my $ self = shift; my $ extension = shift; foreach my $ name (keys% {$ self -> {Backends}}) {my $ backend = $ self -> {Backends} -> {$ name}; foreach my $ Art (@ {$ Backend-> get_track_types}) {if ($ type eq $ Erweiterung) {return $ Backend-> get_object_path; }}} "Keine Backend für Typ $ Erweiterung" die; } Ermöglicht einen schnellen Moment Zeit nehmen, zu prüfen, wie diese Methode verwendet werden würde, um einen Musiktitel zu spielen. Wenn Sie dies noch nicht getan haben, Ihr Gedächtnis aufzufrischen von Net :: DBus :: Tutorial :: UsingObjects. Jetzt haben wir eine MP3-Datei, die wir spielen wollen, so dass wir für den Weg zu einem Backend suchen, abrufen dann das Objekt für sie, und den Titel spielen: ... die Musik-Player-Service bekommen ... # Fordern Sie ein Pfad zu einem Player für mP3-Dateien my $ path = $ service-> find_backend ( "mp3"); # $ Pfad enthält jetzt '/ Musik / Player / backend / mpg123' # und wir können meinen $ backend = $ service-> get_object ($ path), um das Back-End-Objekt zu erhalten; # Und spielen schließlich die Strecke $ Backend-> play ( "/ vol / Musik / beck / guero / 09-scarecrow.mp3"); Anforderungen: · Perl.


Net :: dbus :: Tutorial :: ExportingObjects Zugehörige Software