diff options
Diffstat (limited to 'example')
-rwxr-xr-x | example/ivyprobe.pl | 52 |
1 files changed, 40 insertions, 12 deletions
diff --git a/example/ivyprobe.pl b/example/ivyprobe.pl index 7595cb4..2cc1d51 100755 --- a/example/ivyprobe.pl +++ b/example/ivyprobe.pl @@ -78,19 +78,28 @@ Ivy->mainLoop; # this function has 3 additionnal parameters till Ivy Version 4.6 # and now getting the new/dying applications is straightforward. -# The first 3 parameters are kept only for compatibility! +# The first 3 parameters are kept only for upward compatibility! sub statusFunc { - my ($ref_ready, $ref_nonReady, $ref_hashReady, $appname, $status, $host) = @_; + my ($ref_ready, $ref_nonReady, $ref_hashReady, $appname, $status, $host_or_regexp) = @_; if ($status eq "new") { - print "$appname connected from $host\n"; - $where_applications{"$appname:$host"}++; + print "$appname connected from $host_or_regexp\n"; + $where_applications{"$appname:$host_or_regexp"}++; } elsif ($status eq "died") { - print "$appname disconnected from $host\n"; - $where_applications{"$appname:$host"}--; + print "$appname disconnected from $host_or_regexp\n"; + $where_applications{"$appname:$host_or_regexp"}--; } - + elsif ($status eq 'subscribing') { + print "$appname subscribed to '$host_or_regexp'\n"; + } + elsif ($status eq 'unsubscribing') { + print "$appname unsubscribed to '$host_or_regexp'\n"; + } + else { + print "Bug: unkown status; $status in &statusFunc\n"; + } + %connected_applications = %$ref_hashReady; } @@ -135,6 +144,14 @@ sub interpret_line { return 0; } + if ($str =~ /^.u(nbind)?\s+(.*)$/) { + my $regexp = $2; + if ($regexp =~ /'(.*)'/) { $regexp = $1; } + print "unbinding $regexp\n"; + $Ivyobj->bindRegexp($regexp); + return 0; + } + if ($str =~ /^.db(ind)?\s+(.*)$/) { my $id = $2; print "direct binding id $id\n"; @@ -151,6 +168,15 @@ sub interpret_line { return 0; } + if ($str =~ /^.p(ing)?\s+(\S+)\s+(\d+)\s*$/) { + my $appname = $2; + my $timeout = $3; + print "ping $appname timeout=$timeout\n"; + my $res = $Ivyobj->ping($appname, $timeout); + print "$res\n"; + return 0; + } + if ($str =~ /^.who\s*$/) { print "Apps:"; foreach my $app (sort keys %connected_applications) { @@ -178,7 +204,7 @@ sub interpret_line { return 0; } - print "bad command: .help for list of commands\n"; + print "bad command. Type '.help' for a list of commands\n"; return 0; } @@ -232,9 +258,11 @@ sub line_command_usage { print " .h[elp] - this help\n"; print " .q[uit] - terminate this application\n"; print " .b[ind] regexp - add a msg to receive\n"; + print " .u[nbind] regexp - remove a msg to receive\n"; print " .die appname - send die msg to appname\n"; print " .db[ind] id - add a direct msg to receive\n"; print " .d[irect] appname id args - send direct msg to appname\n"; + print " .p[ing] appname timeout - ping appname with a delay of timeout ms NYI\n"; print " .where appname - on which host is/are appname\n"; print " .who - who is on the bus\n"; } @@ -287,6 +315,10 @@ to add a direct msg of type id to receive to send a direct msg to appname. The message type is indicated by id +=item B<.u[nbind] regexp> + +To unsubscribe to messages matching the regexp + =item B<.where appname> To get the host on which appname is/are running @@ -295,10 +327,6 @@ To get the host on which appname is/are running to get the list of all connected applications -=item B<.h[elp]> - -to get the list of available commands and short explanations - =back =head1 BUGS |