X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy%2FConnection.pm;h=0e32c8be37f687519c25e0aefc550ea3503e0e7d;hp=74c24a85fa069082dab0d9e7c131fc089f847949;hb=e04a51eb8137d29b22ff514f4c226192fbd530b8;hpb=a8be7db5305925fc720f3dac7e6afc8fba7b9e60 diff --git a/lib/ZOOM/IRSpy/Connection.pm b/lib/ZOOM/IRSpy/Connection.pm index 74c24a8..0e32c8b 100644 --- a/lib/ZOOM/IRSpy/Connection.pm +++ b/lib/ZOOM/IRSpy/Connection.pm @@ -1,4 +1,4 @@ -# $Id: Connection.pm,v 1.1 2006-10-06 11:33:07 mike Exp $ +# $Id: Connection.pm,v 1.7 2006-11-16 17:18:43 mike Exp $ package ZOOM::IRSpy::Connection; @@ -11,6 +11,7 @@ our @ISA = qw(ZOOM::Connection); use ZOOM::IRSpy::Task::Connect; use ZOOM::IRSpy::Task::Search; +use ZOOM::IRSpy::Task::Retrieve; =head1 NAME @@ -30,14 +31,14 @@ IRSpy object that it is associated with. =cut -sub new { +sub create { my $class = shift(); my $irspy = shift(); - my $this = $class->SUPER::new(@_); + my $this = $class->SUPER::create(@_); $this->{irspy} = $irspy; $this->{record} = undef; - $this->{tasks} = undef; + $this->{tasks} = []; return $this; } @@ -61,11 +62,8 @@ sub record { sub tasks { my $this = shift(); - my($new) = @_; - my $old = $this->{tasks}; - $this->{tasks} = $new if defined $new; - return $old; + return $this->{tasks}; } @@ -76,7 +74,21 @@ sub current_task { my $old = $this->{current_task}; if (defined $new) { $this->{current_task} = $new; - $this->log("irspy_debug", "set current task to $new"); + $this->log("irspy_task", "set current task to $new"); + } + + return $old; +} + + +sub next_task { + my $this = shift(); + my($new) = @_; + + my $old = $this->{next_task}; + if (defined $new) { + $this->{next_task} = $new; + $this->log("irspy_task", "set next task to $new"); } return $old; @@ -93,49 +105,52 @@ sub log { sub irspy_connect { my $this = shift(); - my(%cb) = @_; + my($udata, $options, %cb) = @_; - $this->add_task(new ZOOM::IRSpy::Task::Connect($this, %cb)); - $this->log("irspy", "registered connect()"); + my $task = new ZOOM::IRSpy::Task::Connect($this, $udata, $options, %cb); + $this->add_task($task); } sub irspy_search_pqf { my $this = shift(); - my($query, %cb) = @_; + my($query, $udata, $options, %cb) = @_; - $this->add_task(new ZOOM::IRSpy::Task::Search($query, $this, %cb)); - $this->log("irspy", "registered search_pqf($query)"); + my $task = new ZOOM::IRSpy::Task::Search($query, + $this, $udata, $options, %cb); + $this->add_task($task); } -sub add_task { +sub irspy_rs_record { my $this = shift(); - my($task) = @_; + my($rs, $index0, $udata, $options, %cb) = @_; - my $tasks = $this->tasks(); - if (!defined $tasks) { - $this->tasks([ $task ]); - } else { - $tasks->[-1]->{next} = $task; - push @$tasks, $task; - } - - $this->log("irspy", "added task $task"); + my $task = new ZOOM::IRSpy::Task::Retrieve($rs, $index0, + $this, $udata, $options, %cb); + $this->add_task($task); } -sub start_task { +sub add_task { my $this = shift(); my($task) = @_; - die "no task defined for " . $this->option("host") - if !defined $task; - $this->current_task($task); - $task->run(); + my $tasks = $this->{tasks}; + $tasks->[-1]->{next} = $task if @$tasks > 0; + push @$tasks, $task; + $this->log("irspy_task", "added task $task"); } +sub render { + my $this = shift(); + return ref($this) . "(" . $this->option("host") . ")"; +} + +use overload '""' => \&render; + + =head1 SEE ALSO ZOOM::IRSpy