--- nfo/perl/libs/POE/Component/LookupClient.pm 2003/07/01 18:13:15 1.5 +++ nfo/perl/libs/POE/Component/LookupClient.pm 2003/12/03 04:01:05 1.6 @@ -1,7 +1,10 @@ ## ------------------------------------------------------------------------ -## $Id: LookupClient.pm,v 1.5 2003/07/01 18:13:15 joko Exp $ +## $Id: LookupClient.pm,v 1.6 2003/12/03 04:01:05 joko Exp $ ## ------------------------------------------------------------------------ ## $Log: LookupClient.pm,v $ +## Revision 1.6 2003/12/03 04:01:05 joko +## somehow got this to re-connect transparently if server-side goes down +## ## Revision 1.5 2003/07/01 18:13:15 joko ## fixed: shutdown and session-unaliasing seems to be done by gc now...? ## @@ -100,7 +103,7 @@ # start up the watchdog which monitors the required IKC intercom session #$kernel->yield('waste_time'); - #$kernel->delay('watchdog', 2); + $kernel->delay('watchdog', 2); }; @@ -111,7 +114,7 @@ sub build { my $self = shift; - print "build", "\n"; + #print "build", "\n"; # create sessions that depend on the foreign kernel. POE::Component::LookupClient::Session->new(); } @@ -122,10 +125,10 @@ #$kernel->post( IKC => 'monitor', '*' => { register => 'start_session' }); - #if (not defined $kernel->alias_resolve('DeviceClient')) { - if (not defined $kernel->alias_resolve('IKC')) { + if (not defined $kernel->alias_resolve('DeviceClient')) { + #if (not defined $kernel->alias_resolve('IKC')) { print STDERR "Session died, trying to restart!", "\n"; - #$kernel->yield('boot_intercom'); + $kernel->yield('boot_intercom'); return; } @@ -199,7 +202,10 @@ #$kernel->alias_set(''); #$kernel->post(); - + + #sub POE::Component::IKC::Responder::DEBUG { 1 } + #sub POE::Component::IKC::Responder::Object::DEBUG { 1 } + # set up communication channel for asynchronous responses $kernel->alias_set('DeviceClient'); $kernel->post('IKC', 'publish', 'DeviceClient', [qw( on_response )]); @@ -247,7 +253,8 @@ # If registration succeeded, start the renewal cycle. if ($payload eq 'REG_OK') { $self->debug("Starting lease renewal loop."); - #$kernel->post( IKC => 'monitor', '*' => { shutdown => 'remote_shutdown' }); + $kernel->post( IKC => 'monitor', '*' => { unregister => 'remote_shutdown' }); + $kernel->post( IKC => 'monitor', '*' => { shutdown => 'remote_shutdown' }); $kernel->yield( 'renew_lease' ); } elsif ($payload eq 'LEASE_OK') { @@ -316,13 +323,13 @@ #print "resp: $resp", "\n"; # and again... - $kernel->delay('renew_lease', 15); + $kernel->delay('renew_lease', 5); #$kernel->delay_set('renew_lease', 15); #$kernel->delay_add('renew_lease', 15); # timeout!? #$kernel->delay('remote_timeout', 20); - $kernel->delay_add('remote_timeout', 20); + $kernel->delay_add('remote_timeout', 7); #$kernel->delay_set('remote_timeout', 5); #$kernel->delay_set('remote_timeout', 20); @@ -382,12 +389,19 @@ #return; #$kernel->post( 'IKC' => 'shutdown' ); + #$kernel->post( 'IKC' => 'blah' ); #$kernel->run_one_timeslice(); #$kernel->run_one_timeslice(); - #$kernel->alias_remove('DeviceClient'); + $kernel->post('DeviceClient', 'stop'); + + $kernel->alias_remove('DeviceClient'); + $kernel->alias_remove('IKC'); + #$kernel->run_one_timeslice(); #$kernel->run_one_timeslice(); + + #$kernel->yield('_start'); }