POE::Component::Client::MPD::Connection(3)

NAME
POE::Component::Client::MPD::Connection - module handling the tcp connection with mpd

DESCRIPTION
This module will spawn a poe session responsible for low-level communication with mpd. It is written as a pococ-tcp, which is taking care of everything needed.

Note that you're not supposed to use this class directly: it's one of the helper class for POCOCM.

PUBLIC METHODS

  spawn( \%params )
This method will create a POE::Component::TCP session responsible for low-level communication with mpd.

It will return the poe id of the session newly created.

You should provide some arguments as a hash reference, where the hash keys are:

•   host

    The hostname of the mpd server. Mandatory, no default.

•   port

    The port of the mpd server. Mandatory, no default.

•   id

    The POE session id of the peer to dialog with. Mandatory, no default.

•   max_retries

    How much time to attempt reconnection before giving up. Defaults to 5.

•   retry_wait

    How much time to wait (in seconds) before attempting socket reconnection. Defaults to 2.

The args without default are not supposed to be empty - ie, you will get an error if you don't follow those requirements! Yes, this is a private class, and you're not supposed to use it beyond pococm. :-)

PUBLIC EVENTS ACCEPTED
The following events are accepted from outside this class - but of course restricted to POCOCM (in oo-lingo, they are more protected rather than public).

  disconnect()
Request the pococm-connection to be shutdown. This does not shut down the MPD server. No argument.

  send( $message )
Request pococm-conn to send the $message over the wires. Note that this request is a pococm-message object properly filled up, and that the "_commands()" attribute should not be newline terminated.

PUBLIC EVENTS FIRED
The following events are fired from the spawned session.

  mpd_connected( $version )
Fired when the session is connected to a mpd server. This event isn't fired when the socket connection takes place, but when the session has checked that remote peer is a real mpd server. $version is the advertised mpd server version.

  mpd_connect_error_fatal( $errstr )
Fired when the session encounters a fatal error. This happens either when the session is connected to a server which happens to be something else than a mpd server, or if there was more than "max_retries" (see "spawn()" params) connection retries in a row. $errstr will contain the problem encountered. No retries will be done.

  mpd_connect_error_retriable( $errstr )
Fired when the session has troubles connecting to the server. $errstr will point the faulty syscall that failed. Re-connection will be tried after $retry_wait seconds (see "spawn()" params).

  mpd_data( $msg )
Fired when $msg has been sent over the wires, and mpd server has answered with success. The actual output should be looked up in "$msg-"_data>.

  mpd_disconnected()
Fired when the socket has been disconnected for whatever reason. Note that this event is not fired in the case of a programmed shutdown (see "disconnect()" event above). A reconnection will be automatically re-tried after $retry_wait (see "spawn()" params).

  mpd_error( $msg, $errstr )
Fired when $msg has been sent over the wires, and mpd server has answered with the error message $errstr.

SEE ALSO
For all related information (bug reporting, mailing-list, pointers to MPD and POE, etc.), refer to "POE::Component::Client::MPD"'s pod, section "SEE ALSO"

AUTHOR
Jerome Quelin, "<jquelin@cpan.org>"

COPYRIGHT & LICENSE
Copyright (c) 2007-2008 Jerome Quelin, all rights reserved.

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