NET :: DBUS :: TUTORIAL :: ExportOpingObjects

NET :: DBUS :: TUTORIAL :: ExportingObjects is een PERL-module die tutorials bevat over het leveren van een DBUS-service.
Download nu

NET :: DBUS :: TUTORIAL :: ExportOpingObjects Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Daniel Berrange
  • Uitgever website:
  • http://search.cpan.org/~danberr/Config-Record-1.1.2/lib/Config/Record.pod

NET :: DBUS :: TUTORIAL :: ExportOpingObjects Tags


NET :: DBUS :: TUTORIAL :: ExportOpingObjects Beschrijving

Net :: DBus :: Tutorial :: ExportingObjects is een Perl module die tutorials bevat op het bieden van een DBus service. Net :: DBus :: Tutorial :: ExportingObjects is een Perl module die tutorials bevat op het bieden van een DBus service.This document bevat een tutorial over het verstrekken van een DBus service met behulp van de Perl Net :: DBus toepassing bindingen. Deze voorbeelden in dit document zal worden gebaseerd op de code van de Music :: Player distributie, die is een eenvoudige DBus dienstverlenende een muzieknummer player.CREATING AN OBJECTThe eerste stap in het creëren van een object om een nieuw pakket te maken die erft van Netto :: DBus :: Object. De Music :: Player :: Manager object biedt een API voor het beheer van de collectie van muziekspeler backends voor verschillende soorten spoor. Om te beginnen, laten we maken het skelet van het pakket en de constructeur. De bouwer van de super-type, Net :: DBus :: Object Verwacht moet worden gegeven aan de parameters, een handvat om het Net :: DBus :: Dienst eigenaar is van het object, en een pad op grond waarvan het object wordt geëxporteerd. Omdat de manager klasse is bedoeld om een singleton object te zijn, kunnen we moeilijk code het pad naar het binnen de constructor: package Music :: Player :: Manager; gebruiksbasis qw (Net :: DBus); subnieuw {mijn $ klasse = verschuiving; mijn $ service = shift; mijn $ zelf = $ klasse-> SUPER :: nieuwe ($ service, "/ muziek / speler / manager"); zegent $ zelf, $ klasse; return $ self; } 1, nu, zoals gezegd, de manager met handvat een aantal andere speler backends. Dus moeten we methoden voor het registreren van nieuwe backends en bevragen voor backends geschikt voor het afspelen van een bepaald bestandstype te bieden. Dus het wijzigen van de bovenstaande code voegen we een hash tabel in de constructeur, de backends te slaan: sub nieuwe {mijn $ class = shift; mijn $ service = shift; mijn $ zelf = $ klasse-> SUPER :: nieuwe ($ service, "/ muziek / speler / manager"); $ Zelf -> {backends} = {}; zegent $ zelf, $ klasse; return $ self; } En nu een methode om een nieuwe backend te registreren. Dit duurt een Perl module naam en gebruikt het om een backend instantiëren. Aangezien de backends ook zullen zijn DBus voorwerpen, moeten we nu in een verwijzing naar de service die we gevoegd, samen met een baan waarbij registreer de backend.We gebruik get_service methode om een verwijzing naar de service retreieve de manager is bevestigd, en bevestig de speler backend ditzelfde service: bij een werkwijze op DBus doel wordt aangeroepen, de eerste parameter het referentieobject ($ zelf), en de rest zijn de parameters die aan de methode. Dus het schrijven van een methode implementatie op een DBUS is echt niet anders dan normaal objectgeoriënteerde Perl (cf perltoot): sub register_backend {my $ zelf = shift; mijn $ name = shift; mijn $ module = shift; eval "gebruiken $ module"; if ($ @) {sterven "kan niet laden backend $ module: $ @"; } $ Zelf -> {backends} = $ module-> new ($ zelf-> get_service, "/ muziek / speler / backend / $ name"); } Kijkend naar dit men zich afvragen wat er gebeurt als de dobbelsteen methode wordt geactiveerd. In een dergelijk scenario, in plaats van beëindiging van de dienst proces, de fout zal worden gevangen en gepropageerd naar de externe beller te behandelen with.The speler backends een werkwijze get_track_types dat een rasterverwijzing van het muzieknummer vormen zij steunen retourneert. We kunnen deze methode gebruiken om een API te verstrekken aan het gemakkelijk terugvinden van een backend zorgen voor een bepaalde track type. Deze methode zal een pad waarmee de backend object is toegankelijk onder find_backend {$ mijn zelf = shift terugkeren; mijn $ extension = shift; foreach my $ naam (toetsen% {$ zelf -> {backends}}) {my $ backend = $ zelf -> {backends} -> {$ name}; foreach my $ type (@ {$ backend-> get_track_types}) {if ($ soort eq $ extensie) {return $ backend-> get_object_path; }}} Sterven "no backend voor het type $ extensie"; } Laten we een snelle moment na te gaan hoe deze methode zou worden gebruikt om een muzieknummer af te spelen. Als je hebt nog niet hebt gedaan, vernieuw uw geheugen van Net :: DBus :: Tutorial :: UsingObjects. Nu hebben we een MP3-bestand dat we willen spelen, dus we zoeken naar de weg naar een backend, dan halen het object voor het, en speel het spoor: ... krijgen de muziekspeler dienst ... # Vraag om een pad naar een speler voor mp3-bestanden mijn $ path = $ service-> find_backend ( "mp3"); # $ Pad bevat nu '/ muziek / speler / backend / mpg123' # en kunnen we de backend object mijn $ backend = $ service-> get_object ($ path) krijgen; # En tenslotte het spoor dat $ backend-> play ( "/ vol / muziek / Beck / guero / 09-scarecrow.mp3"); Vereisten: · Perl


NET :: DBUS :: TUTORIAL :: ExportOpingObjects Gerelateerde software