checkpoint
[sbp.git] / src / edu / berkeley / sbp / util / TopologicalBag.java
index cdbe976..38e3925 100644 (file)
@@ -82,7 +82,7 @@ public class TopologicalBag<K,V> implements MapBag<Topology<K>,V> {
         return true;
     }
 
-    public boolean contains(K k) { return get(k).iterator().hasNext(); }
+    public boolean contains(K k) { return has(k); }
 
     public boolean contains(K k, V v) {
         for(Topology<K> t : h.keySet())
@@ -100,6 +100,14 @@ public class TopologicalBag<K,V> implements MapBag<Topology<K>,V> {
 
     private HashMap<K,Iterable<V>> cache = new HashMap<K,Iterable<V>>();
     public Iterable<V> getAll(Topology<K> k) { return h.get(k); }
+
+    public <B,C> void invoke(K k, Invokable<V,B,C> ivbc, B b, C c) {
+        for(Topology<K> t : h.keySet())
+            if (t.contains(k))
+                for(V v : h.get(t))
+                    ivbc.invoke(v, b, c);
+    }
+
     public Iterable<V> get(K k) {
         Iterable<V> c = cache.get(k);
         if (c != null) return c;