iiopprofile.java
来自「java jdk 1.4的源码」· Java 代码 · 共 204 行
JAVA
204 行
/* * @(#)IIOPProfile.java 1.28 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *///Source file: J:/ws/serveractivation/src/share/classes/com.sun.corba.se.internal.ior/IIOPProfile.javapackage com.sun.corba.se.internal.ior;import java.util.List ;import java.util.Iterator ;import com.sun.corba.se.internal.ior.IdEncapsulationBase ;import com.sun.corba.se.internal.ior.TaggedProfile ;import com.sun.corba.se.internal.ior.ObjectId ;import com.sun.corba.se.internal.ior.IIOPProfileTemplate ;import com.sun.corba.se.internal.ior.IIOPAddressImpl ;import com.sun.corba.se.internal.ior.ObjectKey ;import com.sun.corba.se.internal.ior.ObjectKeyFactory ;import com.sun.corba.se.internal.ior.AlternateIIOPAddressComponent ;import com.sun.corba.se.internal.ior.TaggedComponentFactoryFinder ;import org.omg.CORBA.BAD_PARAM;import org.omg.IOP.TAG_ALTERNATE_IIOP_ADDRESS ;import org.omg.IOP.TAG_INTERNET_IOP;import org.omg.CORBA.ORB ;import org.omg.CORBA.CompletionStatus;import org.omg.CORBA_2_3.portable.OutputStream ;import org.omg.CORBA_2_3.portable.InputStream ;import com.sun.corba.se.internal.iiop.CDRInputStream ;import com.sun.corba.se.internal.corba.EncapsInputStream ;import com.sun.corba.se.internal.corba.EncapsOutputStream ;import com.sun.corba.se.internal.core.GIOPVersion ;import com.sun.corba.se.internal.orbutil.MinorCodes;/** * @author */public class IIOPProfile extends IdEncapsulationBase implements TaggedProfile{ private ObjectId id; private final IIOPProfileTemplate template; public boolean equals( Object obj ) { if (obj == null) return false ; if (!(obj instanceof IIOPProfile)) return false ; IIOPProfile other = (IIOPProfile)obj ; return id.equals( other.id ) && template.equals( other.template ) ; } public ObjectId getObjectId() { return id ; } public IIOPProfileTemplate getTemplate() { return template ; } public IIOPProfile( ObjectId id, IIOPProfileTemplate template ) { this.id = id ; this.template = template ; } public IIOPProfile( InputStream is ) { InputStream istr = IdEncapsulationBase.getEncapsulationStream( is ) ; // First, read all of the IIOP IOR data byte major = istr.read_octet() ; byte minor = istr.read_octet() ; IIOPAddress primary = new IIOPAddressImpl( istr ) ; byte[] key = IdEncapsulationBase.readOctets( istr ) ; ORB orb = ((CDRInputStream)is).orb() ; ObjectKey okey = ObjectKeyFactory.get().create( orb, key ) ; id = okey.getId() ; template = new IIOPProfileTemplate( major, minor, primary, okey.getTemplate() ) ; // Handle any tagged components (if applicable) if (minor > 0) template.readIdEncapsulationSequence( TaggedComponentFactoryFinder.getFinder(), istr ) ; } public IIOPProfile(org.omg.CORBA.ORB orb, org.omg.IOP.TaggedProfile profile) { if (profile == null || profile.tag != TAG_INTERNET_IOP.value || profile.profile_data == null) { throw new BAD_PARAM(MinorCodes.INVALID_TAGGED_PROFILE, CompletionStatus.COMPLETED_NO); } EncapsInputStream istr = new EncapsInputStream(orb, profile.profile_data, profile.profile_data.length); istr.consumeEndian(); // First, read all of the IIOP IOR data byte major = istr.read_octet() ; byte minor = istr.read_octet() ; IIOPAddress primary = new IIOPAddressImpl(istr); byte[] key = IdEncapsulationBase.readOctets(istr); ObjectKey okey = ObjectKeyFactory.get().create(orb, key); id = okey.getId(); template = new IIOPProfileTemplate(major, minor, primary, okey.getTemplate()); // Handle any tagged components (if applicable) if (minor > 0) { template.readIdEncapsulationSequence( TaggedComponentFactoryFinder.getFinder(), istr); } } /** * @param arg0 * @return void * @exception * @author * @roseuid 39135D2D02EC */ public void writeContents(OutputStream os) { template.write( id, os ) ; } /** * @return int * @exception * @author * @roseuid 39135D2E00C7 */ public int getId() { return template.getId() ; } public boolean isEquivalent( IIOPProfile prof ) { return id.equals( prof.id ) && template.isEquivalent( prof.template ) ; } public ObjectKey getObjectKey() { ObjectKeyTemplate oktemp = template.getObjectKeyTemplate() ; ObjectKey result = new ObjectKey( oktemp, id ) ; return result ; } public org.omg.IOP.TaggedProfile getIOPProfile( ORB orb ) { EncapsOutputStream os = new EncapsOutputStream( orb ) ; os.write_long( getId() ) ; write( os ) ; InputStream is = (InputStream)(os.create_input_stream()) ; return org.omg.IOP.TaggedProfileHelper.read( is ) ; } /** * @return org.omg.IOP.TaggedComponent[] * @exception * @author * @roseuid 3980B6A4037F */ public org.omg.IOP.TaggedComponent[] getIOPComponents( ORB orb, int id ) { int count = 0 ; Iterator iter = template.iteratorById( id ) ; while (iter.hasNext()) { iter.next() ; count++ ; } org.omg.IOP.TaggedComponent[] result = new org.omg.IOP.TaggedComponent[count] ; int index = 0 ; iter = template.iteratorById( id ) ; while (iter.hasNext()) { TaggedComponent comp = (TaggedComponent)(iter.next()) ; result[index++] = comp.getIOPComponent( orb ) ; } return result ; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?