#  File: Stem/Cell/Work.pm

#  This file is part of Stem.
#  Copyright (C) 1999, 2000, 2001, 2002 Stem Systems, Inc.

#  Stem is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

#  Stem is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.

#  You should have received a copy of the GNU General Public License
#  along with Stem; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#  For a license to use the Stem under conditions other than those
#  described here, to purchase support for this software, or to purchase a
#  commercial warranty contract, please contact Stem Systems at:

#       Stem Systems, Inc.		781-643-7504
#  	79 Everett St.			info@stemsystems.com
#  	Arlington, MA 02474
#  	USA

package Stem::Cell ;

use strict ;


sub cell_worker_ready {

	my ( $self ) = @_ ;

	my $cell_info = $self->_get_cell_info() ;

	my $ready_addr = $cell_info->{'work_ready_addr'} ;

	return unless $ready_addr ;

#print "READY addr [$ready_addr]\n" ;

	my $worker_msg = Stem::Msg->new(
				'to' => $ready_addr,
				'type' => 'worker',
				'from' => $cell_info->{'from_addr'},
	) ;

#print $worker_msg->dump('worker ready') ;

	$worker_msg->dispatch() ;

	return ;
}

sub cell_work_in {

	my ( $self, $msg ) = @_ ;

#print $msg->dump( 'WORK MSG' ) ;

##################
# handle error: work when work in progress. check 'work_msg'
#################

	my $cell_info = $self->_get_cell_info() ;

	my $obj = $msg->data() ;

	my $packet_text = $cell_info->{'packet'}->to_packet( $obj ) ;

	$cell_info->cell_write( $packet_text ) ;
}

1 ;