blob: afeabe8e460623ef59eab01f89e86730026eebc7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package Net::Riak::Role::PBC::MapReduce;
use Moose::Role;
use JSON;
use List::Util 'sum';
use Data::Dump 'pp';
sub execute_job {
my ($self, $job, $timeout, $returned_phases) = @_;
$job->{timeout} = $timeout;
my $job_request = JSON::encode_json($job);
my $results;
my $resp = $self->send_message( MapRedReq => {
request => $job_request,
content_type => 'application/json'
}, sub { push @$results, $self->decode_phase(shift) })
or
die "MapReduce query failed!";
return $returned_phases == 1 ? $results->[0] : $results;
}
sub decode_phase {
my ($self, $resp) = @_;
if (defined $resp->response && length($resp->response)) {
return JSON::decode_json($resp->response);
}
return;
}
1;
|