01: /* Collective.java */
02: package org.enhydra.shark.corba;
03:
04: import java.util.HashSet;
05: import java.util.Iterator;
06:
07: /**
08: * Collective
09: *
10: * @author V.Puskas
11: * @version 0.1
12: */
13: public interface Collective {
14: public void __recruit(org.omg.CORBA.Object obj);
15:
16: public void __leave(org.omg.CORBA.Object _obj);
17:
18: public void __disband(org.omg.CORBA.ORB _orb);
19:
20: public final class CollectiveCORBA implements Collective {
21:
22: private transient HashSet myObjects = new HashSet();
23:
24: public synchronized void __recruit(org.omg.CORBA.Object obj) {
25: myObjects.add(obj);
26: }
27:
28: public synchronized void __disband(org.omg.CORBA.ORB _orb) {
29: for (Iterator it = myObjects.iterator(); it.hasNext();) {
30: _orb.disconnect((org.omg.CORBA.Object) it.next());
31: it.remove();
32: }
33: myObjects = null;
34: }
35:
36: public synchronized void __leave(org.omg.CORBA.Object obj) {
37: Iterator i = myObjects.iterator();
38: Object toRemove = obj;
39: while (i.hasNext()) {
40: org.omg.CORBA.Object o = (org.omg.CORBA.Object) i
41: .next();
42: if (obj._is_equivalent(o)) {
43: toRemove = o;
44: break;
45: }
46: }
47: boolean r = myObjects.remove(toRemove);
48: if (r == false)
49: System.out
50: .println("Warning: object is not removed from collection!");
51: }
52:
53: }
54:
55: }
|