From aaddf63777cc331d43314a96d195453d21bbb81f Mon Sep 17 00:00:00 2001 From: miker Date: Thu, 24 Feb 2005 13:14:26 +0000 Subject: [PATCH] added nondestructive (queue|stack).peek.all interface for grabbing the entire slot without removing anything. the base registered methods are streaming, so a ".atomic" version is generated by the system. git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@100 9efc2488-bf62-4759-914b-345cdb29e865 --- src/perlmods/OpenSRF/Application/Persist.pm | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/perlmods/OpenSRF/Application/Persist.pm b/src/perlmods/OpenSRF/Application/Persist.pm index be72d96..cc4c092 100644 --- a/src/perlmods/OpenSRF/Application/Persist.pm +++ b/src/perlmods/OpenSRF/Application/Persist.pm @@ -201,6 +201,38 @@ __PACKAGE__->register_method( ); +sub peek_slot { + my $self = shift; + my $client = shift; + + my $name = shift or do { + throw OpenSRF::EX::WARN ("No slot name specified!"); + }; + my $name_id = _get_name_id($name); + + my $order = 'ASC'; + $order = 'DESC' if ($self->api_name =~ /stack/o); + + my $values = $dbh->selectall_arrayref("SELECT value FROM storage WHERE name_id = ? ORDER BY id $order;", {}, $name_id); + + $client->respond( JSON->JSON2perl( $_->[0] ) ) for (@$values); + + return undef; +} +__PACKAGE__->register_method( + api_name => 'opensrf.persist.queue.peek.all', + method => 'peek_slot', + argc => 1, + stream => 1, +); +__PACKAGE__->register_method( + api_name => 'opensrf.persist.stack.peek.all', + method => 'peek_slot', + argc => 1, + stream => 1, +); + + sub store_size { my $self = shift; my $client = shift; -- 2.43.2