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;
}