NAME

Queue::Q4M - Simple Interface To q4m

SYNOPSIS

use Queue::Q4M;

my $q = Queue::Q4M->connect(
  connect_info => [
    'dbi:mysql:dbname=mydb',
    $username,
    $password
  ],
);

for (1..10) {
  $q->insert($table, \%fieldvals);
}

while ($q->next($table)) {
  my ($col1, $col2, $col3) = $q->fetch($table, \@fields);
  print "col1 = $col1, col2 = $col2, col3 = $col3\n";
}

while ($q->next($table)) {
  my $cols = $q->fetch_arrayref($table, \@fields);
  print "col1 = $cols->[0], col2 = $cols->[1], col3 = $cols->[2]\n";
}

while ($q->next($table)) {
  my $cols = $q->fetch_hashref($table, \@fields);
  print "col1 = $cols->{col1}, col2 = $cols->{col2}, col3 = $cols->{col3}\n";
}

# to use queue_wait(table_cond1,table_cond2,timeout)
while (my $which = $q->next(@table_conds)) {
  # $which contains the table name
}

$q->disconnect;

DESCRIPTION

Queue::Q4M is a simple wrapper to q4m, which is an implementation of a queue using mysql.

METHODS

new

Creates a new Queue::Q4M instance. Normally you should use connect() instead.

connect

Connects to the target database.

my $q = Queue::Q4M->connect(
  connect_info => [
    'dbi:mysql:dbname=q4m',
  ]
);

next($table_cond1[, $table_cond2, $table_cond3, ..., $timeout])

Blocks until the next item is available. This is equivalent to calling queue_wait() on the given table.

my $which = $q->next( $table_cond1, $table_cond2, $table_cond3 );

fetch

fetch_array

Fetches the next available row. Takes a table name and the list of columns to be fetched.

my ($col1, $col2, $col3) = $q->fetch( $table, [ qw(col1 col2 col3) ] );

fetch_arrayref

Same as fetch_array, but fetches using fetchrow_arrayref()

my $arrayref = $q->fetch_arrayref( $table, [ qw(col1 col2 col3) ] );

fetch_hashref

Same as fetch_array, but fetches using fetchrow_hashref()

my $hashref = $q->fetch_hashref( $table, [ qw(col1 col2 col3) ] );

insert($table, \%field)

Inserts into the queue. The first argument should be a scalar specifying a table name. The second argument is a hashref that specifies the mapping between column names and their respective values.

$q->insert($table, { col1 => $val1, col2 => $val2, col3 => $val3 });

For backwards compatibility, you may omit $table if you specified $table in the constructor.

clear($table)

Deletes everything the specified queue. Be careful!

status()

Returns an instance of Queue::Q4M::Status (actually, a subclass there of).

dbh

Returns the database handle after making sure that it's connected.

disconnect

Disconnects.

BUILD

DEMOLISH

These are defined as part of Moose infrastructure

Q4M_MINIMUM_VERSION

The minimum version of q4m that Queue::Q4M supports

AUTHOR

Copyright (c) 2008 Daisuke Maki <daisuke@endeworks.jp>

CONTRIBUTOR

Taro Funaki

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html