Hi,
When am running this poe program, instead of going to cr_sub function,
it directly goes to handle_task_result function, anything wrong?
POE::Session->create(
inline_states => {
_start => \&start_tasks,
create_subscription => \&cr_sub,
next_task => \&start_tasks,
task_result => \&handle_task_result,
task_done => \&handle_task_done,
task_debug => \&handle_task_debug,
sig_child => \&sig_child,
}
);
sub start_tasks {
my ($kernel, $heap) = @_[KERNEL, HEAP];
while (keys(%{$heap->{task}}) < MAX_CONCURRENT_TASKS) {
my $next_task = shift @events;
last unless defined $next_task;
print "Starting task for $next_task...\n";
my $task = POE::Wheel::Run->new(
Program => sub {cr_sub($next_task)},
StdoutEvent => "task_result",
CloseEvent => "task_done",
);
$heap->{task}->{$task->ID} = $task;
$kernel->sig_child($task->PID, "sig_child");
}
}
sub create_subscription{
my ($kernel, $heap) = @_[KERNEL, HEAP];
.
.
.
some heavy stuff here!!!!!!
}
sub handle_task_result { ####to call poller status method
my ($heap,$kernel) = @_[HEAP,KERNEL] ;
# my $pollquerystring = $_[ARG0]; ##lets use the heap hash
# my $plus_time = $_[ARG1];
if(!defined $heap->{RESULT}->{recordkey}){
while($end_time >= time){
# print STDERR "I think c_sub box have some
issues".time."+++++++ $heap->{RESULT}->{event} and
$_[HEAP]->{next_alarm_time}++++\n";
# $_[KERNEL]->delay(create_subscription => 30,
$heap->{RESULT}->{event});
$_[HEAP]->{next_alarm_time} = int(time()) + 30;
$_[KERNEL]->alarm(create_subscription =>
$_[HEAP]->{next_alarm_time}, $heap->{RESULT}->{event});
$heap->{RESULT}->{cr_sub_error_counter}++;
}
}else{
$_[KERNEL]->delay(g_p_status => $heap->{RESULT}->{p_time});
### lets use the heap hash,$pollquerystring);
}
}