NAME
Argon::Client - Client-side connection class for Argon systems
VERSION
version 0.18
SYNOPSIS
use
Argon::Client;
use
AnyEvent;
my
$cv
= AnyEvent->condvar;
my
$ar
= Argon::Client->new(
host
=>
'some.host.net'
,
port
=> 1234,
retry
=> 1,
opened
=>
$cv
,
ready
=>
sub
{},
failed
=>
sub
{},
closed
=>
sub
{},
notify
=>
sub
{},
);
$cv
->
recv
;
while
(
my
$task
= get_next_task) {
$ar
->process(
$task
->class,
$task
->args, \
&task_complete
);
}
my
$result
=
$ar
->async(
sub
{ ... });
if
(
$result
eq
'fnord'
) {
...
}
DESCRIPTION
Provides the client connection to an Argon network.
ATTRIBUTES
host
The hostname of the Argon::Manager serving as the entry point for the Argon network.
port
The port number for the Argon::Manager.
retry
By default, when the network is at capacity, new tasks may be rejected, causing "result" in Argon::Message to croak. If retry
is set, the Argon::Client
will instead retry the task on a logarithmic backoff timer until the task is accepted by the manager.
opened
A code ref that is triggered when the connection is initially opened.
ready
A code ref that is triggered when the connection has been opened and the client is ready to begin sending tasks.
failed
A code ref that is triggered when the connection fails. The value of $!
is passed as an argument.
closed
A code ref that is triggered when the connection to the remote host is closed.
notify
When tasks are created without a callback (see "process" in Argon::Client), the notify
callback is used in its place. The Argon::Message reply is passed as an argument.
METHODS
ping
Pings the Argon::Manager and calls the supplied callback with the manager's reply.
$ar
->ping(
sub
{
my
$reply
=
shift
; ... });
queue
Queues a task with the Ar manager. Accepts the name of a class accessible to the workers defining a new
and run
method, an array of arguments to be passed to new
, and an optional code ref to be called when the task is complete. If not supplied, the "notify" in Argon::Client method will be called in its place.
$ar
->queue(
'Task::Class'
,
$args_list
,
sub
{
my
$reply
=
shift
;
...
});
process
If the Ar workers were started with --allow-eval
and if the client process itself has $Argon::ALLOW_EVAL
set to a true value, a code ref may be passed in place of a task class. The code ref will be serialized using Data::Dump::Streamer and has limited support for closures.
$ar
->process(
sub
{ ... },
$args_list
,
sub
{
my
$reply
=
shift
;
...
});
async
As an alternative to passing a callback or using a default callback, the async
method returns a tied scalar that, when accessed, blocks until the result is available. Note that if the task resulted in an error, it is thrown when the async is fetched.
my
$async
=
$ar
->async(
sub
{ ... },
$arg_list
);
if
(
$async
eq
'slood'
) {
...
}
See Argon::Async.
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.