CK.Core.ActivityMonitorBridge.IActivityMonitorBoundClient C# (CSharp) Method

IActivityMonitorBoundClient() private method

forceBuggyRemove is not used here since this client is not lockable.
private IActivityMonitorBoundClient ( Impl source, bool forceBuggyRemove ) : void
source Impl
forceBuggyRemove bool
return void
        void IActivityMonitorBoundClient.SetMonitor( Impl.IActivityMonitorImpl source, bool forceBuggyRemove )
        {
            if( source != null && _source != null ) throw ActivityMonitorClient.CreateMultipleRegisterOnBoundClientException( this );
            if( _source != null )
            {
                _bridgeTarget.RemoveCallback( this );
                // Unregistering.
                for( int i = 0; i < _openedGroups.Count; ++i )
                {
                    if( _openedGroups[i] )
                    {
                        _targetMonitor.CloseGroup( new ActivityLogGroupConclusion( ActivityMonitorResources.ClosedByBridgeRemoved, TagBridgePrematureClose ) );
                    }
                }
                _openedGroups.Clear();
            }
            else
            {
                _bridgeTarget.AddCallback( this );
                _targetActualFilter = _bridgeTarget.TargetFinalFilter;
                if( _pullTargetTopicAndAutoTagsFromTarget )
                {
                    source.InitializeTopicAndAutoTags( this._targetMonitor.Topic, _targetMonitor.AutoTags );
                }

            }
            _source = source;
            Interlocked.MemoryBarrier();
        }