| 2 |
## $Id$ |
## $Id$ |
| 3 |
## ------------------------------------------------------------------------ |
## ------------------------------------------------------------------------ |
| 4 |
## $Log$ |
## $Log$ |
| 5 |
## Revision 1.4 2003/07/01 17:08:17 joko |
## Revision 1.6 2003/12/03 04:01:05 joko |
| 6 |
## fixed option-to-component propagation |
## somehow got this to re-connect transparently if server-side goes down |
| 7 |
|
## |
| 8 |
|
## Revision 1.5 2003/07/01 18:13:15 joko |
| 9 |
|
## fixed: shutdown and session-unaliasing seems to be done by gc now...? |
| 10 |
## |
## |
| 11 |
## Revision 1.3 2003/07/01 13:13:44 joko |
## Revision 1.3 2003/07/01 13:13:44 joko |
| 12 |
## made "port" and "host" configurable from script |
## made "port" and "host" configurable from script |
| 103 |
|
|
| 104 |
# start up the watchdog which monitors the required IKC intercom session |
# start up the watchdog which monitors the required IKC intercom session |
| 105 |
#$kernel->yield('waste_time'); |
#$kernel->yield('waste_time'); |
| 106 |
#$kernel->delay('watchdog', 2); |
$kernel->delay('watchdog', 2); |
| 107 |
|
|
| 108 |
}; |
}; |
| 109 |
|
|
| 114 |
|
|
| 115 |
sub build { |
sub build { |
| 116 |
my $self = shift; |
my $self = shift; |
| 117 |
print "build", "\n"; |
#print "build", "\n"; |
| 118 |
# create sessions that depend on the foreign kernel. |
# create sessions that depend on the foreign kernel. |
| 119 |
POE::Component::LookupClient::Session->new(); |
POE::Component::LookupClient::Session->new(); |
| 120 |
} |
} |
| 125 |
|
|
| 126 |
#$kernel->post( IKC => 'monitor', '*' => { register => 'start_session' }); |
#$kernel->post( IKC => 'monitor', '*' => { register => 'start_session' }); |
| 127 |
|
|
| 128 |
#if (not defined $kernel->alias_resolve('DeviceClient')) { |
if (not defined $kernel->alias_resolve('DeviceClient')) { |
| 129 |
if (not defined $kernel->alias_resolve('IKC')) { |
#if (not defined $kernel->alias_resolve('IKC')) { |
| 130 |
print STDERR "Session died, trying to restart!", "\n"; |
print STDERR "Session died, trying to restart!", "\n"; |
| 131 |
#$kernel->yield('boot_intercom'); |
$kernel->yield('boot_intercom'); |
| 132 |
return; |
return; |
| 133 |
} |
} |
| 134 |
|
|
| 202 |
|
|
| 203 |
#$kernel->alias_set(''); |
#$kernel->alias_set(''); |
| 204 |
#$kernel->post(); |
#$kernel->post(); |
| 205 |
|
|
| 206 |
|
#sub POE::Component::IKC::Responder::DEBUG { 1 } |
| 207 |
|
#sub POE::Component::IKC::Responder::Object::DEBUG { 1 } |
| 208 |
|
|
| 209 |
# set up communication channel for asynchronous responses |
# set up communication channel for asynchronous responses |
| 210 |
$kernel->alias_set('DeviceClient'); |
$kernel->alias_set('DeviceClient'); |
| 211 |
$kernel->post('IKC', 'publish', 'DeviceClient', [qw( on_response )]); |
$kernel->post('IKC', 'publish', 'DeviceClient', [qw( on_response )]); |
| 253 |
# If registration succeeded, start the renewal cycle. |
# If registration succeeded, start the renewal cycle. |
| 254 |
if ($payload eq 'REG_OK') { |
if ($payload eq 'REG_OK') { |
| 255 |
$self->debug("Starting lease renewal loop."); |
$self->debug("Starting lease renewal loop."); |
| 256 |
#$kernel->post( IKC => 'monitor', '*' => { shutdown => 'remote_shutdown' }); |
$kernel->post( IKC => 'monitor', '*' => { unregister => 'remote_shutdown' }); |
| 257 |
|
$kernel->post( IKC => 'monitor', '*' => { shutdown => 'remote_shutdown' }); |
| 258 |
$kernel->yield( 'renew_lease' ); |
$kernel->yield( 'renew_lease' ); |
| 259 |
|
|
| 260 |
} elsif ($payload eq 'LEASE_OK') { |
} elsif ($payload eq 'LEASE_OK') { |
| 323 |
#print "resp: $resp", "\n"; |
#print "resp: $resp", "\n"; |
| 324 |
|
|
| 325 |
# and again... |
# and again... |
| 326 |
$kernel->delay('renew_lease', 15); |
$kernel->delay('renew_lease', 5); |
| 327 |
#$kernel->delay_set('renew_lease', 15); |
#$kernel->delay_set('renew_lease', 15); |
| 328 |
#$kernel->delay_add('renew_lease', 15); |
#$kernel->delay_add('renew_lease', 15); |
| 329 |
|
|
| 330 |
# timeout!? |
# timeout!? |
| 331 |
#$kernel->delay('remote_timeout', 20); |
#$kernel->delay('remote_timeout', 20); |
| 332 |
$kernel->delay_add('remote_timeout', 20); |
$kernel->delay_add('remote_timeout', 7); |
| 333 |
#$kernel->delay_set('remote_timeout', 5); |
#$kernel->delay_set('remote_timeout', 5); |
| 334 |
#$kernel->delay_set('remote_timeout', 20); |
#$kernel->delay_set('remote_timeout', 20); |
| 335 |
|
|
| 388 |
#$kernel->run_one_timeslice(); |
#$kernel->run_one_timeslice(); |
| 389 |
#return; |
#return; |
| 390 |
|
|
| 391 |
$kernel->post( 'IKC' => 'shutdown' ); |
#$kernel->post( 'IKC' => 'shutdown' ); |
| 392 |
|
#$kernel->post( 'IKC' => 'blah' ); |
| 393 |
#$kernel->run_one_timeslice(); |
#$kernel->run_one_timeslice(); |
| 394 |
#$kernel->run_one_timeslice(); |
#$kernel->run_one_timeslice(); |
| 395 |
|
|
| 396 |
|
$kernel->post('DeviceClient', 'stop'); |
| 397 |
|
|
| 398 |
$kernel->alias_remove('DeviceClient'); |
$kernel->alias_remove('DeviceClient'); |
| 399 |
|
$kernel->alias_remove('IKC'); |
| 400 |
|
|
| 401 |
#$kernel->run_one_timeslice(); |
#$kernel->run_one_timeslice(); |
| 402 |
#$kernel->run_one_timeslice(); |
#$kernel->run_one_timeslice(); |
| 403 |
|
|
| 404 |
|
#$kernel->yield('_start'); |
| 405 |
|
|
| 406 |
} |
} |
| 407 |
|
|