# $Id$
package Mvalve::Queue::Q4M;
use Moose;
use Queue::Q4M;
with 'Mvalve::Queue';
has 'connect_info' => (
is => 'rw',
isa => 'ArrayRef',
required => 1
);
has 'q4m' => (
is => 'rw',
isa => 'Queue::Q4M',
handles => {
map { ("q_$_" => $_) }
qw( fetch_hashref )
}
);
__PACKAGE__->meta->make_immutable;
no Moose;
sub BUILD {
my $self = shift;
$self->q4m(
Queue::Q4M->connect( connect_info => $self->connect_info )
);
$self;
}
sub next {
my ($self, %args) = @_;
my $table_conds = $args{table_conds};
if (! $table_conds) {
return ();
}
my @args = @$table_conds;
if ($args{timeout} > 0) {
push @args, $args{timeout};
}
return $self->q4m->next(@args);
}
sub fetch {
my ($self, %args) = @_;
my $table = $args{table};
my $args = $args{args};
my $cols = $self->q_fetch_hashref( $table, $args );
if (! $cols) {
return ();
}
return Mvalve::Message->deserialize( $cols->{message} );
}
sub insert {
my ($self, %args) = @_;
$self->q4m->insert( $args{table}, $args{data} );
}
sub clear { shift->q4m->clear(@_) }
1;
__END__
=head1 NAME
Mvalve::Queue::Q4M - Q4M Implementation
=head1 SYNOPSIS
use Mvalve::Queue::Q4M;
my $q = Mvalve::Queue::Q4M->new( connect_info => [ ... ] );
$q->next(
table_conds => [ ... ],
timeout => ...
);
$q->fetch(
table => ...,
args => { ... }
);
$q->insert(
table => ...,
data => { ... },
);
$q->clear();
=head1 METHODS
=head2 next
=head2 fetch
=head2 insert
=head2 clear
=cut