summaryrefslogtreecommitdiff
path: root/gnu/CORBA/gnuRequest.java
diff options
context:
space:
mode:
authorAudrius Meskauskas <audriusa@Bioinformatics.org>2005-10-02 19:57:59 +0000
committerAudrius Meskauskas <audriusa@Bioinformatics.org>2005-10-02 19:57:59 +0000
commit1ae69e4e117f16a6f054d25da0de26f83fe5b43e (patch)
treeb51b94a3ca68cd1811721bfd973beb21f466989e /gnu/CORBA/gnuRequest.java
parent61e82a839a0195d6878f26f82e55ac1d414cc802 (diff)
downloadclasspath-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.java52
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);
}
}