public override void onCommunication(IClay fromClay, object atConnectionPoint, object signal) { if (_contacts.ContainsKey(fromClay) && _contacts[fromClay].IndexOf(atConnectionPoint) >= 0) { foreach (IClay c in _contacts.Keys) { List <object> cps = _contacts[c]; foreach (object cp in cps) { if (!cp.Equals(atConnectionPoint) || c != fromClay) { if (ParallelTrx) { Task.Run(() => _ThreadVibrate(this, c, cp, signal)); } //new Thread(() => _ThreadVibrate(this, c, cp, signal)).Start(); else { c.onCommunication(this, cp, signal); } } } } } }
public override void onConnection(IClay withClay, object atConnectionPoint) { if (this == withClay) //No dont want to connect to me again { return; } //Get all current connection with this clays List <object> cps = _contacts.ContainsKey(withClay) ? _contacts[withClay] : new List <object>(); if (cps.Count > 0 && withClay is Conduit) // Conduit only allow 1 connection { return; } bool shouldInclude = true; foreach (object cp in cps) { if (cp.Equals(atConnectionPoint)) { shouldInclude = false; break; } } if (shouldInclude) { cps.Add(atConnectionPoint); _contacts[withClay] = cps; } }
public override void onConnection(IClay withClay, object atConnectionPoint) { if (_contacts.ContainsKey(atConnectionPoint)) { _contacts[atConnectionPoint].Link(withClay, atConnectionPoint); } }
public override void onConnection(IClay withClay, object atConnectionPoint) { List <IClay> others = _contacts.ContainsKey(atConnectionPoint) ? _contacts[atConnectionPoint] : new List <IClay>(); if (others.IndexOf(withClay) < 0) { others.Add(withClay); } _contacts[atConnectionPoint] = others; }
public override void onCommunication(IClay fromClay, object atConnectionPoint, object signal) { //Check to see if it is in connectiton list if (_contacts.ContainsKey(atConnectionPoint) && _contacts[atConnectionPoint].IndexOf(fromClay) >= 0 && ConnectPoints.IndexOf(atConnectionPoint) >= 0 ) { this[atConnectionPoint] = signal; } }
public Conduit Connect(IClay c, object atConnectionPoint) { this.onConnection(c, atConnectionPoint); c.onConnection(this, atConnectionPoint); return(this); }
static void _ThreadVibrate(IClay from, IClay target, object cp, object signal) { target.onCommunication(from, cp, signal); }
public void onConnection(IClay withClay, object atConnectionPoint) { }
public void onCommunication(IClay fromClay, object atConnectionPoint, object signal) { }
public static void MakeConnection(IClay c1, IClay c2, object cp1, object cp2 = null) { c2.onConnection(c1, cp2 ?? cp1); c1.onConnection(c2, cp1); }
public abstract void onConnection(IClay withClay, object atConnectionPoint);