diff options
-rw-r--r-- | Ivy.pm | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -654,7 +654,7 @@ sub start Reuse => 1); $self->[supSock]->sockopt (SO_BROADCAST, 1); foreach my $netBroadcastAddr (@{$self->[broadcastBuses]}) { - print "BroadcastBus: --", $netBroadcastAddr, "--\n"; +# print "BroadcastBus: --", $netBroadcastAddr, "--\n"; send ($self->[supSock], $bonjourMsg, 0, $netBroadcastAddr) or carp "Warning in Ivy::start, broadcast of Hello message failed: $!"; } @@ -1057,7 +1057,7 @@ sub _getBonjour ($) my $addr = (unpack_sockaddr_in ($inetAddr))[1]; - my $peerName = gethostbyaddr ($addr, AF_INET); + my $peerName = gethostbyaddr ($addr, AF_INET) || inet_ntoa($addr); # on force $peerPort a etre vu comme une valeur numerique my ($version, $peerPort) = $bonjourMsg =~ /^(\d+)\s+(\d+)/; @@ -1310,7 +1310,7 @@ _EOL_ push @{$self->[appliList]{$senderName}}, $appSock; } - my $host = (gethostbyaddr ($addr, AF_INET))[0] ; + my $host = (gethostbyaddr ($addr, AF_INET))[0] || inet_ntoa($addr); $self->_scanConnStatus ($senderName, "new", "$host"); } elsif ($type == APP_NAME) { @@ -1420,11 +1420,9 @@ sub _inetAdrByName ($$) { keys %{$self->[cnnxion]}))[0]; return ("unknow") unless defined $addrInet; - print "$addrInet\n"; my ($addr,$port) = $addrInet =~ /(.{4}):(.*)/; - print "$addr,$port\n"; - my $host = (gethostbyaddr ($addr, AF_INET))[0] ; + my $host = (gethostbyaddr ($addr, AF_INET))[0] || inet_ntoa($addr); return "$host:$port"; } # end _inetAdrByName @@ -1488,7 +1486,7 @@ sub _removeFileDescriptor ($$) # regexps par canal my $addr = substr ($addrInet,0,4); - my $host = (gethostbyaddr ($addr, AF_INET))[0] ; + my $host = (gethostbyaddr ($addr, AF_INET))[0] || inet_ntoa($addr); $self->_scanConnStatus ($diedAppName, "died", $host) ; } # end _removeFileDescriptor @@ -1597,11 +1595,15 @@ sub _scanConnStatus ($$$$) # par compatibilite avec l'ancienne version, on envoie comme # deux premiers arguments une ref sur la liste des applis presentes, - # la liste des applis absentes, mais on rajoute comme troisieme + # une ref de la liste des applis absentes, mais on rajoute comme troisieme # argument une ref sur une table de hash : comme clef les # applis presentes, comme valeur le nombre d'applis ayant ce nom, # de facon a detecter plus facilement quand il y a trop d'applis # de meme nom sur le meme bus. + # les nouveaux arguments sont: + # le 4eme arg est l'appli nouvelle, deconnecté, qui s'abonne ou se desabonne + # le 5eme arg est le statut (actuellement: 'subscribing'|'unsubscribing'|'died'|'new') + # le 6eme arg est l'addresse de la machine sur laquelle tourne l'agent &{$self->[statusFunc]} ([keys %readyApp], \@nonReadyApp, \%readyApp, $appname, $status, $addr); } # end _scanConnStatus @@ -1907,7 +1909,7 @@ before running. =item B<-statusFunc =E<gt> sub {}> -A callback which is called every time an appli connects on the bus, disconnects from the bus or subscribes to a regexp. When an application is stopping, this function is also called for every disconnecting agent on the bus. The first 3 parameters are a reference to an array of connected appli, a reference to an array of not connected appli (according to the "-neededApp" argument of the new method / function), a reference to a hash table of connected appli (giving the number of such appli). These 3 parameters are maintained for upwards compatibility but should no more be used, since the following three parameters are much easier to use: the name of an appearing / disapearing or subscribing / unsubscribing appli, its status either "new" or "died" or "subscribing" or "unsubscribing", and the hostname where this appli is running / dying OR the subscribed / unsubscribed regexp. +A callback which is called every time an agent C connects on the bus, disconnects from the bus, subscribes to a regexp, or unsubscribes to a regexp. When the agent A is stopping, this function is also called inside the agent A for every other agents Ci on the bus, as they are disconnecting. The first 3 parameters are a reference to an array of connected agents Ci, a reference to an array of not connected agents (according to the "-neededApp" argument of the new method / function), a reference to a hash table of connected agents Ci (giving the number of each agent). These 3 parameters are maintained for upwards compatibility but should no more be used, since the following three parameters are much easier to use: the name of an appearing / disapearing or subscribing / unsubscribing agent C, its status either "new" or "died" or "subscribing" or "unsubscribing", and the hostname where this agent C is running / dying OR the subscribed / unsubscribed regexp. If the hostname of this agent C is not known, it will be replaced by its IP address. |