CK.Monitoring.GrandOutputClient.EnsureChannel C# (CSharp) Method

EnsureChannel() private method

private EnsureChannel ( bool callOnClientMinimalFilterChanged = true ) : IChannel
callOnClientMinimalFilterChanged bool
return IChannel
        IChannel EnsureChannel( bool callOnClientMinimalFilterChanged = true )
        {
            if( _version != _curVersion )
            {
                _channel = null;
                do
                {
                    _curVersion = _version;
                    if( _channel != null )
                    {
                        _channel.CancelPreHandleLock();
                    }
                    // The Topic can be changed only in the 
                    // activity (and we are here inside the activity),
                    // we can safely call the property when needed.
                    // When ObtainChannel returns null, it means that the GrandOutput has been disposed.
                    _channel = _central.ObtainChannel( _monitorSource.Topic );
                    if( _channel == null )
                    {
                        CheckFilter( callOnClientMinimalFilterChanged, LogFilter.Undefined );
                        return null;
                    }
                }
                while( _version != _curVersion );
                CheckFilter( callOnClientMinimalFilterChanged, _channel.MinimalFilter );
            }
            else _channel.PreHandleLock();
            return _channel;
        }