internal void SetCentre(ConnectionCentre centre) { m_connectionCentre = centre; }
public void ConnectTo(Connection connection) { Disconnect(); if (connection.m_connectionCentre != null) { m_connectionCentre = connection.m_connectionCentre; m_connectionCentre.Connected.Add(this); } else { m_connectionCentre = new ConnectionCentre(); m_connectionCentre.Connected.Add(this); connection.m_connectionCentre = m_connectionCentre; m_connectionCentre.Connected.Add(connection); } }
public void Disconnect() { if (m_connectionCentre != null) { m_connectionCentre.Connected.Remove(this); if (m_connectionCentre.Connected.Count == 1) { m_connectionCentre.Connected[0].m_connectionCentre = null; m_connectionCentre.Connected.Clear(); } m_connectionCentre = null; } }
/// <summary> /// Connects two <see cref="ConnectionCentre"/>s together. /// </summary> /// <param name="destination">The ConnectionCentre to merge to.</param> /// <param name="b">The ConnectionCentre that will be made redundant.</param> static void JoinConnectionCentres(ConnectionCentre destination, ConnectionCentre b) { while (b.Connected.Count > 0) { b.Connected[0].ConnectTo(destination.Connected.First()); } }