From 1ae69e4e117f16a6f054d25da0de26f83fe5b43e Mon Sep 17 00:00:00 2001 From: Audrius Meskauskas Date: Sun, 2 Oct 2005 19:57:59 +0000 Subject: 2005-10-02 Audrius Meskauskas * gnu/CORBA/CDR/ArrayValueHelper.java, gnu/CORBA/CDR/IDLTypeHelper.java, gnu/CORBA/CDR/UnknownExceptionCtxHandler.java, gnu/CORBA/CDR/gnuRuntime.java, gnu/CORBA/CDR/gnuValueStream.java, gnu/CORBA/CDR/VMVio.java, gnu/CORBA/IorProvider.java, gnu/javax/rmi/CORBA/TieTargetRecord.java, gnu/javax/rmi/CORBA/ValueHandlerDelegateImpl.java, gnu/javax/rmi/CORBA/corbaObjectInput.java, gnu/javax/rmi/CORBA/corbaObjectOutput.java, gnu/javax/rmi/CORBA/dwoTester.java, gnu/javax/rmi/CORBA/gnuRmiUtil.java: New files. * gnu/CORBA/CDR/aligningInputStream.java, gnu/CORBA/CDR/aligningOutputStream.java: gnu/CORBA/CDR/Vio.java, gnu/CORBA/CDR/cdrBufInput.java, gnu/CORBA/CDR/cdrBufOutput.java, gnu/CORBA/CDR/cdrInput.java, gnu/CORBA/CDR/cdrOutput.java, gnu/CORBA/CDR/noHeaderInput.java, gnu/CORBA/Functional_ORB.java, gnu/CORBA/GIOP/MessageHeader.java, gnu/CORBA/GIOP/ServiceContext.java, gnu/CORBA/IOR_Delegate.java, gnu/CORBA/IOR_contructed_object.java, gnu/CORBA/Interceptor/Registrator.java, gnu/CORBA/NamingService/NameParser.java, gnu/CORBA/NamingService/NamingServiceTransient.java, gnu/CORBA/ObjectCreator.java, gnu/CORBA/Poa/LocalDelegate.java, gnu/CORBA/Poa/ORB_1_4.java, gnu/CORBA/Poa/gnuPOA.java, gnu/CORBA/Poa/gnuServantObject.java, gnu/CORBA/Simple_delegate.java, gnu/CORBA/gnuAny.java, gnu/CORBA/gnuRequest.java, org/omg/CORBA/OMGVMCID.java, org/omg/CORBA/StringValueHelper.java, org/omg/CORBA/SystemException.java, org/omg/CORBA/WStringValueHelper.java, org/omg/CORBA/portable/ObjectImpl.java, org/omg/CORBA_2_3/ORB.java, org/omg/CORBA_2_3/portable/InputStream.java, org/omg/CORBA_2_3/portable/OutputStream.java: Modified to support RMI over CORBA mechanism. * gnu/javax/rmi/CORBA/DelegateFactory.java, gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java, gnu/javax/rmi/CORBA/StubDelegateImpl.java, gnu/javax/rmi/CORBA/UtilDelegateImpl.java, javax/rmi/CORBA/ClassDesc.java, javax/rmi/CORBA/PortableRemoteObjectDelegate.java, javax/rmi/CORBA/Stub.java, javax/rmi/CORBA/StubDelegate.java, javax/rmi/CORBA/Tie.java, javax/rmi/CORBA/Util.java, javax/rmi/CORBA/UtilDelegate.java, javax/rmi/CORBA/ValueHandler.java, javax/rmi/CORBA/package.html, javax/rmi/PortableRemoteObject.java, javax/rmi/package.html: New files (replacing). * gnu/javax/rmi/CORBA/ValueHandlerImpl.java, gnu/javax/rmi/PortableServer.java: Modified to keep the code compileable between subsequent patches. --- gnu/CORBA/gnuRequest.java | 52 +++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 24 deletions(-) (limited to 'gnu/CORBA/gnuRequest.java') diff --git a/gnu/CORBA/gnuRequest.java b/gnu/CORBA/gnuRequest.java index 7d756eddb..9b1ba641b 100644 --- a/gnu/CORBA/gnuRequest.java +++ b/gnu/CORBA/gnuRequest.java @@ -54,6 +54,7 @@ import org.omg.CORBA.Any; import org.omg.CORBA.BAD_INV_ORDER; import org.omg.CORBA.BAD_PARAM; import org.omg.CORBA.Bounds; +import org.omg.CORBA.COMM_FAILURE; import org.omg.CORBA.CompletionStatus; import org.omg.CORBA.Context; import org.omg.CORBA.ContextList; @@ -714,14 +715,14 @@ public class gnuRequest extends Request implements Cloneable /** * Do the actual invocation. This implementation requires to set the IOR * property ({@link #setIOR(IOR)} before calling this method. - * + * * @throws BAD_INV_ORDER, minor code 0, if the IOR has not been previously set * or if the direct argument addition is mixed with the direct argument * writing into the output stream. - * + * * @return the server response in binary form. */ - public synchronized binaryReply submit() throws ForwardRequest +public synchronized binaryReply submit() throws ForwardRequest { gnu.CORBA.GIOP.MessageHeader header = new gnu.CORBA.GIOP.MessageHeader(); @@ -835,14 +836,17 @@ public class gnuRequest extends Request implements Cloneable MessageHeader response_header = new MessageHeader(); InputStream socketInput = socket.getInputStream(); response_header.read(socketInput); - - byte[] r = new byte[ response_header.message_size ]; - int n = 0; - reading: - while (n < r.length) + + byte [] r; + if (orb instanceof Functional_ORB) { - n += socketInput.read(r, n, r.length - n); + Functional_ORB fo = (Functional_ORB) orb; + r =response_header.readMessage(socketInput, socket, + fo.TOUT_WHILE_READING, fo.TOUT_AFTER_RECEIVING); } + else + r = response_header.readMessage(socketInput, null, 0, 0); + return new binaryReply(orb, response_header, r); } else @@ -850,9 +854,9 @@ public class gnuRequest extends Request implements Cloneable } catch (IOException io_ex) { - MARSHAL m = - new MARSHAL("Unable to open a socket at " + ior.Internet.host + ":" + - ior.Internet.port, 10000 + ior.Internet.port, + COMM_FAILURE m = + new COMM_FAILURE("Unable to open a socket at " + ior.Internet.host + ":" + + ior.Internet.port, 0xC9, CompletionStatus.COMPLETED_NO ); m.initCause(io_ex); @@ -929,7 +933,8 @@ public class gnuRequest extends Request implements Cloneable * Do actual invocation. This method recursively calls itself if the * redirection is detected. */ - private void p_invoke() throws SystemException, ForwardRequest + private void p_invoke() + throws SystemException, ForwardRequest { binaryReply response = submit(); @@ -946,7 +951,7 @@ public class gnuRequest extends Request implements Cloneable switch (m_rph.reply_status) { - case ReplyHeader.NO_EXCEPTION : + case ReplyHeader.NO_EXCEPTION: NamedValue arg; @@ -992,7 +997,7 @@ public class gnuRequest extends Request implements Cloneable break; - case ReplyHeader.SYSTEM_EXCEPTION : + case ReplyHeader.SYSTEM_EXCEPTION: if (align) { input.align(8); @@ -1000,7 +1005,8 @@ public class gnuRequest extends Request implements Cloneable } readExceptionId(input); - m_sys_ex = ObjectCreator.readSystemException(input); + m_sys_ex = ObjectCreator.readSystemException(input, + m_rph.service_context); m_environment.exception(m_sys_ex); if (m_interceptor != null) @@ -1008,7 +1014,7 @@ public class gnuRequest extends Request implements Cloneable throw m_sys_ex; - case ReplyHeader.USER_EXCEPTION : + case ReplyHeader.USER_EXCEPTION: if (align) { input.align(8); @@ -1030,8 +1036,8 @@ public class gnuRequest extends Request implements Cloneable break; - case ReplyHeader.LOCATION_FORWARD_PERM : - case ReplyHeader.LOCATION_FORWARD : + case ReplyHeader.LOCATION_FORWARD_PERM: + case ReplyHeader.LOCATION_FORWARD: if (response.header.version.since_inclusive(1, 2)) input.align(8); @@ -1043,8 +1049,7 @@ public class gnuRequest extends Request implements Cloneable catch (IOException ex) { new MARSHAL("Cant read forwarding info", 5103, - CompletionStatus.COMPLETED_NO - ); + CompletionStatus.COMPLETED_NO); } setIor(forwarded); @@ -1058,10 +1063,9 @@ public class gnuRequest extends Request implements Cloneable p_invoke(); return; - default : + default: throw new MARSHAL("Unknow reply status", 8100 + m_rph.reply_status, - CompletionStatus.COMPLETED_NO - ); + CompletionStatus.COMPLETED_NO); } } -- cgit v1.2.1