2 |
## $Id$ |
## $Id$ |
3 |
## ------------------------------------------------------------------------ |
## ------------------------------------------------------------------------ |
4 |
## $Log$ |
## $Log$ |
5 |
|
## Revision 1.6 2003/12/03 04:01:05 joko |
6 |
|
## 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 |
13 |
## |
## |
88 |
|
|
89 |
#create_ikc_client( host => $host, port => 30, name => 'Client', on_connect => $self->{options}->{on_connect} ); |
#create_ikc_client( host => $host, port => 30, name => 'Client', on_connect => $self->{options}->{on_connect} ); |
90 |
create_ikc_client( |
create_ikc_client( |
91 |
host => $self->{options}->{host}, |
ip => $self->{options}->{host}, |
92 |
port => $self->{options}->{port}, |
port => $self->{options}->{port}, |
93 |
#name => 'Client', |
#name => 'Client', |
94 |
#on_connect => sub { $self->build(); }, |
#on_connect => sub { $self->build(); }, |
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 |
|
|