/[cvs]/nfo/perl/libs/POE/Component/LookupClient.pm
ViewVC logotype

Diff of /nfo/perl/libs/POE/Component/LookupClient.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by joko, Tue Jul 1 13:05:01 2003 UTC revision 1.6 by joko, Wed Dec 3 04:01:05 2003 UTC
# Line 2  Line 2 
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
12    ##  made "port" and "host" configurable from script
13    ##
14  ##  Revision 1.2  2003/07/01 13:05:01  joko  ##  Revision 1.2  2003/07/01 13:05:01  joko
15  ##  major changes, tried to clean up shutdown phase - the watchdog-mech didn't work out well..... - what's about IKC's monitor? does it work on Linux?  ##  major changes, tried to clean up shutdown phase - the watchdog-mech didn't work out well..... - what's about IKC's monitor? does it work on Linux?
16  ##  ##
# Line 74  sub boot_intercom { Line 83  sub boot_intercom {
83    
84    # Client component - encapsulates some session(s) and/or wheel(s)?    # Client component - encapsulates some session(s) and/or wheel(s)?
85        
86    my $host = "localhost";    $self->{options}->{host} ||= "localhost";
87      $self->{options}->{port} ||= 30;
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 => $host,      ip => $self->{options}->{host},
92      port => 30,      port => $self->{options}->{port},
93      #name => 'Client',      #name => 'Client',
94      #on_connect => sub { $self->build(); },      #on_connect => sub { $self->build(); },
95      on_connect => sub { $self->build(); },      on_connect => sub { $self->build(); },
# Line 92  sub boot_intercom { Line 103  sub boot_intercom {
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    
# Line 103  sub start_session { Line 114  sub start_session {
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  }  }
# Line 114  sub watchdog { Line 125  sub watchdog {
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        
# Line 191  sub _start { Line 202  sub _start {
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 )]);
# Line 239  sub on_response { Line 253  sub 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') {
# Line 308  sub renew_lease { Line 323  sub renew_lease {
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    
# Line 373  sub remote_timeout { Line 388  sub remote_timeout {
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    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.6

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed