NAME

ZMQ::Raw::Loop::Promise - Promise class

VERSION

version 0.24

DESCRIPTION

A ZMQ::Raw::Loop::Promise represents a promise

WARNING: The API of this module is unstable and may change without warning (any change will be appropriately documented in the changelog).

SYNOPSIS

use ZMQ::Raw;

my $context = ZMQ::Raw::Context->new;
my $loop = ZMQ::Raw::Loop->new ($context);

my $promise = ZMQ::Raw::Loop::Promise->new ($loop);
$promise->then (sub
	{
		my $promise = shift;
		print "Promise kept/broken: ", $promise->result, "\n";
	}
);

my $timer = ZMQ::Raw::Loop::Timer->new (
	timer => ZMQ::Raw::Timer->new ($context, after => 100),
	on_timeout => sub
	{
		$promise->keep ('done');
	}
);

$loop->add ($timer);
$loop->run();

METHODS

new( $loop )

Create a new promise.

status( )

Get the status of the promise. One of PLANNED, KEPT or BROKEN.

await( )

Wait for the promise to be kept or broken.

result( )

Wait for the promise to be kept or broken, if its kept the result will be returned, otherwise throws the cause.

cause( )

Get the reason why the promise was broken. This method will croak if the promise is still planned or has been kept.

break( $result )

Break the promise, setting the cause to $result.

keep( $result )

Keep the promise, setting its result to $result.

then( \&callback )

Schedule \&callback to be fired when the promise is either kept or broken. Returns a new ZMQ::Raw::Loop::Promise.

CONSTANTS

PLANNED

The promise is still planned.

KEPT

The promise has been kept.

BROKEN

The promise was broken.

AUTHOR

Jacques Germishuys <jacquesg@striata.com>

LICENSE AND COPYRIGHT

Copyright 2017 Jacques Germishuys.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.