7 Filesystem Gearman Worker
12 use Data::Dump qw(dump);
14 use lib '/srv/cloudstore/lib';
18 my $api = CloudStore::API->new('s1');
21 my $worker = Gearman::Worker->new;
22 $worker->job_servers('127.0.0.1:4730');
28 $worker->register_function( create_user => sub {
33 warn "# create_user [$work]\n";
34 my ( $email, $password, $quota ) = split(/\s+/,$work,3);
35 $quota ||= 200000 && warn "default quota";
36 $api->create_user( $email, $password, $quota );
39 =head2 send_file ~u2001/from.txt#~u2003/dir/new to.txt
43 $worker->register_function( send_file => sub {
48 warn "# send_file [$work]\n";
50 my ( $from, $to ) = split(/#/,$work,2);
52 my $f_uid = $1 if $from =~ s{~(\w+)/}{};
53 my $t_uid = $1 if $to =~ s{~(\w+)/}{};
55 warn "send_file $f_uid $from -> $t_uid $to\n";
57 $api->send_file( $f_uid => $from, $t_uid => $to );
60 =head2 rename_file ~u2001/old.txt#new.txt
64 $worker->register_function( rename_file => sub {
69 warn "# rename_file [$work]\n";
71 my ( $from, $to ) = split(/#/,$work,2);
72 my $login = $1 if $from =~ s{~(\w+)/}{};
73 $api->rename_file( $login, $from, $to );
76 =head2 delete ~u2001/file_or_dir
80 $worker->register_function( delete => sub {
84 warn "# delete [$work]\n";
86 my $login = $1 if $work =~ s{~(\w+)}{};
87 $api->delete( $login, $work );
91 =head2 file_size ~u2001/foo.txt
95 $worker->register_function( file_size => sub {
99 warn "# file_size [$work]\n";
101 my $login = $1 if $work =~ s{~(\w+)}{};
102 $api->file_size( $login, $work );
105 =head2 user_usage u2001
109 $worker->register_function( user_usage => sub {
111 my $work = $job->arg;
113 warn "# usage [$work]\n";
114 my $usage = $api->usage( $work );
115 return $usage->{_usage};
118 warn "$0 pid $$ waitng for jobs\n";
120 $worker->work while 1;