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); } }