1 7 8 package com.sun.corba.se.impl.legacy.connection; 9 10 import org.omg.CORBA.CompletionStatus ; 11 import org.omg.CORBA.SystemException ; 12 13 import com.sun.corba.se.pept.transport.ContactInfo; 14 15 import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException; 16 import com.sun.corba.se.spi.orb.ORB; 17 import com.sun.corba.se.spi.transport.CorbaContactInfo; 18 import com.sun.corba.se.spi.transport.CorbaContactInfoList; 19 import com.sun.corba.se.spi.transport.SocketInfo; 20 21 import com.sun.corba.se.impl.transport.CorbaContactInfoListIteratorImpl; 22 import com.sun.corba.se.impl.transport.SharedCDRContactInfoImpl; 23 24 public class SocketFactoryContactInfoListIteratorImpl 25 extends CorbaContactInfoListIteratorImpl 26 { 27 private SocketInfo socketInfoCookie; 28 29 public SocketFactoryContactInfoListIteratorImpl( 30 ORB orb, 31 CorbaContactInfoList corbaContactInfoList) 32 { 33 super(orb, corbaContactInfoList, null, null); 34 } 35 36 41 public boolean hasNext() 42 { 43 return true; 44 } 45 46 public Object next() 47 { 48 if (contactInfoList.getEffectiveTargetIOR().getProfile().isLocal()){ 49 return new SharedCDRContactInfoImpl( 50 orb, contactInfoList, 51 contactInfoList.getEffectiveTargetIOR(), 52 orb.getORBData().getGIOPAddressDisposition()); 53 } else { 54 return new SocketFactoryContactInfoImpl( 57 orb, contactInfoList, 58 contactInfoList.getEffectiveTargetIOR(), 59 orb.getORBData().getGIOPAddressDisposition(), 60 socketInfoCookie); 61 } 62 } 63 64 69 public boolean reportException(ContactInfo contactInfo, 70 RuntimeException ex) 71 { 72 this.failureContactInfo = (CorbaContactInfo)contactInfo; 73 this.failureException = ex; 74 if (ex instanceof org.omg.CORBA.COMM_FAILURE ) { 75 76 if (ex.getCause() instanceof GetEndPointInfoAgainException) { 77 socketInfoCookie = 78 ((GetEndPointInfoAgainException) ex.getCause()) 79 .getEndPointInfo(); 80 return true; 81 } 82 83 SystemException se = (SystemException ) ex; 84 if (se.completed == CompletionStatus.COMPLETED_NO) { 85 if (contactInfoList.getEffectiveTargetIOR() != 86 contactInfoList.getTargetIOR()) 87 { 88 contactInfoList.setEffectiveTargetIOR( 90 contactInfoList.getTargetIOR()); 91 return true; 92 } 93 } 94 } 95 return false; 96 } 97 } 98 99 | Popular Tags |