KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > corba > se > impl > legacy > connection > SocketFactoryContactInfoListIteratorImpl


1 /*
2  * @(#)SocketFactoryContactInfoListIteratorImpl.java 1.11 04/06/21
3  *
4  * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
5  * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
6  */

7
8 package com.sun.corba.se.impl.legacy.connection;
9
10 import org.omg.CORBA.CompletionStatus JavaDoc;
11 import org.omg.CORBA.SystemException JavaDoc;
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     ////////////////////////////////////////////////////
37
//
38
// java.util.Iterator
39
//
40

41     public boolean hasNext()
42     {
43     return true;
44     }
45
46     public Object JavaDoc 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         // REVISIT:
55
// on comm_failure maybe need to give IOR instead of located.
56
return new SocketFactoryContactInfoImpl(
57             orb, contactInfoList,
58         contactInfoList.getEffectiveTargetIOR(),
59         orb.getORBData().getGIOPAddressDisposition(),
60         socketInfoCookie);
61     }
62     }
63
64     ////////////////////////////////////////////////////
65
//
66
// pept.ContactInfoListIterator
67
//
68

69     public boolean reportException(ContactInfo contactInfo,
70                    RuntimeException JavaDoc ex)
71     {
72     this.failureContactInfo = (CorbaContactInfo)contactInfo;
73     this.failureException = ex;
74     if (ex instanceof org.omg.CORBA.COMM_FAILURE JavaDoc) {
75
76         if (ex.getCause() instanceof GetEndPointInfoAgainException) {
77         socketInfoCookie =
78             ((GetEndPointInfoAgainException) ex.getCause())
79             .getEndPointInfo();
80         return true;
81         }
82
83         SystemException JavaDoc se = (SystemException JavaDoc) ex;
84         if (se.completed == CompletionStatus.COMPLETED_NO) {
85         if (contactInfoList.getEffectiveTargetIOR() !=
86             contactInfoList.getTargetIOR())
87                 {
88             // retry from root ior
89
contactInfoList.setEffectiveTargetIOR(
90                         contactInfoList.getTargetIOR());
91             return true;
92         }
93         }
94     }
95     return false;
96     }
97 }
98
99 // End of file.
100
Popular Tags