public ReplicationManager(ILogger <ReplicationManager> log, IRedisMultiplexer master, IRedisMultiplexer slave, IObservable <long> timer) : base("Replication") { if (timer == null) { throw new ArgumentNullException(nameof(timer)); } this.log = log ?? throw new ArgumentNullException(nameof(log)); this.slave = slave ?? throw new ArgumentNullException(nameof(slave)); this.master = master ?? throw new ArgumentNullException(nameof(master)); Progress = timer.Select(TimerEvent); }
public async Task <IReplicationManager> StartReplicationFrom(IRedisMultiplexer master, IRedisMultiplexer slave) { if (master == null) { throw new ArgumentNullException(nameof(master)); } if (slave == null) { throw new ArgumentNullException(nameof(slave)); } var timer = Observable.Interval(TimeSpan.FromSeconds(1), scheduler); var manager = new ReplicationManager(loggerFactory.CreateLogger <ReplicationManager>(), master, slave, timer); tracker?.Track(manager.Progress); await manager.Open().ConfigureAwait(false); return(manager); }
public RedisLink(ILoggerFactory loggerFactory, IRedisConfiguration configuration, IRedisMultiplexer multiplexer, IResilience resilience, IEntitySubscriber entitySubscriber, IDataSerializer defaultSerialiser) : base(configuration?.ServiceName) { this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); Multiplexer = multiplexer ?? throw new ArgumentNullException(nameof(multiplexer)); Resilience = resilience ?? throw new ArgumentNullException(nameof(resilience)); EntitySubscriber = entitySubscriber; this.defaultSerialiser = defaultSerialiser ?? throw new ArgumentNullException(nameof(defaultSerialiser)); log = loggerFactory.CreateLogger <RedisLink>(); Generator = new ScriptGenerator(); IndexManager = new MainIndexManager(new IndexManagerFactory(loggerFactory, this)); Client = new RedisClient(loggerFactory?.CreateLogger <RedisClient>(), this, IndexManager); PersistencyRegistration = new PersistencyRegistrationHandler(loggerFactory, this); }