public LinkTopology(LinkConfiguration configuration, ILinkChannel channel, ILinkTopologyHandler handler, bool once) { if (configuration == null) throw new ArgumentNullException(nameof(configuration)); if (channel == null) throw new ArgumentNullException(nameof(channel)); if (handler == null) throw new ArgumentNullException(nameof(handler)); _configuration = configuration; _logger = _configuration.LoggerFactory.CreateLogger($"{GetType().Name}({Id:D})"); if (_logger == null) throw new ArgumentException("Cannot create logger", nameof(configuration.LoggerFactory)); _handler = handler; _isOnce = once; _disposedCancellationSource = new CancellationTokenSource(); _disposedCancellation = _disposedCancellationSource.Token; Channel = channel; Channel.Disposed += ChannelOnDisposed; Channel.Ready += ChannelOnReady; _logger.Debug($"Created(channelId: {Channel.Id}, once: {once})"); #pragma warning disable 4014 ScheduleConfiguration(false); #pragma warning restore 4014 }
public ILinkTopologyBuilder Handler(ILinkTopologyHandler handler) { if (handler == null) { throw new ArgumentNullException(nameof(handler)); } return(new LinkTopologyBuilder(this, topologyHandler: handler)); }
private LinkTopologyBuilder( LinkTopologyBuilder prev, TimeSpan?recoveryInterval = null, LinkStateHandler <LinkTopologyState> stateHandler = null, LinkStateHandler <LinkChannelState> channelStateHandler = null, ILinkTopologyHandler topologyHandler = null ) : this( prev._link, recoveryInterval ?? prev._recoveryInterval, stateHandler ?? prev._stateHandler, channelStateHandler ?? prev._channelStateHandler, topologyHandler ?? prev._topologyHandler ) { }
public LinkTopologyBuilder( Link link, TimeSpan recoveryInterval, LinkStateHandler <LinkTopologyState> stateHandler = null, LinkStateHandler <LinkChannelState> channelStateHandler = null, ILinkTopologyHandler topologyHandler = null ) { _link = link ?? throw new ArgumentNullException(nameof(link)); _recoveryInterval = recoveryInterval; _stateHandler = stateHandler ?? ((old, @new) => { }); _channelStateHandler = channelStateHandler ?? ((old, @new) => { }); _topologyHandler = topologyHandler; }
public LinkTopologyConfiguration( TimeSpan recoveryInterval, LinkStateHandler <LinkTopologyState> stateHandler, ILinkTopologyHandler topologyHandler ) { if (recoveryInterval <= TimeSpan.Zero) { throw new ArgumentOutOfRangeException(nameof(recoveryInterval), "Must be greater than TimeSpan.Zero"); } RecoveryInterval = recoveryInterval; StateHandler = stateHandler ?? throw new ArgumentNullException(nameof(stateHandler)); TopologyHandler = topologyHandler ?? throw new ArgumentException(nameof(topologyHandler)); }
public IDisposable CreatePersistentTopologyConfigurator(ILinkTopologyHandler handler) { if (handler == null) throw new ArgumentNullException(nameof(handler)); return new LinkTopology(_configuration, CreateChannel(), handler, false); }