The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;

use lib qw(blib/lib blib/arch);

use POE qw(Session);
use POE::Component::IKC::Server;
use POE::Component::IKC::Specifier;

POE::Component::IKC::Server->spawn(
    port=>6666,
    name=>'Pulse',
    processes=>5,
    babysit=>30,
    verbose=>1,
    connections=>3);

POE::Session->create(
    inline_states => {
        _start => sub {
                my($kernel, $heap, $arg)=@_[KERNEL, HEAP, ARG0];
                $heap->{listeners}={};
                $kernel->alias_set('Service');
                $kernel->call('IKC', 'publish',  'Service',
                                [qw(event)]);
            },
        _stop => sub {
                warn "$$: _stop";
            },
        event => sub {
                my($kernel, $heap, $args)=@_[KERNEL, HEAP, ARG0];
                my $p=$args->[0];
                my $rsvp=$args->[1];
                warn "event $p";
                $kernel->post( IKC => 'post', 
                                $rsvp, { hello => $p->{Hi} } );
            },
    }
);

print "$$: Running server...\n";
$poe_kernel->run();
print "$$: Server exited...\n";