private void SendRequests(ReplicationInfo replicationInfo, string serverStatsDocumentUrl, string replicationSourceDocumentsUrl) { this.AsyncManager.SendWebRequest(serverStatsDocumentUrl, result => { var stats = RavenHelper.Deserialize<DatabaseStatistics>(result, this.Store.Conventions); replicationInfo.LastDocumentEtag = stats.LastDocEtag; }); this.AsyncManager.SendWebRequest(replicationSourceDocumentsUrl, result => { var sources = RavenHelper.DeserializeMany<RavenReplicationSource>(result, this.Store.Conventions); replicationInfo.Sources = sources.Select(source => new ReplicationSourceInfo { LastDocumentEtag = source.LastDocumentEtag, LastModifiedDateUtc = source.Metadata.LastModified, ServerUrl = source.Metadata.Id.Replace("Raven/Replication/Sources/", string.Empty) }) .ToArray(); }); }
private List<ReplicationInfo> StartGatheringRavenReplicationInformation(RavenConfig ravenConfig) { var ravenReplicationInformation = new List<ReplicationInfo>(); foreach (var store in ravenConfig.Stores) { foreach (var server in store.Servers) { var replicationSourceDocumentsUrl = RavenHelper.GetStoreUrl(server.Name, store.Name, "/docs?startsWith=Raven/Replication/Sources/"); var serverStatsDocumentUrl = RavenHelper.GetStoreUrl(server.Name, store.Name, "/stats"); var serverUrl = RavenHelper.GetStoreUrl(server.Name); var replicationInfo = new ReplicationInfo(server.Name, store.Name, serverUrl); ravenReplicationInformation.Add(replicationInfo); this.SendRequests(replicationInfo, serverStatsDocumentUrl, replicationSourceDocumentsUrl); } } return ravenReplicationInformation; }