React to aspnet/HttpAbstractions#160 - Implementing OnResponseCompleted in TestHost
This commit is contained in:
parent
3b0d5fd422
commit
de44c3be99
|
|
@ -174,6 +174,7 @@ namespace Microsoft.AspNet.TestHost
|
||||||
if (!_responseTcs.Task.IsCompleted)
|
if (!_responseTcs.Task.IsCompleted)
|
||||||
{
|
{
|
||||||
var response = GenerateResponse();
|
var response = GenerateResponse();
|
||||||
|
_responseFeature.FireOnResponseCompleted();
|
||||||
// Dispatch, as TrySetResult will synchronously execute the waiters callback and block our Write.
|
// Dispatch, as TrySetResult will synchronously execute the waiters callback and block our Write.
|
||||||
Task.Factory.StartNew(() => _responseTcs.TrySetResult(response));
|
Task.Factory.StartNew(() => _responseTcs.TrySetResult(response));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ namespace Microsoft.AspNet.TestHost
|
||||||
internal class ResponseFeature : IHttpResponseFeature
|
internal class ResponseFeature : IHttpResponseFeature
|
||||||
{
|
{
|
||||||
private Action _sendingHeaders = () => { };
|
private Action _sendingHeaders = () => { };
|
||||||
|
private Action _responseCompleted = () => { };
|
||||||
|
|
||||||
public ResponseFeature()
|
public ResponseFeature()
|
||||||
{
|
{
|
||||||
|
|
@ -42,10 +43,25 @@ namespace Microsoft.AspNet.TestHost
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnResponseCompleted(Action<object> callback, object state)
|
||||||
|
{
|
||||||
|
var prior = _responseCompleted;
|
||||||
|
_responseCompleted = () =>
|
||||||
|
{
|
||||||
|
callback(state);
|
||||||
|
prior();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public void FireOnSendingHeaders()
|
public void FireOnSendingHeaders()
|
||||||
{
|
{
|
||||||
_sendingHeaders();
|
_sendingHeaders();
|
||||||
HeadersSent = true;
|
HeadersSent = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void FireOnResponseCompleted()
|
||||||
|
{
|
||||||
|
_responseCompleted();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue