Darryl L. Pierce created QPID-4479:
--------------------------------------

             Summary: spout/drain examples fixes and improvements
                 Key: QPID-4479
                 URL: https://issues.apache.org/jira/browse/QPID-4479
             Project: Qpid
          Issue Type: Improvement
            Reporter: Darryl L. Pierce
            Assignee: Darryl L. Pierce
            Priority: Minor
             Fix For: 0.20


(From BZ#878940)

Description of problem:

It is unable to set message properties with spout.pl, following change needs to 
be made to fix this issue:
  - $message->getProperties()->{$name} = $value;
  + $message->setProperty($name, $value);

Below are proposed changes to the spout/drain examples to be more conformable 
to other clients (c++, python, java), I think it is valuable to have all the 
client examples working the same way:

Patch files for both spout.pl/drain.pl can be found in attachment.

* drain.pl *:

Drain do not output the message properties in usable form (properties are 
displayed as a hash), ie:
# perl /usr/share/doc/perl-qpid-0.18/examples/drain.pl -c 1 q
Message(properties=HASH(0x8f1ecc8),content='')

It also can be useful to display if the message is redelivered as other clients 
do.

Proposing following change to fix these issues:
  +sub printProperties {
  +  my $h = shift();
  +  return qq[{${\(join', ',map"'$_': '$h->{$_}'",keys%$h)}}]
  +}

  - print "Message(properties=" . $message->getProperties() . ",content='";
  + my $redelivered = ($message->getRedelivered) ? "redelivered=True, " : "";
  + print "Message(" . $redelivered . "properties=" . 
printProperties($message->getProperties()) . ", content='";

Proposing to set default timeout to 0 (to be more conformable to other clients):
  - my $timeout = 60;
  + my $timeout = 0;

Proposing to set default messages count to 0 (to be more conformable to other 
clients)
  - my $count   = 1;
  + my $count   = 0;

* both spout.pl/drain.pl *:

It is good practise to output usage with -h/--help options, or if the input is 
wrong. It is also in place to stop the program execution after the bad 
input/help request.

Proposing following change:
  -    "connection-options=s" => \ $connectionOptions,   
  -);
  -
  -
  -if (! $result) {
  -    print "Usage: perl drain.pl [OPTIONS]\n";
  -}
  -
  +    "connection-options=s" => \ $connectionOptions,
  +    "help|h"               => \ &usage
  +) or usage();

  +sub usage {
  +    print "Usage: perl drain.pl [OPTIONS]\n";
  +    exit;
  +}

Version-Release number of selected component (if applicable):
perl-qpid-0.18-1.el6

Actual results:
Unable to set message properties with spout.pl, spout/drain behaviour differs 
from other clients (c++,py,java)

Expected results:
Message properties can be set using spout.pl, spout/drain behaviour more 
concords to other clients

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to