diff -r c91535b1db3e -r 60db1090095b bin/gearman_decode_worker.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bin/gearman_decode_worker.pl Sat Apr 06 22:50:55 2013 +0200 @@ -0,0 +1,50 @@ +#!/usr/bin/env perl + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +use Gearman::Worker; +use Mojo::JSON; +use Mojo::Util qw(decode slurp); +use File::Temp; + +sub load_config { + my ($file) = @_; + my $code = decode('UTF-8', slurp $file); + return eval($code); +} + +my $config = load_config($ARGV[0]); +my $worker = Gearman::Worker->new(job_servers => $config->{GearmanServers}); + +$worker->register_function("dump_decode", 60, sub { + my $args = $_[0]->arg; + + my $json = Mojo::JSON->new(); + my $jsonin = $json->decode($args); + + my $file = File::Temp->new(); + print $file $jsonin->{file}; + + my $cmd = $config->{MinidumpStackwalkJSON} . " " . $file->filename . " " . $config->{SymbolsPath}; + my $out = qx($cmd 2>/dev/null) or die $!; + + my $pjson = $json->decode($out); + + # Create json for the params + $pjson->{client_info} = $jsonin->{params}; + + return $json->encode($pjson); +}); + +$worker->work() while 1;