NAME

Argon::Message - Encodable message structure used for cross-system coordination

VERSION

version 0.18

SYNOPSIS

  use Argon::Message;
  use Argon ':commands', ':priorities';

  my $msg = Argon::Message->new(
    cmd  => $PING,
    pri  => $NORMAL,
    info => {thing => ['with', 'data', 'in', 'it']},
  );

  my $reply = $msg->reply(info => '...');
  my $error = $msg->error("some error message");

DESCRIPTION

Argon protocol messages.

ATTRIBUTES

id

Unique identifier for the conversation. Used to track the course of a task from the client to the manager to the worker and back.

cmd

The command verb. See ":commands" in Argon::Constants.

pri

The message priority. See ":priorities" in Argon::Constants.

info

The data payload of the message. May be a string, reference, et al.

token

Used internally by Argon::SecureChannel to identify message senders.

METHODS

failed

Returns true if the cmd is $ERROR.

denied

Returns true if the cmd is $DENY.

copy

Returns a shallow copy of the message with a new id and token.

reply

Returns a copy of the message. Any additional parameters passed are passed transparently to new.

error

Returns a new message with the same id, cmd set to $ERROR, and info set to the supplied error message.

result

Returns the decoded data playload. If the message is an $ERROR or $DENY, croaks with info as the error message. If the message is an $ACK, returns true.

explain

Returns a formatted string describing the message. Useful for debugging and logging.

AUTHOR

Jeff Ober <sysread@fastmail.fm>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Jeff Ober.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.