Audio-Daemon
view release on metacpan or search on metacpan
Daemon/Xmms.pm view on Meta::CPAN
}
$self->send_status;
}
}
}
sub send_status {
my $self = shift;
my $socket = $self->socket;
my $out = $self->get_info;
my $out = join $self->{sep}, @$out;
$socket->send($out);
}
1;
__END__
=head1 NAME
Audio::Daemon::Xmms - The Xmms Server portion of Audio::Daemon
=head1 SYNOPSIS
use Audio::Daemon::Xmms;
# set things up
my $daemon = new Audio::Daemon::Xmms(Port => 9101);
# this should never return... it is a daemon after all.
$daemon->mainloop;
=head1 DESCRIPTION
The Server portion of Audio::Daemon::Xmms, putting a UDP interface to Xmms, and a single
client library. Gives the user full control over how to daemonize, keep running,
monitor it, log messages, maintain access control, etc.
=head1 CONSTRUCTORS
There is but one method to contruct a new C<Audio::Daemon::Xmms> object:
=over 4
=item Audio::Daemon::Xmms->new(Port => $port, [Log => \&logsub], [Allow => <allowips>], [Deny => <denyips>]);
The new method can take the following arguments:
=over 4
=item Port
The local port to start listening and accepting commands on.
=item Log
This takes a reference to a function that's called for logging purposes, the format passed in is:
=over 4
<type>, <msg>, [caller(1)]
where <type> is one of debug, info, error, crit, warn. <msg> is the text message, and [caller] is
the array returned by the second form of the perlfunc caller(). This will give you the method,
line number, etc. of where the messagee is coming from. With this logging feature, I don't have to worry
about syslog, stdout, or how to report errors or debug info... you do!
=back 4
=item Allow, Deny
Access Control. If you specify something for the Allow variable, it assumes everything not allowed will
be denied. If you specify something to denied it assumes everything else is allowed. Wither neither
set, everything is allowed. It accepts multple formats all seperated by a comma for multiple entries:
=over 4
=item <ip>/mask
Either set to full 255.255.255.0 format or bitmask format: /24
=item <ip>
just an IP specified
=item <low ip>-<high ip>
For example: 192.168.10.15-192.168.10.44 so anythine between those two addresses would match the rule.
=back 4
=head1 METHODS
=over 4
=item mainloop
Never returns, and in theory, should never exit.
=back
=head1 INFO
The info routine from the client will return the following fields:
state, random, repeat, id, rateinfo, frame, title, artist, album, genre, vol and optionally list.
=over 4
=item state
0 is stopped, 1 is paused, 2 is playing
=item random
1 means random is on, 0 means random is off. And this random uses
the xmms random feature, not my internal random feature.
=item repeat
1 means repeat is on, 0 means repeat is off.
=item id
current track ID (starting at track 0) from the list of current tracks
( run in 1.140 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )