services: services/perl/lib/AppSwitch/Services Daemon.pm
Status: Pre-Alpha
Brought to you by:
jgsmith
From: <app...@li...> - 2001-07-30 01:38:09
|
jgsmith 01/07/29 18:38:09 Modified: perl/lib/AppSwitch/Services Daemon.pm Log: Added support for aliasing services -- foo.bar. should be able to handle requests in the foo. namespace. Revision Changes Path 1.2 +10 -2 services/perl/lib/AppSwitch/Services/Daemon.pm Index: Daemon.pm =================================================================== RCS file: /cvsroot/appswitch/services/perl/lib/AppSwitch/Services/Daemon.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -b -u -r1.1 -r1.2 --- Daemon.pm 2001/07/29 18:17:23 1.1 +++ Daemon.pm 2001/07/30 01:38:09 1.2 @@ -8,11 +8,13 @@ sub register { my($self, $handler) = @_; - $self -> {handler} -> {handlers} -> {$handler -> service} = $handler; + $self -> set_handler($handler -> service, $handler); } sub query_handler { $_[0] -> {handler} -> {handlers} -> {$_[1]} } +sub set_handler { $_[0] -> {handler} -> {handlers} -> {$_[1]} = $_[2] } + sub run { my($self) = @_; @@ -56,6 +58,12 @@ my($service, $method) = (lc($1), lc($2)); return undef unless defined $self -> {handlers} -> {$service}; + + while($service && !ref($self -> {handlers} -> {$service})) { + $service = $self -> {handlers} -> {$service}; + } + + return undef unless $service && defined $self -> {handlers} -> {$service}; *$m = sub { shift -> {handlers} -> {$service} -> dispatch($method, @_) }; |