bus-client-test.pl.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #!/usr/bin/env perl
  2. use strict;
  3. use FindBin qw($RealBin);
  4. use lib "$RealBin/..";
  5. use lib "$RealBin/../deps";
  6. use Globals qw($interface);
  7. use Bus::SimpleClient;
  8. use Interface::Console;
  9. use Utils qw(parseArgs);
  10. my $port;
  11. if ($ARGV[0]) {
  12. $port = $ARGV[0];
  13. } else {
  14. print STDERR "No server port specified.n";
  15. exit 1;
  16. }
  17. print "Connecting to server at port $portn";
  18. $interface = new Interface::Console;
  19. my $ipc;
  20. eval {
  21. $ipc = new Bus::SimpleClient('localhost', $port);
  22. while (1) {
  23. my $ID;
  24. while (my $args = $ipc->readNext($ID)) {
  25. processMessage($ID, $args);
  26. }
  27. my $input = $interface->getInput(0.02);
  28. if ($input) {
  29. processInput(parseArgs($input));
  30. }
  31. }
  32. };
  33. if ($@) {
  34. print STDERR "Error: $@n";
  35. exit 1;
  36. }
  37. sub processMessage {
  38. my ($MID, $args) = @_;
  39. if ($MID eq "LIST_CLIENTS") {
  40. print "------- Client list --------n";
  41. for (my $i = 0; $i < $args->{count}; $i++) {
  42. printf "%s: %sn", $args->{"client$i"}, $args->{"clientUserAgent$i"};
  43. }
  44. print "----------------------------n";
  45. } else {
  46. print "Message from server: $MIDn";
  47. if (ref($args) eq 'HASH') {
  48. foreach my $key (keys %{$args}) {
  49. printf "%-14s = %sn", $key, $args->{$key};
  50. }
  51. } else {
  52. foreach my $entry (@{$args}) {
  53. print "$entryn";
  54. }
  55. }
  56. print "-----------------------n";
  57. }
  58. }
  59. sub processInput {
  60. if ($_[0] eq "q" || $_[0] eq "quit") {
  61. exit;
  62. } elsif ($_[0] eq "s") {
  63. if (@_ == 4) {
  64. print "Sending $_[1]: $_[2] = $_[3]n";
  65. $ipc->send($_[1], { $_[2] => $_[3] });
  66. } else {
  67. print "Usage: s (ID) (KEY) (VALUE)n";
  68. print "Send a message to the server.n";
  69. }
  70. } elsif ($_[0] eq "lc") {
  71. $ipc->send("LIST_CLIENTS");
  72. } else {
  73. print "Unrecognized command $_[0]n";
  74. print "Available commands: s, lc, quitn";
  75. }
  76. }