コード例 #1
0
        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();
            });
        }
コード例 #2
0
        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;
        }