1 # File: Stem/WorkQueue.pm
3 # This file is part of Stem.
4 # Copyright (C) 1999, 2000, 2001 Stem Systems, Inc.
6 # Stem is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # Stem is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with Stem; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 # For a license to use the Stem under conditions other than those
21 # described here, to purchase support for this software, or to purchase a
22 # commercial warranty contract, please contact Stem Systems at:
24 # Stem Systems, Inc. 781-643-7504
25 # 79 Everett St. info@stemsystems.com
29 package Stem::WorkQueue ;
39 # This POD section is autoegenerated. Any edits to it will be lost.
41 =head2 Constructor Attributes for Class Stem::WorkQueue
50 # End of autogenerated POD
57 my( $class ) = shift ;
59 my $self = Stem::Class::parse_args( $attr_spec, @_ ) ;
60 return $self unless ref $self ;
62 $self->{ 'work_queue' } = [] ;
63 $self->{ 'worker_queue' } = [] ;
70 my ( $self, $msg ) = @_ ;
72 push( @{$self->{ 'work_queue' }}, $msg ) ;
74 $self->_check_for_work() ;
81 my ( $self, $msg ) = @_ ;
83 #print $msg->dump('worker') ;
85 push( @{$self->{ 'worker_queue' }}, $msg ) ;
87 $self->_check_for_work() ;
96 my $work_q = $self->{ 'work_queue' } ;
97 my $worker_q = $self->{ 'worker_queue' } ;
101 # see if we have both workers and work to do
103 return unless @{$work_q} && @${worker_q} ;
105 my $work_msg = shift @{$work_q} ;
106 my $worker_msg = shift @{$worker_q} ;
108 #print "WORK out [", Store( $worker_msg->from() ), "]\n" ;
110 $work_msg->to( scalar $worker_msg->from() ) ;
112 #print $work_msg->dump( 'work' ) ;
113 $work_msg->dispatch() ;
121 my $work_cnt = @{$self->{ 'work_queue' }} ;
122 my $worker_cnt = @{$self->{ 'worker_queue' }} ;
126 Work Queue: $work_cnt
127 Worker Queue: $worker_cnt