use Perl::Unsafe::Signals;
sub AttemptNewRPCcLient { my ($sPeerAddr,$sPeerPort,$oSocket) = @_;
my $i=0;
my $oPlClient;
while(!$oPlClient){
print "Attempt to create a new RPC::PlClient \n";
$| = 1;
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm 5;
UNSAFE_SIGNALS {
$oPlClient = new RPC::PlClient(
'peeraddr' => $sPeerAddr,
'peerport' => $sPeerPort,
'application' => "RemoteServiceAccess",
'version' => '1.0',
'user' => "",
'password' => "",
'socket' => $oSocket,
'timeout' => 10,
);
};
alarm 0;
unless($oPlClient) { #no pl client
warn "RPC creation failure reattemting creation nb=$i in 1s \n";
sleep 1;
$i++;
if($i>=MAX_RPC_ATTEMPT){
warn "Cannot create RPC Client \n";
return 0;
}
next;
};
}
print "Fin du new RPC::PlClient \n\n\n";
return $oPlClient;
}