localclientresponseimpl.java
来自「java jdk 1.4的源码」· Java 代码 · 共 144 行
JAVA
144 行
/* * @(#)LocalClientResponseImpl.java 1.24 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.iiop;import java.io.IOException;import org.omg.CORBA.SystemException;import org.omg.CORBA.CompletionStatus;import com.sun.corba.se.internal.core.Response;import com.sun.corba.se.internal.core.ClientResponse;import com.sun.corba.se.internal.core.IOR;import com.sun.corba.se.internal.core.ServiceContext;import com.sun.corba.se.internal.core.ServiceContexts;import com.sun.corba.se.internal.iiop.messages.Message;import com.sun.corba.se.internal.iiop.messages.ReplyMessage;import com.sun.corba.se.internal.orbutil.MinorCodes;class LocalClientResponseImpl extends IIOPInputStream implements ClientResponse{ LocalClientResponseImpl(ORB orb, byte[] buf, ReplyMessage header) { super(orb, buf, header.getSize(), header.isLittleEndian(), header, null); this.reply = header; // NOTE (Ram J) (06/02/2000) if we set result.setIndex(bodyBegin) // in LocalServerResponse.getClientResponse(), then we do not need // to read the headers (done below) anymore. // This will be an optimisation which is can be done to speed up the // local invocation by avoiding reading the headers in the local cases. // BUGFIX(Ram Jeyaraman) This has been moved from // LocalServerResponse.getClientResponse() // Skip over all of the GIOP header information. This positions // the offset in the buffer so that the skeleton can correctly read // the marshalled arguments. this.setIndex(Message.GIOPMessageHeaderLength); // BUGFIX(Ram Jeyaraman) For local invocations, the reply mesg fields // needs to be set, by reading the response buffer contents // to correctly set the exception type and other info. this.reply.read(this); } LocalClientResponseImpl(SystemException ex) { this.systemException = ex; } public boolean isSystemException() { if ( reply != null ) return reply.getReplyStatus() == ReplyMessage.SYSTEM_EXCEPTION; else return (systemException != null); } public boolean isUserException() { if ( reply != null ) return reply.getReplyStatus() == ReplyMessage.USER_EXCEPTION; else return false; } public boolean isLocationForward() { if ( reply != null ) { return ( (reply.getReplyStatus() == ReplyMessage.LOCATION_FORWARD) || (reply.getReplyStatus() == ReplyMessage.LOCATION_FORWARD_PERM) ); //return reply.getReplyStatus() == ReplyMessage.LOCATION_FORWARD; } else { return false; } } public boolean isDifferentAddrDispositionRequested() { if (reply != null) { return reply.getReplyStatus() == ReplyMessage.NEEDS_ADDRESSING_MODE; } return false; } public short getAddrDisposition() { if (reply != null) { return reply.getAddrDisposition(); } throw new org.omg.CORBA.INTERNAL( "Null reply in getAddrDisposition", MinorCodes.NULL_REPLY_IN_GET_ADDR_DISPOSITION, CompletionStatus.COMPLETED_MAYBE); } public IOR getForwardedIOR() { if ( reply != null ) return reply.getIOR(); else return null; } public int getRequestId() { if ( reply != null ) return reply.getRequestId(); else throw new org.omg.CORBA.INTERNAL("Error in getRequestId"); } public ServiceContexts getServiceContexts() { if ( reply != null ) return reply.getServiceContexts(); else return null; } public SystemException getSystemException() { if ( reply != null ) return reply.getSystemException(); else return systemException; } public java.lang.String peekUserExceptionId() { mark(Integer.MAX_VALUE); String result = read_string(); reset(); return result; } /** * Check to see if the response is local. */ public boolean isLocal(){ return true; } private ReplyMessage reply; private SystemException systemException;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?