Skip to content

Commit 53f4b8b

Browse files
author
ahardy
committed
allow custom handling of connection status types through a delegate settable on ConnectionSettings
1 parent 0420701 commit 53f4b8b

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

src/Nest/Domain/Connection/Connection.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Collections.Specialized;
3-
using System.Text;
4+
using System.IO;
45
using System.Net;
6+
using System.Text;
57
using System.Threading;
6-
using System.IO;
78
using System.Threading.Tasks;
8-
using System.Collections.Generic;
99

1010
namespace Nest
1111
{
@@ -185,6 +185,9 @@ protected virtual ConnectionStatus DoSynchronousRequest(HttpWebRequest request,
185185
RequestUrl = request.RequestUri.ToString(),
186186
RequestMethod = request.Method
187187
};
188+
189+
_ConnectionSettings.ConnectionStatusHandler(cs);
190+
188191
return cs;
189192
}
190193
}
@@ -210,6 +213,7 @@ protected virtual Task<ConnectionStatus> DoAsyncRequest(HttpWebRequest request,
210213
return Task.Factory.StartNew(() =>
211214
{
212215
this.Iterate(this._AsyncSteps(request, tcs, data), tcs);
216+
_ConnectionSettings.ConnectionStatusHandler(tcs.Task.Result);
213217
return tcs.Task.Result;
214218
}, TaskCreationOptions.LongRunning);
215219
}

src/Nest/Domain/Connection/ConnectionSettings.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public string DefaultIndex
2929
public bool UsesPrettyResponses { get; private set; }
3030

3131
public Func<Type, string> DefaultTypeNameInferrer { get; private set; }
32+
public Action<ConnectionStatus> ConnectionStatusHandler { get; private set; }
3233
public FluentDictionary<Type, string> DefaultIndices { get; private set; }
3334
public FluentDictionary<Type, string> DefaultTypeNames { get; private set; }
3435
public NameValueCollection QueryStringParameters { get; private set; }
@@ -49,6 +50,7 @@ public ConnectionSettings(Uri uri, NameValueCollection queryStringParamaters)
4950
this.DefaultTypeNameInferrer = this.LowerCaseAndPluralizeTypeNameInferrer;
5051
this.DefaultIndices = new FluentDictionary<Type, string>();
5152
this.DefaultTypeNames = new FluentDictionary<Type, string>();
53+
this.ConnectionStatusHandler = this.ConnectionStatusDefaultHandler;
5254
this.QueryStringParameters = queryStringParamaters;
5355
}
5456

@@ -119,13 +121,25 @@ private string LowerCaseAndPluralizeTypeNameInferrer(Type type)
119121
return Inflector.MakePlural(type.Name).ToLower();
120122
}
121123

124+
private void ConnectionStatusDefaultHandler(ConnectionStatus status)
125+
{
126+
return;
127+
}
128+
122129
public ConnectionSettings SetDefaultTypeNameInferrer(Func<Type, string> defaultTypeNameInferrer)
123130
{
124131
defaultTypeNameInferrer.ThrowIfNull("defaultTypeNameInferrer");
125132
this.DefaultTypeNameInferrer = defaultTypeNameInferrer;
126133
return this;
127134
}
128135

136+
public ConnectionSettings SetConnectionStatusHandler(Action<ConnectionStatus> handler)
137+
{
138+
handler.ThrowIfNull("handler");
139+
this.ConnectionStatusHandler = handler;
140+
return this;
141+
}
142+
129143
public ConnectionSettings MapDefaultTypeIndices(Action<FluentDictionary<Type, string>> mappingSelector)
130144
{
131145
mappingSelector.ThrowIfNull("mappingSelector");

src/Nest/Domain/Connection/IConnectionSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public interface IConnectionSettings
2121
Uri Uri { get; }
2222

2323
NameValueCollection QueryStringParameters { get; }
24+
Action<ConnectionStatus> ConnectionStatusHandler { get; }
2425

2526
Func<Type, string> DefaultTypeNameInferrer { get; }
2627
}

0 commit comments

Comments
 (0)