bin/gearman_decode_worker.pl
changeset 34 e0d6597078a5
parent 20 169c73eb8881
child 43 6070307efd38
equal deleted inserted replaced
33:da690d68c1ff 34:e0d6597078a5
    14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    15 
    15 
    16 use Gearman::Worker;
    16 use Gearman::Worker;
    17 use Mojo::JSON;
    17 use Mojo::JSON;
    18 use Mojo::Util qw(decode slurp);
    18 use Mojo::Util qw(decode slurp);
       
    19 use Mojo::Loader;
    19 use File::Temp;
    20 use File::Temp;
    20 use lib 'lib';
    21 use lib 'lib';
    21 
    22 
    22 sub load_config {
    23 sub load_config {
    23     my ($file) = @_;
    24     my ($file) = @_;
    25     return eval($code);
    26     return eval($code);
    26 }
    27 }
    27 
    28 
    28 my $config = load_config($ARGV[0]);
    29 my $config = load_config($ARGV[0]);
    29 
    30 
    30 eval "require $config->{Storage}->{Type}";
    31 my $loader = Mojo::Loader->new;
    31 my $storage = $config->{Storage}->{Type}->new($config->{Storage});
    32 
       
    33 my $storage_class = $config->{Storage}->{Type};
       
    34 if (my $e = $loader->load($storage_class)) {
       
    35     die ref $e ? "Exception: $e" : 'Not found!';
       
    36 }
       
    37 
       
    38 my $storage = $storage_class->new(config => $config->{Storage});
    32 
    39 
    33 my $worker = Gearman::Worker->new(job_servers => $config->{DecodeQueue}->{GearmanServers});
    40 my $worker = Gearman::Worker->new(job_servers => $config->{DecodeQueue}->{GearmanServers});
    34 
    41 
    35 
    42 
    36 $worker->register_function("dump_decode", 60, sub {
    43 $worker->register_function("dump_decode", 60, sub {