private static string CreateStatusJson(TableDependencyStatuses tableDependencyStatuses, DateTimeOffset when) { var status = new VersionedTableDependencyStatus(tableDependencyStatuses, when); var message = JsonConvert.SerializeObject(status); return(message); }
private async Task PublishStatus(VersionedTableDependencyStatus versionedTableDependencyStatus) { string jsonStatusVersion = Serialize(versionedTableDependencyStatus); await redisPublisher.SetStringAsync(StatusChannelName, jsonStatusVersion); await redisPublisher.PublishAsync(StatusChannelName, jsonStatusVersion); }
private string CreateStatusJson(TableDependencyStatuses tableDependencyStatuses) { var status = new VersionedTableDependencyStatus(tableDependencyStatuses, DateTimeOffset.Now); var jsonStatus = JsonConvert.SerializeObject(status); return(jsonStatus); }
private void SubscribeToConnectionChanged() { redisSubscriber.WhenIsConnectedChanges .Subscribe(isConnected => { if (isConnected) { SubscribeToStatusChanges(); } else { statusChangesSubscription.Disposable = Disposable.Empty; lastStatus = new VersionedTableDependencyStatus(VersionedTableDependencyStatus.TableDependencyStatuses.None, DateTimeOffset.MinValue); reactiveData.Publish(lastStatus); } }) .DisposeWith(CompositeDisposable); }
private void SubscribeToStatusChanges() { var statusMessagesSource = CreateStatusChangedSource(); var pullStatusMessageSource = Observable.Defer(() => redisSubscriber.GetStringAsync(StatusChannelName).ToObservable(schedulersFactory.ThreadPool)); statusChangesSubscription.Disposable = statusMessagesSource .Merge(pullStatusMessageSource) .Where(c => !string.IsNullOrEmpty(c)) .Select(DeserializeVersionedTableDependencyStatus) .Subscribe(status => { if (lastStatus == null || status.Timestamp == DateTimeOffset.MinValue || lastStatus.Timestamp < status.Timestamp) { lastStatus = status; reactiveData.Publish(lastStatus); } }); }
protected async Task OnSqlTableDependencyStatusChanged(TableDependencyStatus status) { statusVersion = new VersionedTableDependencyStatus(status.Convert(), DateTimeOffset.Now); await PublishStatus(statusVersion); }
public void Publish(VersionedTableDependencyStatus status) { whenStatusChanges.OnNext(status); }