POE::Component::Client::MPD.3pm

Langue: en

Autres versions - même langue

Version: 2009-11-08 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

POE::Component::Client::MPD - full-blown poe-aware mpd client library

VERSION

version 0.9.6

SYNOPSIS

     use POE qw{ Component::Client::MPD };
     POE::Component::Client::MPD->spawn( {
         host           => 'localhost',
         port           => 6600,
         password       => 's3kr3t',  # mpd password
         alias          => 'mpd',     # poe alias
         status_msgs_to => 'myapp',   # session to send status info to
     } );
 
     # ... later on ...
     $_[KERNEL]->post( 'mpd', 'next' );
 
 

DESCRIPTION

POCOCM gives a clear message-passing interface (sitting on top of POE) for talking to and controlling MPD (Music Player Daemon) servers. A connection to the MPD server is established as soon as a new POCOCM object is created.

Commands are then sent to the server as messages are passed.

PUBLIC PACKAGE METHODS

my $id = POCOCM->spawn( \%params )

This method will create a POE session responsible for communicating with mpd. It will return the poe id of the session newly created.

You can tune the pococm by passing some arguments as a hash reference, where the hash keys are:

host

The hostname of the mpd server. If none given, defaults to "MPD_HOST" environment variable. If this var isn't set, defaults to "localhost".

port

The port of the mpd server. If none given, defaults to "MPD_PORT" environment variable. If this var isn't set, defaults to 6600.

password

The password to sent to mpd to authenticate the client. If none given, defaults to "MPD_PASSWORD" environment variable. If this var isn't set, defaults to "".

alias

An optional string to alias the newly created POE session.

status_msgs_to

A session (name or id) to whom to send connection status to. Optional, although recommended. No default. When this is done, pococm will send *additional* events to the session, such as: "mpd_connected" when pococm is connected, "mpd_disconnected" when pococm is disconnected, etc. You thus need to register some handlers for those events.

PUBLIC EVENTS ACCEPTED

POCOCM accepts two types of events: some are used to drive the mpd server, others will change the pococm status. The goal of a POCOCM session is to drive a remote MPD server. This can be achieved by a lot of events. Due to their sheer number, they have been regrouped logically in modules.

However, note that to use those events, you need to send them to the POCOCM session that you created with "spawn()" (see above). Indeed, the logical split is only internal: you are to use the same peer.

For a list of public events that update and/or query MPD, see embedded pod in:

POE::Component::Client::MPD::Commands for general commands
POE::Component::Client::MPD::Playlist for playlist-related commands. Those events begin with "pl.".
POE::Component::Client::MPD::Collection for collection-related commands. Those events begin with "coll.".
Those events allow to drive the POCOCM session.
disconnect()

Request the POCOCM to be shutdown. Leave mpd running. Generally sent when one wants to exit her program.

PUBLIC EVENTS FIRED

A POCOCM session will fire events, either to answer an incoming event, or to inform about some changes regarding the remote MPD server.

Answer events

For each incoming event received by the POCOCM session, it will fire back one of the following answers:
mpd_result( $msg, $answer )

Indicates a success. $msg is a POE::Component::Client::MPD::Message object with the original request, to identify the issued command (see POE::Component::Client::MPD::Message pod for more information). Its "status()" attribute is true, further confirming success.

$answer is what has been answered by the MPD server. Depending on the command, it can be either:

"undef": commands "play", etc.
an Audio::MPD::Common::Stats object: command "stats"
an Audio::MPD::Common::Status object: command "status"
an Audio::MPD::Common::Item object: commands "song", etc.
an array reference: commands "coll.files", etc.
etc.

Refer to the documentation of each event to know what type of answer you can expect.
mpd_error( $msg, $errstr )

Indicates a failure. $msg is a POE::Component::Client::MPD::Message object with the original request, to identify the issued command (see POE::Component::Client::MPD::Message pod for more information). Its "status()" attribute is false, further confirming failure.

$errstr is what the error message as returned been answered by the MPD server.

Auto-generated events

The following events are fired by pococm:
mpd_connect_error_fatal( $reason )

Called when pococm-conn could not connect to a mpd server. It can be either retriable, or fatal. Check $reason for more information.

mpd_connected()

Called when pococm-conn made sure we're talking to a mpd server.

SEE ALSO

You can find more information on the mpd project on its homepage at <http://www.musicpd.org>, or its wiki <http://mpd.wikia.com>. You may want to have a look at Audio::MPD, a non-POE aware module to access MPD.

POE::Component::Client::MPD development takes place on "<audio-mpd at googlegroups.com>": feel free to join us. (use <http://groups.google.com/group/audio-mpd> to sign in). Our git repository is located at <http://github.com/jquelin/poe-component-client-mpd.git>.

You can also look for information on this module at:

AnnoCPAN: Annotated CPAN documentation

<http://annocpan.org/dist/POE-Component-Client-MPD>

CPAN Ratings

<http://cpanratings.perl.org/d/POE-Component-Client-MPD>

Open bugs

<http://rt.cpan.org/NoAuth/Bugs.html?Dist=POE-Component-Client-MPD>

AUTHOR

   Jerome Quelin
 
 
This software is copyright (c) 2007 by Jerome Quelin.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.