Hi, To give more context on the issue, the following lines are not working(alarm function is being called ) but later runs fine
NOT WORKING!!!!! (recursive call thro alarm) ------------------------ delete_sub(){ . . . . if($heap->{RESULT}->{delete_sub_status} ne 'deleted'){ $heap->{next_delete_alarm_time} = int(time())+30; # $_[KERNEL]->alarm(get_del_status => $heap->{next_delete_alarm_time}) if($end_time >= time); $_[KERNEL]->alarm(delete_sub => $heap->{next_delete_alarm_time}) if($end_time >= time); $heap->{RESULT}->{delete_sub_status_counter}++; } } WORKING!!!(recursive call thro alarm) ------------------ get_poll_status(){ . . . if($heap->{RESULT}->{poll_success} != 1){ # while($end_time >= time){ $heap->{next_poll_alarm_time} = int(time())+30; $_[KERNEL]->alarm(get_poll_status => $heap->{next_poll_alarm_time}) if($end_time >= time); $heap->{RESULT}->{poll_status_error_counter}++; # } }else{ $_[KERNEL]->yield("get_delivery_status",$pollquerystring); } } Please let me know if am missing something in it!!, it works at one stage not at other, as i told, i couldnt get it running with run_while() function, googling didnt gave me much info nor poe cookbook. On Fri, Nov 2, 2012 at 12:45 PM, Gokul Prasad <nhgokulpra...@gmail.com> wrote: > If i run using run_whie() it gives me error, will the kernel->alarm() > work fine wthin if loop? > > Even with TRACE_REFCNT am not getting any clue!!! > > -gokul > > > On Sat, Aug 25, 2012 at 1:45 PM, Rocco Caputo <rcap...@pobox.com> wrote: >> Hi, Gokul. >> >> POE::Kernel->alarm() enqueues an alarm, but it is not like the built-in >> alarm(). POE's alarms are dispatched by POE::Kernel in between callbacks. >> Your while() loop pre-empts the dispatcher, so the enqueued alarms never >> occur. >> >> If your program must delay there, you can use POE::Kernel->run_while() to >> run POE's dispatcher while a variable is true. Set the variable false from >> the callback you are waiting for. >> >> -- >> Rocco Caputo <rcap...@pobox.com> >> >> On Aug 22, 2012, at 05:54, Gokul Prasad wrote: >> >>> Hi, >>> >>> Am setting "alarm" in calling a function to check if particular task >>> has executed properly or what. >>> >>> when i place the below code under while loop this alarm function is >>> not being called, but when i comment while loop, it is just works fine >>> correctly. >>> >>> while(end_time >= current_time){ >>> $heap->{next_alarm_time} = int(time())+30; >>> print STDERR "$heap->{next_alarm_time} why ti is printing\n"; >>> $kernel->alarm(next_task => >>> $heap->{next_alarm_time});#$heap->{RESULT}->{event}); >>> } >>> Not sure why it is happening? any suggestion.please >>> >>> >>> Regards, >>> gokul >>