3 package Cog; # persistant Gearman Worker - see the pun?
7 extends 'Gearman::Driver::Worker::Base';
10 with 'APKPM::Gearman';
11 with 'APKPM::Gearman::Client';
18 use Data::Dump qw(dump);
23 my $driver = Gearman::Driver->new(
24 server => 'localhost:4730',
27 logfile => 'log/persistant.log',
31 my $worker = $w1->new();
34 my $crm = $worker->do( 'CRM_search' => "TIP_UREDJAJA:ZTEDSLAM" );
38 foreach my $user ( @$crm ) {
39 $poll->{ $user->{IP_UREDAJA} }->{ $user->{SHELF_SLOT_PORT} }++;
42 warn "# poll = ", dump($poll);
44 foreach my $ip ( keys %$poll ) {
46 my $method = "ZTEDSLAM_$ip";
49 max_processes => 1, # FIXME increase?
60 my ( $self, $job, $crm ) = @_;
62 eval { $hash = H1::ZTEDSLAM->hash( $ip, $crm->{SHELF_SLOT_PORT} ) };
64 return { error => $@ } if $@;
66 $self->do_background_json( 'Store_insert', {
68 ip => $crm->{IP_MANAGEMENT}, # FIXME IP_UREDAJA ?
69 username => $crm->{USERNAME},
70 timestamp => $self->datetime_now,
71 h => $self->to_hstore($hash),
74 # return $hash; # body end
81 warn "$method added\n";
90 name => 'poll_ZTEDSLAM',
93 my ( $self, $job, $workload ) = @_;
95 my $crm = $self->do( 'CRM_search' => "TIP_UREDJAJA:ZTEDSLAM" );
99 my $taskset = $worker->gc->new_task_set;
102 foreach my $user ( @$crm ) {
103 my $name = 'ZTEDSLAM_' . $user->{IP_UREDAJA};
104 $taskset->add_task( $name, $self->e_json( $user ), {
105 on_complete => sub { "# $name done ", dump($user), $/ }
107 if ! $seen->{ $user->{IP_UREDAJA} }->{ $user->{SHELF_SLOT_PORT} }++;
112 warn "# seen ", dump($seen);