#!/usr/bin/perl -w
use strict;

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

# BEGIN {sub POE::Kernel::TRACE_GARBAGE () { 1 }}

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

# Very simple server.  all it does is shutdown when 'goaway' is posted


create_ikc_server(
    unix=>($ENV{TMPDIR}||$ENV{TEMP}||'/tmp').'/userver',    
    name=>'shut-server');       

POE::Session->new
(
    _start=>\&time_start,
    goaway=>\&goaway,
    _stop=>\&time_stop,
);

print "Running server for 60 seconds at most...\n";
$poe_kernel->run();
print "Server exited...\n";

#############################################
sub time_start
{
    my($kernel, $heap, $session)=@_[KERNEL, HEAP, SESSION];
    $kernel->delay('goaway', 60);
    $kernel->alias_set('Goaway');
    $kernel->call(IKC=>'publish',  
                  Goaway=>[qw(goaway)]);
    
}

#############################################
sub goaway
{
    my($kernel, $heap)=@_[KERNEL, HEAP];
    warn "Now it's time to say good night, sleep tight\n";
    $kernel->post('IKC', 'shutdown');
    $kernel->delay('goaway');
}

sub time_stop
{
    warn "Time to _stop\n";
}
