package org.jacorb.demo.outparam;
/**
* An example for using out paramters
*/
import java.io.BufferedReader;
import java.io.FileReader;
import org.omg.CORBA.DoubleHolder;
import org.omg.CORBA.StringHolder;
public class Client
{
public static void main( String[] args ) throws Exception
{
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null);
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
// resolve name to get a reference to our server
MyServer server = MyServerHelper.narrow(orb.string_to_object(reader.readLine()));
DoubleHolder doh = new DoubleHolder();
server.addNums( (double)5, (double)6, doh);
System.out.println("addNums 5 and 6 gives: " + doh.value);
String stringSeq[];
stringSeqHolder seqHolder = new stringSeqHolder( );
server.op1( "hi_there" , seqHolder );
stringSeq = seqHolder.value;
System.out.println( "String array contains: ");
for( int i = 0; i < stringSeq.length; i++ )
System.out.println( "\t" + i + ": " + stringSeq[i] );
MyServerHolder h = new MyServerHolder();
server.op2(h);
MyServer server2 = h.value;
server2.print("Who am I talking to?");
my_structHolder moh = new my_structHolder();
server.op3(moh);
my_struct m = moh.value;
System.out.println( "Struct contains: " + m.s + " " + m.l);
stringArrayHolder sah = new stringArrayHolder();
server.op4(sah);
String my_array[] = sah.value;
System.out.println("Array size: " + my_array.length );
StringHolder sh1 = new StringHolder();
String sh2 = server.op5( sh1 );
System.out.println( sh2 + " out: " + sh1.value );
// an example for a sequence of sequences of sequences of string
//
// set up a 3-dimensional string array
String [][][] string_cube = new String[1][2][3];
for( int i=0; i<string_cube.length;i++)
for( int j = 0; j < string_cube[i].length;j++)
for( int k = 0; k < string_cube[i][j].length;k++)
string_cube[i][j][k] = "("+i+","+ k + "," +j+")";
// put it into the appropriate holder for inout semantics
stringCubeHolder sf = new stringCubeHolder(string_cube);
// invoke the operation
server.stringCubeInOut(sf);
// get the returned string cube
string_cube = sf.value;
System.out.println( "string_cube after operation: ");
for( int i=0; i<string_cube.length;i++)
for( int j = 0; j < string_cube[i].length;j++)
for( int k = 0; k < string_cube[i][j].length;k++)
System.out.println(string_cube[i][j][k]);
System.out.println("---Everything went alright, closing down now---");
server.shutdown();
}
}