React to aspnet/HttpAbstractions#160 - Implementing OnResponseCompleted in TestHost

This commit is contained in:
Ajay Bhargav Baaskaran 2015-02-19 14:33:26 -08:00
parent 3b0d5fd422
commit de44c3be99
2 changed files with 17 additions and 0 deletions

View File

@ -174,6 +174,7 @@ namespace Microsoft.AspNet.TestHost
if (!_responseTcs.Task.IsCompleted)
{
var response = GenerateResponse();
_responseFeature.FireOnResponseCompleted();
// Dispatch, as TrySetResult will synchronously execute the waiters callback and block our Write.
Task.Factory.StartNew(() => _responseTcs.TrySetResult(response));
}

View File

@ -11,6 +11,7 @@ namespace Microsoft.AspNet.TestHost
internal class ResponseFeature : IHttpResponseFeature
{
private Action _sendingHeaders = () => { };
private Action _responseCompleted = () => { };
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()
{
_sendingHeaders();
HeadersSent = true;
}
public void FireOnResponseCompleted()
{
_responseCompleted();
}
}
}