Re: killing a session
[email protected] (Rocco Caputo) Fri, 19 Aug 2011 08:49:23 -0400
| Newsgroups | perl.poe |
|---|---|
| Message-ID | <[email protected]> |
Attached. Sample output: 1) macbookpoe:~/projects/misc/support% perl shutdown-another.pl Fri Aug 19 08:47:39 2011 - Controller started. Press Ctrl+C to exit. Fri Aug 19 08:47:40 2011 - Ticker is working. Fri Aug 19 08:47:41 2011 - Ticker is working. Fri Aug 19 08:47:42 2011 - Ticker is working. ^CFri Aug 19 08:47:42 2011 - Controller caught sigint. Shutting down... Fri Aug 19 08:47:42 2011 - Ticker is shutting down. Please be patient... Fri Aug 19 08:47:43 2011 - Ticker has finished shutting down. Fri Aug 19 08:47:43 2011 - Controller is being garbage collected. Fri Aug 19 08:47:43 2011 - Ticker session is being destroyed. 1) macbookpoe:~/projects/misc/support% -- Rocco Caputo <[email protected]> On Aug 19, 2011, at 04:02, Rizwan Hisham wrote: > Dear List, > How do I kill a running session from inside another session. There is no > parent child relation between the two session, they totally independent from > each other. Cant seem to find anyway to do it. > > If its possible then kindly provide a small sample code as well :) > > Thanks > > -- > Best Ragards > Rizwan Qureshi > VoIP/Asterisk Engineer > Axvoice Inc. > > V: +92 (0) 3333 6767 26 > E: [email protected] > W: www.axvoice.com
shutdown-another.pl
(text/x-perl-script, 1.2 KB)
#!/usr/bin/env perl
use POE;
POE::Session->create(
inline_states => {
_start => sub {
$_[KERNEL]->alias_set("ticker");
$_[KERNEL]->delay(tick => 1);
},
tick => sub {
_log("Ticker is working.");
$_[KERNEL]->delay(tick => 1);
},
shutdown => sub {
# Clean up our resources so we can exit cleanly.
_log("Ticker is shutting down. Please be patient...");
$_[KERNEL]->delay(tick => undef);
# Pretend shutdown takes some time.
$_[KERNEL]->delay(faux_shutdown => 1);
},
faux_shutdown => sub {
_log("Ticker has finished shutting down.");
},
_stop => sub {
_log("Ticker session is being destroyed.");
},
},
);
POE::Session->create(
inline_states => {
_start => sub {
$_[KERNEL]->alias_set("controller");
$_[KERNEL]->sig(INT => "got_sigint");
_log("Controller started. Press Ctrl+C to exit.");
},
got_sigint => sub {
_log("Controller caught sigint. Shutting down...");
$_[KERNEL]->post( ticker => "shutdown" );
$_[KERNEL]->sig_handled();
},
_stop => sub {
_log("Controller is being destroyed.");
},
},
);
POE::Kernel->run();
exit;
sub _log {
my $message = join "", @_;
print scalar(localtime), " - $message\n";
}