Hello POE world,I'm trying to create a package that will spawn IKC clients.
I see that on_connect, on_error and subscribe are deprecated but all docs
and cookbook programs use the deprecated examples.  What would be the best
way to implement my __spawn function using the ikc responder/monitor instead
of the old deprecated functions for the client.
************ FROM IKC CLIENT DOCS **************
         on_connect
         DEPRECATED. Please use the IKC/monitor stuff. See
POE::Component::IKC::Responder<http://search.cpan.org/%7Egwyn/POE-Component-IKC-0.2003/IKC/Responder.pm>
.

on_error

DEPRECATED. Please use the IKC/monitor stuff. See
POE::Component::IKC::Responder<http://search.cpan.org/%7Egwyn/POE-Component-IKC-0.2003/IKC/Responder.pm>.
Note, also, that the coderef will be executed from within an IKC session,
NOT within your own session. This means that things like
$poe_kernel->delay_set() won't do what you think they should.

          subscribe

Array ref of specifiers (either foreign sessions, or foreign states) that
you want to subscribe to. on_connect will only be called when IKC has
managed to subscribe to all specifiers. If it can't, it will die(). YOW that
sucks.         monitor will save us all.

***********************************************************

################### CODE #################
sub __spawn {
    my $class = shift;

    my $addr = $class->IP || '127.0.0.1';
    my $port = $class->PORT || 5667;

    ## spawn all the ikc client
    my $server = POE::Component::IKC::Client->spawn(
        ip         => $addr,
        port       => $port,
        name       => "Client$$",
        on_connect => sub {

            POE::Session->create(
                package_states =>
                  ## extract all subroutines that don't start with "__"
                  ## and allocate them as states:
                  [ (__PACKAGE__) => [ do {
                            no strict 'refs';
                            grep { !/^__/ and defined &$_ } keys %{
__PACKAGE__ . "::" };
                          } ] ],
                ## pass args into _start:
                args => [...@_],
            );
        },
        on_error  => sub {
            my ( $kernel ) = $_[ KERNEL];
            print Dumper($kernel);

        },
        subscribe =>[qw(poe:/*)]

    );

    return $server;
}
#################################################

--J

Reply via email to