NAME

POE::Component::Client::Icecast - non-blocking client to Icecast server for getting tags

SYNOPSIS

use strict;
use POE qw(Component::Client::Icecast);
use Data::Dumper;

POE::Component::Client::Icecast->new(
    Stream  => 'http://station20.ru:8000/station-128',
    GetTags => sub {
        warn Dumper $_[ARG0];
    },
);

# or

POE::Component::Client::Icecast->new(
    Host          => 'station20.ru',
    Path          => '/station-128',
    
    RemoteAddress => '87.242.82.108',
    RemotePort    => 8000,
    BindPort      => 8103, # for only one permanent client
    
    GetTags => sub {
        warn Dumper $_[ARG0];
    },
);

POE::Kernel->run;

DESCRIPTION

The module is a non-blocking client to Icecast streaming multimedia server for getting stream tags.

See http://www.icecast.org/.

POE::Component::Client::Icecast is based on POE::Component::Client::TCP.

METHODS

new

POE::Component::Client::Icecast->new(
    Stream        => 'http://station20.ru:8000/station-128',
    
    # or
    
    Host          => 'station20.ru',
    Path          => '/station-128',
    
    RemoteAddress => '87.242.82.108',
    RemotePort    => 8000,
    BindPort      => 8103, # for only one permanent client
    
    # get tags from server
    
    GetTags => sub {
        warn Dumper $_[ARG0];
    },
);

PoCo::Client::Icecast's new method takes a few named parameters:

  • Stream

    The stream url to Icecast stream, which contains domain, port and path to stream. Recommended.

    Instead of this param you ought to use: Host, Path, RemoteAddr and RemotePort.

  • Host

    The host of Icecast server (without port).

  • Path

    The path to Icecast stream.

  • RempoteAddress

    The remote address to connect to Icecast server (host or ip). It's a param of POE::Component::Client::TCP.

  • RemotePort

    The remote port to connect. It's a param of POE::Component::Client::TCP.

  • BindAddress

    The param specifies the local interface address to bind to before starting to connect. It's a param of POE::Component::Client::TCP.

  • BindPort

    The param sets the local socket port that the client will be bound to before starting to connect. It's a param of POE::Component::Client::TCP.

  • GetTags

    The event of getting tags from server, it is called for each fully parsed input record from Icecast server.

    $_[ARG0] contains a hashref of tags.

DEBUG & TRACE MODES

The module supports debug mode and trace mode (trace POE session).

BEGIN { $ENV{ICECAST_DEBUG}++; $ENV{ICECAST_TRACE}++ };
use POE::Component::Client::Icecast;

EXAMPLES

See examples/test.pl in this distributive.

SEE ALSO

POE

DEPENDENCIES

POE::Component::Client::TCP POE::Filter::Stream POE::Session Carp

AUTHOR

Anatoly Sharifulin, <sharifulin at gmail.com>

BUGS

Please report any bugs or feature requests to bug-poe-component-client-icecast at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=poe-component-client-icecast. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT & DOCUMENTATION

You can find documentation for this module with the perldoc command.

perldoc POE::Component::Client::Icecast

You can also look for information at:

COPYRIGHT & LICENSE

Copyright (C) 2009 Anatoly Sharifulin

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