//Sample2/AclassCI.java
//#################################################################
//      Class AclassCI  : Aclass (C)lient (I)mplementation
//#################################################################
//
// Construction Date : 9/24/98 3:44 PM
// Auto-generated by CreateNetAppWrappers (Chris Anderson (C) UCLA 1998)
//
import java.io.*;
import java.net.Socket;
import java.util.Vector;
import cam.netapp.*;

public class AclassCI implements cam.netapp.CIinterface
{

//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//     Client Implementation of Source Class Methods
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
public int addTwo(int Arg_1)
{
    Vector methodData = new Vector(2);
    methodData.addElement(new Integer(0));
    methodData.addElement(new Integer(Arg_1));

    try{Os.writeObject(methodData);}
    catch(Exception e){System.out.println(e);};

    Vector MethodRet = new Vector();
    try{MethodRet = (Vector)Is.readObject();}
    catch(Exception e){System.out.println(e);};

    int retValue = ((Integer)MethodRet.elementAt(0)).intValue();
    if(retValue != 0)
    {
    System.out.println("Error In Remote Invocation Of Aclass.addTwo");
    }
    return ((Integer)MethodRet.elementAt(1)).intValue();

}

//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//      Client Implementation Specific Methods
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
public AclassCI()
{
    verboseFlag = false;
    Os          = null;
    Is          = null;
    netConnect = new NetworkConnection();
    netConnect.setVerboseFlag(verboseFlag);
}
protected void finalize() throws Throwable
{
    netConnect.disconnectRemoteApplication();
}
public void setObjectStreams(InputStream inS, OutputStream outS) throws Exception
{

    try{Os = new ObjectOutputStream(outS);}
    catch(Exception e){throw e;}

    try{Is = new ObjectInputStream(inS);}
    catch(Exception e){throw e;}

}

public void createServerInstance(String address, int portnum)
throws Exception
{
    int auxConnections = 1;
    try{netConnect.connectRemoteApplication(address, portnum,"AclassSI", auxConnections);}
    catch(Exception e)
    {throw new Exception("AclassCI : Unable to Connect to Remote Instance");};
    netConnect.startRemoteApplication();

    try{Os = new ObjectOutputStream(netConnect.getOutputStream());}
    catch(Exception e)
    {throw new Exception("AclassCI : Unable to Connect to Remote Instance");};

    try{Is = new ObjectInputStream(netConnect.getInputStream());}
    catch(Exception e)
    {throw new Exception("AclassCI : Unable to Connect to Remote Instance");};

    if(verboseFlag){System.out.println("AclassCI : Connection Complete");};

}

public void setVerboseFlag(boolean flag)
{
    verboseFlag = flag;
    netConnect.setVerboseFlag(verboseFlag);
}

//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//      Data Members
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
    ObjectOutputStream Os;
    ObjectInputStream  Is;
    NetworkConnection netConnect;
    public boolean verboseFlag;
}