private DocumentStoreFactory Initialize()
{
if (this.isInitialized)
{
return this;
}
Action<DocumentStore> initializer = store =>
{
store.Conventions.FailoverBehavior =
FailoverBehavior.AllowReadsFromSecondariesAndWritesToSecondaries;
store.Initialize();
store.Changes().ConnectionStatusCahnged += ReadOnlyOpsStore_ConnectionStatusCahnged;
store.Changes()
.ForDocument(RavenConfig.LiveDocumentId)
.Subscribe(new DocumentChangeObserver(_ => this.ApplyRavenConfig()));
};
readOnlyOpsStore = this
.GetOrCreate(this.operationsStoreUrl.GetDatabaseName(), AccessMode.ReadOnly, initializer)
.Initialize();
ApplyRavenConfig();
updateTimer = new Timer(
_ => ApplyRavenConfig(fromTimer: true),
null,
this.updateInterval,
this.updateInterval);
this.isInitialized = true;
return this;
}