Пример #1
0
        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);
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
 public override void onConnection(IClay withClay, object atConnectionPoint)
 {
     if (_contacts.ContainsKey(atConnectionPoint))
     {
         _contacts[atConnectionPoint].Link(withClay, atConnectionPoint);
     }
 }
Пример #4
0
        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;
        }
Пример #5
0
 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;
     }
 }
Пример #6
0
 public Conduit Connect(IClay c, object atConnectionPoint)
 {
     this.onConnection(c, atConnectionPoint);
     c.onConnection(this, atConnectionPoint);
     return(this);
 }
Пример #7
0
 static void _ThreadVibrate(IClay from, IClay target, object cp, object signal)
 {
     target.onCommunication(from, cp, signal);
 }
Пример #8
0
 public void onConnection(IClay withClay, object atConnectionPoint)
 {
 }
Пример #9
0
 public void onCommunication(IClay fromClay, object atConnectionPoint, object signal)
 {
 }
Пример #10
0
 public static void MakeConnection(IClay c1, IClay c2, object cp1, object cp2 = null)
 {
     c2.onConnection(c1, cp2 ?? cp1);
     c1.onConnection(c2, cp1);
 }
Пример #11
0
 public abstract void onConnection(IClay withClay, object atConnectionPoint);