/// <inheritdoc /> public Task <ReplicaInfo> GetReplicaInfoAsync( PartitionId partitionId, ReplicaId replicaId, long?serverTimeout = 60, CancellationToken cancellationToken = default(CancellationToken)) { partitionId.ThrowIfNull(nameof(partitionId)); replicaId.ThrowIfNull(nameof(replicaId)); serverTimeout?.ThrowIfOutOfInclusiveRange("serverTimeout", 1, 4294967295); var requestId = Guid.NewGuid().ToString(); var url = "Partitions/{partitionId}/$/GetReplicas/{replicaId}"; url = url.Replace("{partitionId}", partitionId.ToString()); url = url.Replace("{replicaId}", replicaId.ToString()); var queryParams = new List <string>(); // Append to queryParams if not null. serverTimeout?.AddToQueryParameters(queryParams, $"timeout={serverTimeout}"); queryParams.Add("api-version=6.0"); url += "?" + string.Join("&", queryParams); HttpRequestMessage RequestFunc() { var request = new HttpRequestMessage() { Method = HttpMethod.Get, }; return(request); } return(this.httpClient.SendAsyncGetResponse(RequestFunc, url, ReplicaInfoConverter.Deserialize, requestId, cancellationToken)); }
/// <inheritdoc /> public Task ReportReplicaHealthAsync( PartitionId partitionId, ReplicaId replicaId, ReplicaHealthReportServiceKind?replicaHealthReportServiceKind, HealthInformation healthInformation, bool?immediate = false, long?serverTimeout = 60, CancellationToken cancellationToken = default(CancellationToken)) { partitionId.ThrowIfNull(nameof(partitionId)); replicaId.ThrowIfNull(nameof(replicaId)); replicaHealthReportServiceKind.ThrowIfNull(nameof(replicaHealthReportServiceKind)); healthInformation.ThrowIfNull(nameof(healthInformation)); serverTimeout?.ThrowIfOutOfInclusiveRange("serverTimeout", 1, 4294967295); var requestId = Guid.NewGuid().ToString(); var url = "Partitions/{partitionId}/$/GetReplicas/{replicaId}/$/ReportHealth"; url = url.Replace("{partitionId}", partitionId.ToString()); url = url.Replace("{replicaId}", replicaId.ToString()); var queryParams = new List <string>(); // Append to queryParams if not null. replicaHealthReportServiceKind?.AddToQueryParameters(queryParams, $"ReplicaHealthReportServiceKind={replicaHealthReportServiceKind.ToString()}"); immediate?.AddToQueryParameters(queryParams, $"Immediate={immediate}"); serverTimeout?.AddToQueryParameters(queryParams, $"timeout={serverTimeout}"); queryParams.Add("api-version=6.0"); url += "?" + string.Join("&", queryParams); string content; using (var sw = new StringWriter()) { HealthInformationConverter.Serialize(new JsonTextWriter(sw), healthInformation); content = sw.ToString(); } HttpRequestMessage RequestFunc() { var request = new HttpRequestMessage() { Method = HttpMethod.Post, Content = new StringContent(content, Encoding.UTF8), }; request.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); return(request); } return(this.httpClient.SendAsync(RequestFunc, url, requestId, cancellationToken)); }
/// <inheritdoc /> public Task <ReplicaHealth> GetReplicaHealthUsingPolicyAsync( PartitionId partitionId, ReplicaId replicaId, int?eventsHealthStateFilter = 0, ApplicationHealthPolicy applicationHealthPolicy = default(ApplicationHealthPolicy), long?serverTimeout = 60, CancellationToken cancellationToken = default(CancellationToken)) { partitionId.ThrowIfNull(nameof(partitionId)); replicaId.ThrowIfNull(nameof(replicaId)); serverTimeout?.ThrowIfOutOfInclusiveRange("serverTimeout", 1, 4294967295); var requestId = Guid.NewGuid().ToString(); var url = "Partitions/{partitionId}/$/GetReplicas/{replicaId}/$/GetHealth"; url = url.Replace("{partitionId}", partitionId.ToString()); url = url.Replace("{replicaId}", replicaId.ToString()); var queryParams = new List <string>(); // Append to queryParams if not null. eventsHealthStateFilter?.AddToQueryParameters(queryParams, $"EventsHealthStateFilter={eventsHealthStateFilter}"); serverTimeout?.AddToQueryParameters(queryParams, $"timeout={serverTimeout}"); queryParams.Add("api-version=6.0"); url += "?" + string.Join("&", queryParams); string content; using (var sw = new StringWriter()) { if (applicationHealthPolicy != default(ApplicationHealthPolicy)) { ApplicationHealthPolicyConverter.Serialize(new JsonTextWriter(sw), applicationHealthPolicy); } content = sw.ToString(); } HttpRequestMessage RequestFunc() { var request = new HttpRequestMessage() { Method = HttpMethod.Post, Content = new StringContent(content, Encoding.UTF8), }; request.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); return(request); } return(this.httpClient.SendAsyncGetResponse(RequestFunc, url, ReplicaHealthConverter.Deserialize, requestId, cancellationToken)); }
/// <inheritdoc /> public Task <IEnumerable <ReplicaEvent> > GetPartitionReplicaEventListAsync( PartitionId partitionId, ReplicaId replicaId, string startTimeUtc, string endTimeUtc, long?serverTimeout = 60, string eventsTypesFilter = default(string), bool?excludeAnalysisEvents = default(bool?), bool?skipCorrelationLookup = default(bool?), CancellationToken cancellationToken = default(CancellationToken)) { partitionId.ThrowIfNull(nameof(partitionId)); replicaId.ThrowIfNull(nameof(replicaId)); startTimeUtc.ThrowIfNull(nameof(startTimeUtc)); endTimeUtc.ThrowIfNull(nameof(endTimeUtc)); serverTimeout?.ThrowIfOutOfInclusiveRange("serverTimeout", 1, 4294967295); var requestId = Guid.NewGuid().ToString(); var url = "EventsStore/Partitions/{partitionId}/$/Replicas/{replicaId}/$/Events"; url = url.Replace("{partitionId}", partitionId.ToString()); url = url.Replace("{replicaId}", replicaId.ToString()); var queryParams = new List <string>(); // Append to queryParams if not null. serverTimeout?.AddToQueryParameters(queryParams, $"timeout={serverTimeout}"); startTimeUtc?.AddToQueryParameters(queryParams, $"StartTimeUtc={startTimeUtc}"); endTimeUtc?.AddToQueryParameters(queryParams, $"EndTimeUtc={endTimeUtc}"); eventsTypesFilter?.AddToQueryParameters(queryParams, $"EventsTypesFilter={eventsTypesFilter}"); excludeAnalysisEvents?.AddToQueryParameters(queryParams, $"ExcludeAnalysisEvents={excludeAnalysisEvents}"); skipCorrelationLookup?.AddToQueryParameters(queryParams, $"SkipCorrelationLookup={skipCorrelationLookup}"); queryParams.Add("api-version=6.4"); url += "?" + string.Join("&", queryParams); HttpRequestMessage RequestFunc() { var request = new HttpRequestMessage() { Method = HttpMethod.Get, }; return(request); } return(this.httpClient.SendAsyncGetResponseAsList(RequestFunc, url, ReplicaEventConverter.Deserialize, requestId, cancellationToken)); }
/// <inheritdoc /> public Task RemoveReplicaAsync( NodeName nodeName, PartitionId partitionId, ReplicaId replicaId, bool?forceRemove = default(bool?), long?serverTimeout = 60, CancellationToken cancellationToken = default(CancellationToken)) { nodeName.ThrowIfNull(nameof(nodeName)); partitionId.ThrowIfNull(nameof(partitionId)); replicaId.ThrowIfNull(nameof(replicaId)); serverTimeout?.ThrowIfOutOfInclusiveRange("serverTimeout", 1, 4294967295); var requestId = Guid.NewGuid().ToString(); var url = "Nodes/{nodeName}/$/GetPartitions/{partitionId}/$/GetReplicas/{replicaId}/$/Delete"; url = url.Replace("{nodeName}", Uri.EscapeDataString(nodeName.ToString())); url = url.Replace("{partitionId}", partitionId.ToString()); url = url.Replace("{replicaId}", replicaId.ToString()); var queryParams = new List <string>(); // Append to queryParams if not null. forceRemove?.AddToQueryParameters(queryParams, $"ForceRemove={forceRemove}"); serverTimeout?.AddToQueryParameters(queryParams, $"timeout={serverTimeout}"); queryParams.Add("api-version=6.0"); url += "?" + string.Join("&", queryParams); HttpRequestMessage RequestFunc() { var request = new HttpRequestMessage() { Method = HttpMethod.Post, }; return(request); } return(this.httpClient.SendAsync(RequestFunc, url, requestId, cancellationToken)); }
/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="value">The object to serialize to JSON.</param> public static void Serialize(JsonWriter writer, ReplicaId value) { writer.WriteValue(value.ToString()); }