[Bioperl-l] biocorba improvements

Jason Stajich jason@chg.mc.duke.edu
Wed, 19 Jul 2000 18:00:55 -0400 (EDT)


Brad and I have been discussing how to make BioCorba easier to use.  It
seems like a lot of things are in common when one goes to build a
corba object.  What if we moved all the code into a single object
called Bio::CorbaServer::Server?  Lets look at it from the server
side first, a similar analogy for Bio::CorbaClient::Client would apply.

So the following lines (from servers/seqdbsrv.pl) :

# lets go CORBA-ing

use CORBA::ORBit idl => [ 'biocorba.idl' ];

# build the actual orb and get the first POA (Portable Object Adaptor)
$orb = CORBA::ORB_init("orbit-local-orb");
$root_poa = $orb->resolve_initial_references("RootPOA");

# make a Fasta index object

my $seqdb = Bio::Index::Fasta->new(-filename => $tst_index_file, 
				 -write_flag => 0, 
				 -verbose => 1);					
$servant = Bio::CorbaServer::SeqDB->new($root_poa,'test_db', 
					$seqdb);

# this registers this object as a live object with the ORB
my $id = $root_poa->activate_object ($servant);

# we need to get the IOR of this object. The way to do this is to
# to get a client of the object (temp) and then get the IOR of the
# client
$temp = $root_poa->id_to_reference ($id);
my $ior = $orb->object_to_string ($temp);

# write out the IOR. This is what we give to a different machine
$ior_file = "seqdbsrv.ior";
open (OUT, ">$ior_file") || die "Cannot open file for ior: $!";
print OUT "$ior";
close OUT;

# tell everyone we are ready for it
print STDERR "Activating the ORB. IOR written to $ior_file\n";

# and off we go. Woo Hoo!
$root_poa->_get_the_POAManager->activate;
$orb->run;


 ---- could be replaced with the following ----

my $server = Bio::CorbaServer::Server->new(-idl=> 'biocorba.idl',
	                                   -ior=> 'seqdbsrv.ior',
	                                   -orbname => 'orbit-local-orb' );

my $seqdb = $server->new_object(-object=> 'Bio::CorbaServer::SeqDB',
                                -objectref => $seqdbref,
				-args=> [ -dbname => 'dbname-here' ] );
# if there were other args they could go in here
$server->start();

What do you think?  Problems with this?

-Jason

Jason Stajich
jason@chg.mc.duke.edu
http://galton.mc.duke.edu/~jason/
(919)684-1806 (office) 
(919)684-2275 (fax) 
Center for Human Genetics - Duke University Medical Center
http://wwwchg.mc.duke.edu/