Net :: DBUS :: TUTORIAL :: ExportingObjects

NET :: DBUS :: Tutorial :: ExportingObjects é um módulo Perl que contém tutoriais em fornecer um serviço DBUS.
Baixe Agora

Net :: DBUS :: TUTORIAL :: ExportingObjects Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Daniel Berrange
  • Site do editor:
  • http://search.cpan.org/~danberr/Config-Record-1.1.2/lib/Config/Record.pod

Net :: DBUS :: TUTORIAL :: ExportingObjects Tag


Net :: DBUS :: TUTORIAL :: ExportingObjects Descrição

NET :: DBUS :: TUTORIAL :: ExportingObjects é um módulo Perl que contém tutoriais sobre o fornecimento de um serviço DBUS. Net :: DBUS :: ExportingObjects é um módulo Perl que contém tutoriais para fornecer um serviço DBUS. Este documento fornece um tutorial sobre como fornecer um serviço DBUS usando as ligações do PERL NET :: DBUS. Esses exemplos neste documento serão baseados no código da música :: jogador de distribuição, que é um serviço simples do DBUS, fornecendo um player de música. A primeira etapa na primeira etapa na criação de um objeto é criar um novo pacote que herda da rede :: dbus :: objeto. O objeto Music :: Player :: O Gerenciador fornece uma API para gerenciar a coleção de music player backend para diferentes tipos de faixas. Para começar, permita criar o esqueleto do pacote e seu construtor. O construtor do Super Type, Net :: DBUS :: O objeto espera ser dado aos parâmetros, um identificador para o NET :: DBUS :: Serviço, possuindo o objeto e um caminho sob o qual o objeto será exportado. Como a classe do gerente pretende ser um objeto Singleton, podemos codificar o caminho para ele dentro do construtor: Package Music :: Player :: Gerente; Use Base QW (Net :: DBUS); sub new {my $ classe = turno; meu $ Service = Shift; Meu $ Self = $ Class-> Super :: New ($ Serviço, "/ Música / Player / Manager"); abençoe $ auto, $ classe; retornar $ auto; } 1; agora, como mencionado, o gerente com lidar com um número de backends de jogador diferentes. Portanto, precisamos fornecer métodos para registrar novos backends e consultar para backends capazes de reproduzir um tipo de arquivo específico. Portanto, modificar o código acima, adicionamos uma tabela de hash no construtor, para armazenar os backends: sub new {my $ classe = shift; meu $ Service = Shift; Meu $ Self = $ Class-> Super :: New ($ Serviço, "/ Música / Player / Manager"); $ auto -> {backend} = {}; abençoe $ auto, $ classe; retornar $ auto; } E agora um método para registrar um novo backend. Isso leva um nome de módulo Perl e usa para instanciar um backend. Como os backends também serão objetos DBUS, precisamos passar em uma referência ao serviço que estamos anexados, juntamente com um caminho sob o qual registrar o backend. Usamos o método Get_service para retreer uma referência ao serviço O gerente é anexado e anexe o backend do jogador a esse mesmo serviço: Quando um método no objeto DBUS é invocado, o primeiro parâmetro é a referência de objeto ($ self) e o restante são os parâmetros fornecidos à chamada do método. Assim, escrevendo uma implementação de método em um DBUS não é realmente diferente do Perl normal orientado a objetos (CF Perlttoot): Sub Register_backend {My $ self = shift; meu nome $ = turno; meu módulo $ = turno; eval "use $ módulo"; if ($ @) {die "não pode carregar o backend $ módulo: $ @"; } $ auto-> {backend} = $ módulo-> novo ($ self-> get_service, "/ música / player / backend / $ nome"); } Olhando para isso pode se perguntar o que acontece se o método dado é acionado. Em tal cenário, em vez de terminar o processo de serviço, o erro será pego e propagado de volta para o chamador remoto para lidar.O backends do jogador fornecer um método get_track_types que retorna uma referência de matriz dos tipos de música que eles suportam. Podemos usar esse método para fornecer uma API para permitir a recuperação fácil de um back-end para um tipo de faixa específico. Este método retornará um caminho com o qual o objeto de backend pode ser acessado subindo_backend {my $ self = shift; Minha $ Extension = Shift; foreach meu nome $ (keys% {$ auto -> {backend}}) {my $ backend = $ auto -> {backend} -> {$ NAME}; foreach meu digário $ (@ {$ backend-> get_track_types}) {if ($ digite eq $ extensão) {return $ backend-> get_object_path; }}} morrer "sem backend para o tipo $ extensão"; } Vamos dar um momento rápido para considerar como esse método seria usado para reproduzir uma faixa de música. Se você ainda não fez isso, atualize sua memória do Net :: DBUS :: Tutorial :: usandoObjects. Agora, nós temos um arquivo mp3 que desejamos jogar, então nós procuramos o caminho para um backend, depois recuperar o objeto para ele, e reproduzir a pista: ... Obtenha o serviço de jogador de música ... # Peça um Caminho para um jogador para arquivos MP3 My $ path = $ Service-> Find_Backend ("MP3"); # $ path agora contém '/ music / player / backend / mpg123' # e podemos obter o objeto de backend meu $ backend = $ service-> get_object ($ caminho); # e, finalmente, jogar a faixa $ backend-> Play ("/ Vol / Música / Beck / Guero / 09-Scarecrow.mp3"); Requisitos: · Perl.


Net :: DBUS :: TUTORIAL :: ExportingObjects Software Relacionado