added delete gearman worker
[cloudstore.git] / gearman / send_file.pl
index f9df9ff..a179607 100755 (executable)
@@ -11,12 +11,16 @@ sub home_dir {
        return $dir;
 }
 
-sub send_file {
+use Gearman::Worker;
+my $worker = Gearman::Worker->new;
+$worker->job_servers('127.0.0.1:4730');
+
+$worker->register_function( send_file => sub {
        my ($job) = @_;
 
        my $work = $job->arg;
        chomp $work;
-       warn "# work [$work]\n";
+       warn "# send_file [$work]\n";
 
        my ( $from, $to ) = split(/#/,$work,2);
 
@@ -31,12 +35,27 @@ sub send_file {
        link $f_dir . $from => $t_dir . $to;
 
        return "send_file $f_dir $from -> $t_dir $to";
-};
+});
 
-use Gearman::Worker;
-my $worker = Gearman::Worker->new;
-$worker->job_servers('127.0.0.1:4730');
-$worker->register_function( send_file => \&send_file );
+
+$worker->register_function( delete => sub {
+       my ($job) = @_;
+       my $work = $job->arg;
+       chomp $work;
+       warn "# delete [$work]\n";
+
+       my $dir = home_dir($1) if $work =~ s/~(\w+)//;
+       my $full = $dir . $work;
+
+       if ( -d $full ) {
+               warn "rmdir $full\n";
+               rmdir $full || warn "ERROR $!";
+       } else {
+               warn "unlink $full\n";
+               unlink $full || warn "ERROR $!";
+       }
+
+});
 
 warn "$0 pid $$ waitng for jobs\n";
 $worker->work while 1;