public virtual void AddAssociationListener(AssociationListenerI l) { lock(listeners) { listeners.Add(l); } }
public static AssociationListenerI add(AssociationListenerI a, AssociationListenerI b) { if (a == null) return b; if (b == null) return a; return new Multicaster(a, b); }
public static AssociationListenerI Remove(AssociationListenerI l, AssociationListenerI oldl) { if (l == oldl || l == null) { return null; } if (l is Multicaster) { return ((Multicaster) l).Remove(oldl); } return null; }
public void RemoveAssociationListener(AssociationListenerI l) { fsm.RemoveAssociationListener(l); }
public void AddAssociationListener(AssociationListenerI l) { fsm.AddAssociationListener(l); }
public void RemoveAssociationListener(AssociationListenerI l) { lock(this) { assocListener = Multicaster.Remove(assocListener, l); } }
public void AddAssociationListener(AssociationListenerI l) { lock(this) { assocListener = Multicaster.add(assocListener, l); } }
public virtual void RemoveAssociationListener(AssociationListenerI l) { lock(listeners) { listeners.Remove(l); } }
public Multicaster(AssociationListenerI a, AssociationListenerI b) { this.a = a; this.b = b; }
private AssociationListenerI Remove(AssociationListenerI oldl) { if (oldl == a) return b; if (oldl == b) return a; AssociationListenerI a2 = Remove(a, oldl); AssociationListenerI b2 = Remove(b, oldl); if (a2 == a && b2 == b) { return this; } return add(a2, b2); }