package seqOfComplex;

/**
 * <ul>
 * <li> <b>IDL Source</b>    "seqOfComplexTest.idl"
 * <li> <b>IDL Name</b>      ::seqOfComplex::SeqOfComplexTest
 * <li> <b>Repository Id</b> IDL:seqOfComplex/SeqOfComplexTest:1.0
 * </ul>
 * <b>IDL definition:</b>
 * <pre>
 * interface SeqOfComplexTest {
  ...
};
 * </pre>
 */
public class _SeqOfComplexTestStub extends com.inprise.vbroker.CORBA.portable.ObjectImpl implements seqOfComplex.SeqOfComplexTest {
  final public static java.lang.Class _opsClass = seqOfComplex.SeqOfComplexTestOperations.class;

  public java.lang.String[] _ids () {
    return __ids;
  }

  private static java.lang.String[] __ids = {
    "IDL:seqOfComplex/SeqOfComplexTest:1.0"
  };

  /**
   * <pre>
   *   long testSeqOfComplex (in seqOfComplex.BasicStructSeq inBasicStructSeq,
                         inout seqOfComplex.BasicStructSeq inoutBasicStructSeq,
                         out seqOfComplex.BasicStructSeq outBasicStructSeq);
   * </pre>
   */
  public int testSeqOfComplex (seqOfComplex.BasicStruct[] inBasicStructSeq, 
                               seqOfComplex.BasicStructSeqHolder inoutBasicStructSeq, 
                               seqOfComplex.BasicStructSeqHolder outBasicStructSeq) {

    while (true) {
      if (!_is_local()) {
        org.omg.CORBA.portable.OutputStream _output = null;
        org.omg.CORBA.portable.InputStream  _input  = null;
        int _result;
        try {
          _output = this._request("testSeqOfComplex", true);
          seqOfComplex.BasicStructSeqHelper.write(_output, inBasicStructSeq);
          seqOfComplex.BasicStructSeqHelper.write(_output, inoutBasicStructSeq.value);
          _input = this._invoke(_output);
          _result = _input.read_long();
          inoutBasicStructSeq.value = seqOfComplex.BasicStructSeqHelper.read(_input);
          outBasicStructSeq.value = seqOfComplex.BasicStructSeqHelper.read(_input);
          return _result;
        }
        catch (org.omg.CORBA.portable.ApplicationException _exception) {
          final org.omg.CORBA.portable.InputStream in = _exception.getInputStream();
          java.lang.String _exception_id = _exception.getId();
          throw new org.omg.CORBA.UNKNOWN("Unexpected User Exception: " + _exception_id);
        }
        catch (org.omg.CORBA.portable.RemarshalException _exception) {
          continue;
        }
        finally {
          this._releaseReply(_input);
        }
      } else {
        final org.omg.CORBA.portable.ServantObject _so = _servant_preinvoke("testSeqOfComplex", _opsClass);
        if (_so == null) {
          continue;
        }
        final seqOfComplex.SeqOfComplexTestOperations _self = (seqOfComplex.SeqOfComplexTestOperations)_so.servant;
        try {
          return _self.testSeqOfComplex(inBasicStructSeq, inoutBasicStructSeq, 
                                        outBasicStructSeq);
        }
        finally {
          _servant_postinvoke(_so);
        }
      }
    }
  }

}
