本文整理汇总了C#中IRequestConfiguration类的典型用法代码示例。如果您正苦于以下问题:C# IRequestConfiguration类的具体用法?C# IRequestConfiguration怎么用?C# IRequestConfiguration使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IRequestConfiguration类属于命名空间,在下文中一共展示了IRequestConfiguration类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestIndicesUtilCustomization
public TestIndicesUtilCustomization(
IRequestConfiguration requestConfig,
ISettingsProvider settings = null)
{
this.settings = settings;
this.requestConfig = requestConfig;
}
示例2: RequestData
public RequestData(HttpMethod method, string path, PostData<object> data, IConnectionConfigurationValues global, IRequestConfiguration local, IMemoryStreamFactory memoryStreamFactory)
{
this.ConnectionSettings = global;
this.MemoryStreamFactory = memoryStreamFactory;
this.Method = method;
this.PostData = data;
this.Path = this.CreatePathWithQueryStrings(path, this.ConnectionSettings, null);
this.Pipelined = global.HttpPipeliningEnabled || (local?.EnableHttpPipelining).GetValueOrDefault(false);
this.HttpCompression = global.EnableHttpCompression;
this.ContentType = local?.ContentType ?? MimeType;
this.Headers = global.Headers;
this.RequestTimeout = local?.RequestTimeout ?? global.RequestTimeout;
this.PingTimeout =
local?.PingTimeout
?? global?.PingTimeout
?? (global.ConnectionPool.UsingSsl ? ConnectionConfiguration.DefaultPingTimeoutOnSSL : ConnectionConfiguration.DefaultPingTimeout);
this.KeepAliveInterval = (int)(global.KeepAliveInterval?.TotalMilliseconds ?? 2000);
this.KeepAliveTime = (int)(global.KeepAliveTime?.TotalMilliseconds ?? 2000);
this.ProxyAddress = global.ProxyAddress;
this.ProxyUsername = global.ProxyUsername;
this.ProxyPassword = global.ProxyPassword;
this.DisableAutomaticProxyDetection = global.DisableAutomaticProxyDetection;
this.BasicAuthorizationCredentials = local?.BasicAuthenticationCredentials ?? global.BasicAuthenticationCredentials;
this.CancellationToken = local?.CancellationToken ?? CancellationToken.None;
this.AllowedStatusCodes = local?.AllowedStatusCodes ?? Enumerable.Empty<int>();
}
示例3: CreateAsync
/// <summary>
/// Calculates the number of required connections for routing and request messages.
/// </summary>
/// <param name="routingConfiguration">Contains the number of routing requests in parallel.</param>
/// <param name="requestConfiguration">Contains the number of requests for P2P operations in parallel.</param>
/// <param name="builder">The builder that tells us if we should TCP or UDP.</param>
/// <returns>The future channel creator.</returns>
public Task<ChannelCreator> CreateAsync(RoutingConfiguration routingConfiguration,
IRequestConfiguration requestConfiguration, DefaultConnectionConfiguration builder)
{
if (routingConfiguration == null && requestConfiguration == null)
{
throw new ArgumentException("Both routing configuration and request configuration must be set.");
}
int nrConnectionsUdp = 0;
int nrConnectionsTcp = 0;
if (requestConfiguration != null)
{
if (builder.IsForceUdp)
{
nrConnectionsUdp = requestConfiguration.Parallel;
}
else
{
nrConnectionsTcp = requestConfiguration.Parallel;
}
}
if (routingConfiguration != null)
{
if (!builder.IsForceTcp)
{
nrConnectionsUdp = Math.Max(nrConnectionsUdp, routingConfiguration.Parallel);
}
else
{
nrConnectionsTcp = Math.Max(nrConnectionsTcp, routingConfiguration.Parallel);
}
}
return CreateAsync(nrConnectionsUdp, nrConnectionsTcp);
}
示例4: DoAsyncRequest
protected override Task<ElasticsearchResponse<Stream>> DoAsyncRequest(HttpWebRequest request, byte[] data = null, IRequestConfiguration requestSpecificConfig = null)
{
return Task.Factory.StartNew(() =>
{
var cs = this.ReturnConnectionStatus(request, data, requestSpecificConfig);
return cs;
});
}
示例5: HeadSync
public ElasticsearchResponse<Stream> HeadSync(Uri uri, IRequestConfiguration requestConfiguration = null)
{
var restRequest = new RestRequest();
restRequest.Method = Method.HEAD;
restRequest.Uri = uri;
restRequest.Headers = new Dictionary<string, string>();
restRequest.Headers.Add("Content-Type", "application/json");
return this.Execute(restRequest, requestConfiguration);
}
示例6: ReturnConnectionStatus
private ElasticsearchResponse<Stream> ReturnConnectionStatus(HttpWebRequest request, byte[] data, IRequestConfiguration requestSpecificConfig = null)
{
var method = request.Method;
var path = request.RequestUri.ToString();
var cs = ElasticsearchResponse<Stream>.Create(this.ConnectionSettings, _statusCode, method, path, data);
cs.Response = new MemoryStream(_fixedResultBytes);
if (this.ConnectionSettings.ConnectionStatusHandler != null)
this.ConnectionSettings.ConnectionStatusHandler(cs);
return cs;
}
示例7: CreateHttpWebRequest
protected override HttpWebRequest CreateHttpWebRequest(Uri uri, string method, byte[] data,
IRequestConfiguration requestSpecificConfig)
{
DateTime tsStart = DateTime.Now;
HttpWebRequest request = base.CreateHttpWebRequest(uri, method, data, requestSpecificConfig);
TimeSpan timeSpan = DateTime.Now.Subtract(tsStart);
RequestHandler.Add(tsStart, timeSpan, request.Method, uri, Encoding.UTF8.GetString(data));
return request;
}
示例8: CreateHttpWebRequest
protected override HttpWebRequest CreateHttpWebRequest(Uri uri, string method, byte[] data, IRequestConfiguration requestSpecificConfig)
{
if (_authType == AuthType.InstanceProfile)
{
RefreshCredentials();
}
var request = base.CreateHttpWebRequest(uri, method, data, requestSpecificConfig);
SignV4Util.SignRequest(request, data, _accessKey, _secretKey, _token, _region, "es");
return request;
}
示例9: Head
public Task<ElasticsearchResponse<Stream>> Head(Uri uri, IRequestConfiguration requestConfiguration = null)
{
var restRequest = new RestRequest();
restRequest.Method = Method.HEAD;
restRequest.Uri = uri;
restRequest.Headers = new Dictionary<string, string>();
restRequest.Headers.Add("Content-Type", "application/json");
return Task.Factory.StartNew<ElasticsearchResponse<Stream>>(() =>
{
return this.Execute(restRequest, requestConfiguration);
});
}
示例10: CreateIndex
private void CreateIndex(IRequestConfiguration requestConfig)
{
var indexName = requestConfig.GenerateIndexIdentifier(this.ctx);
this.client.Raw.IndicesCreate(indexName, null);
const int CircuitBreaker = 2;
int count = 0;
do
{
if (count > 0) // on retries - wait a bit
System.Threading.Thread.Sleep(25);
// ES creates new indices in an async fashion, so you have to check manually when the index is ready
// across the whole cluster to receive writes. Waiting for one healthy shard is good enough.
this.client.ClusterHealth(p => p.Index(indexName).WaitForActiveShards(1).Timeout("5s"));
count++;
}
while (count <= CircuitBreaker);
}
示例11: DoRequestSync
/// <summary>
/// Wraps the DoRequest to run synchronously
/// </summary>
/// <param name="method">The method.</param>
/// <param name="uri">The URI.</param>
/// <param name="data">The data.</param>
/// <param name="requestSpecificConfig">The request specific configuration.</param>
/// <returns>ElasticsearchResponse<Stream>.</returns>
public ElasticsearchResponse<Stream> DoRequestSync(HttpMethod method, Uri uri, byte[] data = null, IRequestConfiguration requestSpecificConfig = null)
{
ThrowIfDisposed();
var requestTask = DoRequest(method, uri, data, requestSpecificConfig);
try
{
requestTask.Wait();
return requestTask.Result;
}
catch (AggregateException ex)
{
return ElasticsearchResponse<Stream>.CreateError(_settings, ex.Flatten(), method.ToString().ToLowerInvariant(), uri.ToString(), data);
}
catch (Exception ex)
{
return ElasticsearchResponse<Stream>.CreateError(_settings, ex, method.ToString().ToLowerInvariant(), uri.ToString(), data);
}
}
示例12: RequestData
private RequestData(
HttpMethod method,
string path,
PostData<object> data,
IConnectionConfigurationValues global,
IRequestConfiguration local,
IMemoryStreamFactory memoryStreamFactory)
{
this.ConnectionSettings = global;
this.MemoryStreamFactory = memoryStreamFactory;
this.Method = method;
this.PostData = data;
if (data != null)
data.DisableDirectStreaming = local?.DisableDirectStreaming ?? global.DisableDirectStreaming;
this.Path = this.CreatePathWithQueryStrings(path, this.ConnectionSettings, null);
this.Pipelined = local?.EnableHttpPipelining ?? global.HttpPipeliningEnabled;
this.HttpCompression = global.EnableHttpCompression;
this.ContentType = local?.ContentType ?? MimeType;
this.Accept = local?.Accept ?? MimeType;
this.Headers = global.Headers != null ? new NameValueCollection(global.Headers) : new NameValueCollection();
this.RunAs = local?.RunAs;
this.RequestTimeout = local?.RequestTimeout ?? global.RequestTimeout;
this.PingTimeout =
local?.PingTimeout
?? global?.PingTimeout
?? (global.ConnectionPool.UsingSsl ? ConnectionConfiguration.DefaultPingTimeoutOnSSL : ConnectionConfiguration.DefaultPingTimeout);
this.KeepAliveInterval = (int)(global.KeepAliveInterval?.TotalMilliseconds ?? 2000);
this.KeepAliveTime = (int)(global.KeepAliveTime?.TotalMilliseconds ?? 2000);
this.ProxyAddress = global.ProxyAddress;
this.ProxyUsername = global.ProxyUsername;
this.ProxyPassword = global.ProxyPassword;
this.DisableAutomaticProxyDetection = global.DisableAutomaticProxyDetection;
this.BasicAuthorizationCredentials = local?.BasicAuthenticationCredentials ?? global.BasicAuthenticationCredentials;
this.AllowedStatusCodes = local?.AllowedStatusCodes ?? Enumerable.Empty<int>();
}
示例13: CreateWebRequest
protected virtual HttpWebRequest CreateWebRequest(Uri uri, string method, byte[] data, IRequestConfiguration requestSpecificConfig)
{
//TODO append global querystring
//var url = this._CreateUriString(path);
var myReq = (HttpWebRequest)WebRequest.Create(uri);
myReq.Accept = "application/json";
myReq.ContentType = "application/json";
myReq.MaximumResponseHeadersLength = -1;
myReq.Pipelined = false;
//myReq.AllowWriteStreamBuffering = false;
if (this.ConnectionSettings.EnableCompressedResponses)
{
myReq.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
myReq.Headers.Add("Accept-Encoding", "gzip,deflate");
}
if (requestSpecificConfig != null && !string.IsNullOrWhiteSpace(requestSpecificConfig.ContentType))
{
myReq.Accept = requestSpecificConfig.ContentType;
myReq.ContentType = requestSpecificConfig.ContentType;
}
var timeout = GetRequestTimeout(requestSpecificConfig);
myReq.Timeout = timeout;
myReq.ReadWriteTimeout = timeout;
myReq.Method = method;
//WebRequest won't send Content-Length: 0 for empty bodies
//which goes against RFC's and might break i.e IIS when used as a proxy.
//see: https://github.com/elasticsearch/elasticsearch-net/issues/562
var m = method.ToLowerInvariant();
if (m != "head" && m != "get" && (data == null || data.Length == 0))
myReq.ContentLength = 0;
return myReq;
}
示例14: DoAsyncRequest
protected virtual Task<ElasticsearchResponse<Stream>> DoAsyncRequest(HttpWebRequest request, byte[] data = null, IRequestConfiguration requestSpecificConfig = null)
{
var tcs = new TaskCompletionSource<ElasticsearchResponse<Stream>>();
if (this.ConnectionSettings.MaximumAsyncConnections <= 0
|| this._resourceLock == null)
return this.CreateIterateTask(request, data, requestSpecificConfig, tcs);
var timeout = GetRequestTimeout(requestSpecificConfig);
var path = request.RequestUri.ToString();
var method = request.Method;
if (!this._resourceLock.WaitOne(timeout))
{
var m = "Could not start the operation before the timeout of " + timeout +
"ms completed while waiting for the semaphore";
var cs = ElasticsearchResponse<Stream>.CreateError(this.ConnectionSettings, new TimeoutException(m), method, path, data);
tcs.SetResult(cs);
return tcs.Task;
}
try
{
return this.CreateIterateTask(request, data, requestSpecificConfig, tcs);
}
finally
{
this._resourceLock.Release();
}
}
示例15: DoSynchronousRequest
protected virtual ElasticsearchResponse<Stream> DoSynchronousRequest(HttpWebRequest request, byte[] data = null, IRequestConfiguration requestSpecificConfig = null)
{
var path = request.RequestUri.ToString();
var method = request.Method;
if (data != null)
{
using (var r = request.GetRequestStream())
{
r.Write(data, 0, data.Length);
}
}
try
{
//http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.getresponsestream.aspx
//Either the stream or the response object needs to be closed but not both although it won't
//throw any errors if both are closed atleast one of them has to be Closed.
//Since we expose the stream we let closing the stream determining when to close the connection
var response = (HttpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
return WebToElasticsearchResponse(data, responseStream, response, method, path);
}
catch (WebException webException)
{
return HandleWebException(data, webException, method, path);
}
}