blob: 94cdcd1ec3843b17d3291c226e4f6d9e05d82c3d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package VNDB::Util::Misc;
use strict;
use warnings;
use Exporter 'import';
use Tie::ShareLite ':lock';
our @EXPORT = qw|multiCmd|;
# Sends a command to Multi
# Argument: the commands to add to the queue, or none to send the queue to Multi
sub multiCmd {
my $self = shift;
$self->{_multiCmd} = [] if !$self->{_multiCmd};
return push @{$self->{_multiCmd}}, @_ if @_;
return if !@{$self->{_multiCmd}};
my $s = tie my %s, 'Tie::ShareLite', -key => $self->{sharedmem_key}, -create => 'yes', -destroy => 'no', -mode => 0666;
$s->lock(LOCK_EX);
my @q = ( ($s{queue} ? @{$s{queue}} : ()), @{$self->{_multiCmd}} );
$s{queue} = \@q;
$s->unlock();
$self->{_multiCmd} = [];
}
|