54 lines
1.6 KiB
C#
54 lines
1.6 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Http.Features;
|
|
using Microsoft.AspNetCore.Http.Internal;
|
|
|
|
namespace SampleApp
|
|
{
|
|
public class PooledHttpContext : DefaultHttpContext
|
|
{
|
|
DefaultHttpRequest _pooledHttpRequest;
|
|
DefaultHttpResponse _pooledHttpResponse;
|
|
|
|
public PooledHttpContext(IFeatureCollection featureCollection) :
|
|
base(featureCollection)
|
|
{
|
|
}
|
|
|
|
protected override HttpRequest InitializeHttpRequest()
|
|
{
|
|
if (_pooledHttpRequest != null)
|
|
{
|
|
_pooledHttpRequest.Initialize(this);
|
|
return _pooledHttpRequest;
|
|
}
|
|
|
|
return new DefaultHttpRequest(this);
|
|
}
|
|
|
|
protected override void UninitializeHttpRequest(HttpRequest instance)
|
|
{
|
|
_pooledHttpRequest = instance as DefaultHttpRequest;
|
|
_pooledHttpRequest?.Uninitialize();
|
|
}
|
|
|
|
protected override HttpResponse InitializeHttpResponse()
|
|
{
|
|
if (_pooledHttpResponse != null)
|
|
{
|
|
_pooledHttpResponse.Initialize(this);
|
|
return _pooledHttpResponse;
|
|
}
|
|
|
|
return new DefaultHttpResponse(this);
|
|
}
|
|
|
|
protected override void UninitializeHttpResponse(HttpResponse instance)
|
|
{
|
|
_pooledHttpResponse = instance as DefaultHttpResponse;
|
|
_pooledHttpResponse?.Uninitialize();
|
|
}
|
|
}
|
|
} |