X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FTask%2FSearch.pm;h=397dbeee29037f713464b3350024ea645ae5c6a1;hp=c0b43229b242809a7fd45ef696117e524f7da9aa;hb=d10f84ac6684a1f483629de18d720bb8a8d6bd56;hpb=f82efc4429763e45c0ca6f93d15e51de9a7468fa diff --git a/lib/ZOOM/IRSpy/Task/Search.pm b/lib/ZOOM/IRSpy/Task/Search.pm index c0b4322..397dbee 100644 --- a/lib/ZOOM/IRSpy/Task/Search.pm +++ b/lib/ZOOM/IRSpy/Task/Search.pm @@ -1,4 +1,4 @@ -# $Id: Search.pm,v 1.2 2006-10-11 16:48:19 mike Exp $ +# $Id: Search.pm,v 1.13 2007-03-14 11:56:35 mike Exp $ package ZOOM::IRSpy::Task::Search; @@ -36,25 +36,32 @@ sub new { sub run { my $this = shift(); + $this->set_options(); + my $conn = $this->conn(); + $conn->connect($conn->option("host")); + my $query = $this->{query}; - $this->irspy()->log("irspy_test", $conn->option("host"), + $this->irspy()->log("irspy_task", $conn->option("host"), " searching for '$query'"); + die "task $this has resultset?!" if defined $this->{rs}; + + ### Note well that when this task runs, it creates a result-set + # object which MUST BE DESTROYED in order to prevent large-scale + # memory leakage. So when creating a Task::Search, it is the + # APPLICATION'S RESPONSIBILITY to ensure that the callback + # invoked on success OR FAILURE makes arrangements for the set + # to be destroyed. $this->{rs} = $conn->search_pqf($query); + warn "no ZOOM-C level events queued by $this" + if $conn->is_idle(); - # I want to catch the situation where a search is attempted on a - # not-yet opened connection (e.g. the Search::Title test is run - # before Ping) but since this situation doesn't involve the - # generation of a ZOOM event, the main loop won't see an error. - # So I check for it immediately: - $conn->_check(); - # ### Unfortunately, this also fails to detect the condition I'm - # concerned with, so I think I am out of luck. + $this->set_options(); } sub render { my $this = shift(); - return ref($this) . " " . $this->{query}; + return ref($this) . "(" . $this->{query} . ")"; } use overload '""' => \&render;