Hi Rocco,

based on the excellent input I got so far from you and Steffen, I have now 
found a simple solution on the POE side
without any assumptions towards PAR (or whatever special system used, even with 
PAR there is more than one way to do it :-).

The idea is simply to make $sidecar_program configurable, and leave the 
solution details to the application if special ones are needed.
Find a possible [tested] patch below, and please consider it for integration in 
POE::Component::Resolver 0.913.

Best regards,

        Markus


> diff -c 
> /vobs/cc/CCA-perl01/perl5_SunOS_sparc________sixtyfive_char_path/prod/lib/site_perl/5.10.1/POE/Component/Resolver.pm
>  perl5/POE/Component/Resolver.pm
*** 
/vobs/cc/CCA-perl01/perl5_SunOS_sparc________sixtyfive_char_path/prod/lib/site_perl/5.10.1/POE/Component/Resolver.pm
        Wed May  4 04:39:59 2011
--- perl5/POE/Component/Resolver.pm     Fri Jul 15 12:10:03 2011
***************
*** 24,31 ****
        croak "new() requires an even number of parameters" if @args % 2;
        my %args = @args;

!       my $max_resolvers = delete($args{max_resolvers}) || 8;
!       my $idle_timeout  = delete($args{idle_timeout})  || 15;

        my $af_order = delete($args{af_order});
        if (defined $af_order and @$af_order) {
--- 24,32 ----
        croak "new() requires an even number of parameters" if @args % 2;
        my %args = @args;

!       my $max_resolvers   = delete($args{max_resolvers}) || 8;
!       my $idle_timeout    = delete($args{idle_timeout})  || 15;
!       my $sidecar_program = delete($args{sidecar_program});

        my $af_order = delete($args{af_order});
        if (defined $af_order and @$af_order) {
***************
*** 73,78 ****
--- 74,80 ----
                        max_resolvers   => $max_resolvers,
                        requests        => { },
                        sidecar_ring    => [ ],
+                       sidecar_program => $sidecar_program,
                }
        );

***************
*** 193,199 ****
                        StderrEvent  => 'sidecar_error',
                        CloseEvent   => 'sidecar_closed',
                        Program      => (
!                               ($^O eq "MSWin32")
                                ? \&POE::Component::Resolver::Sidecar::main
                                : [
                                        $^X,
--- 195,203 ----
                        StderrEvent  => 'sidecar_error',
                        CloseEvent   => 'sidecar_closed',
                        Program      => (
!                               defined $heap->{sidecar_program}
!                               ? $heap->{sidecar_program}
!                               : ($^O eq "MSWin32")
                                ? \&POE::Component::Resolver::Sidecar::main
                                : [
                                        $^X,
***************
*** 444,449 ****
--- 448,454 ----
                max_resolvers => 8,
                idle_timeout  => 5,
                af_order      => [ AF_INET6, AF_INET ],
+               # sidecar_program => $resolver_sidecar_program,
        );

        my @hosts = qw( ipv6-test.com );
***************
*** 496,502 ****
  Create a new resolver.  Returns an object that must be held and used
  to make requests.  See the synopsis.

! Accepts up to two optional named parameters.

  "af_order" may contain an arrayref with the address families to
  permit, in the order in which they're preferred.  Without "af_order",
--- 501,507 ----
  Create a new resolver.  Returns an object that must be held and used
  to make requests.  See the synopsis.

! Accepts up to four optional named parameters.

  "af_order" may contain an arrayref with the address families to
  permit, in the order in which they're preferred.  Without "af_order",
***************
*** 524,529 ****
--- 529,538 ----
        # One at a time, but without the pesky blocking.
        my $r3 = POE::Component::Resolver->new( max_resolvers => 1 );

+ "sidecar_program" controls how to start up a sidecar process;
+ this parameter is needed only in special environments such as PAR.
+ Solutions can be easily derived from the default code.
+
  =head3 resolve

  resolve() begins a new request to resolve a domain.  The request will



Markus Jansen

Ericsson GmbH
Eurolab R&D
Ericsson Allee 1
52134 Herzogenrath, Germany
Phone +49 2407 575 5157
Fax +49 22407 575 150
Mobile +49 172 2742003
[email protected]
www.ericsson.com



Ericsson GmbH. Sitz: Düsseldorf. Registergericht: Amtsgericht Düsseldorf, HRB 
33012. Geschäftsführer: Stefan Koetz (Vors.), Nils de Baar, Bernd Schmidt. 
Aufsichtsratsvorsitzender: Anders Runevad.

This Communication is confidential. We only send and receive email on the basis 
of the terms set out at 
www.ericsson.com/email_disclaimer<http://www.ericsson.com/email_disclaimer>.


<<inline: Picture (Metafile) 1.jpg>>

<<inline: Picture (Metafile) 2.jpg>>

Reply via email to