diff options
| author | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2005-10-02 19:57:59 +0000 |
|---|---|---|
| committer | Audrius Meskauskas <audriusa@Bioinformatics.org> | 2005-10-02 19:57:59 +0000 |
| commit | 1ae69e4e117f16a6f054d25da0de26f83fe5b43e (patch) | |
| tree | b51b94a3ca68cd1811721bfd973beb21f466989e /gnu/CORBA/gnuRequest.java | |
| parent | 61e82a839a0195d6878f26f82e55ac1d414cc802 (diff) | |
| download | classpath-1ae69e4e117f16a6f054d25da0de26f83fe5b43e.tar.gz | |
2005-10-02 Audrius Meskauskas <AudriusA@Bioinformatics.org>
* 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.
Diffstat (limited to 'gnu/CORBA/gnuRequest.java')
| -rw-r--r-- | gnu/CORBA/gnuRequest.java | 52 |
1 files changed, 28 insertions, 24 deletions
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); } } |
