protected override void checkTransmissorType(ITransmissor transmissor)
 {
     if (!(transmissor is IClassicalTransmissor))
     { throw new ExceptionClassicalChannel(); }
 }
 private void DoOnTransmit(ITransmissor receiver, IInformationState state)
 {
     if (OnTransmit != null)
     { OnTransmit(this, state); };
 }
        protected void PropagateOnTransmit(ITransmissor transmissor, IInformationState state)
        {
            if (OnTransmit != null)
            { OnTransmit(this, state); };

            if (state is IQuantumState)
            {
                if (OnQuantumTransmit != null)
                { OnQuantumTransmit(this, (IQuantumState)state); };
            }
        }
        protected void PropagateOnTransmit(ITransmissor transmissor, IInformationState state)
        {
            if (OnTransmit != null)
            { OnTransmit(this, state); };

            if (state is IClassicalState)
            {
                if (OnClassicalTransmit != null)
                { OnClassicalTransmit(this, (IClassicalState)state); };
            }
        }
 protected void internalAddTransmissor(ITransmissor transmissor)
 {
     _transmissors.Add(transmissor);
 }
 protected void internalRemoveTransmissor(ITransmissor transmissor)
 {
     _transmissors.Remove(transmissor);
 }
 protected virtual void checkTransmissorType(ITransmissor transmissor)
 {
 }
 // TRANSMIT
 public bool Transmit(ITransmissor transmissor, IInformationState state)
 {
     if (_transmissors.Contains(transmissor))
     {
         performDelay(state);
         performNoise(state);
         return Difussion(state);
     }
     else
     {
         throw new ExceptionChannel();
     }
 }
 public void RemoveTransmissor(ITransmissor transmissor)
 {
     checkTransmissorType(transmissor);
     internalRemoveTransmissor(transmissor);
 }
 public void AddTransmissor(ITransmissor transmissor)
 {
     checkTransmissorType(transmissor);
     internalAddTransmissor(transmissor);
 }
 protected override void checkTransmissorType(ITransmissor transmissor)
 {
     if (!(transmissor is IQuantumTransmissor))
     { throw new ExceptionQuantumChannel(); }
 }