Flow request trace context to CreateApplication (#1480)

This commit is contained in:
Pavel Krymets 2018-10-09 16:11:52 -07:00 committed by GitHub
parent 23db53eae6
commit f2fbd803b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 16 deletions

View File

@ -31,13 +31,17 @@ public:
HRESULT Execute( HRESULT Execute(
_In_ IHttpServer *pServer, _In_ IHttpServer *pServer,
_In_ const IHttpApplication *pHttpApplication, _In_ IHttpContext *pHttpContext,
_Outptr_ IAPPLICATION **pApplication) const noexcept _Outptr_ IAPPLICATION **pApplication) const
{ {
std::array<APPLICATION_PARAMETER, 1> parameters { std::array<APPLICATION_PARAMETER, 2> parameters {
{"InProcessExeLocation", m_location.data()} {
{"InProcessExeLocation", m_location.data()},
{"TraceContext", pHttpContext->GetTraceContext()}
}
}; };
return m_pfnAspNetCoreCreateApplication(pServer, pHttpApplication, parameters.data(), static_cast<DWORD>(parameters.size()), pApplication);
return m_pfnAspNetCoreCreateApplication(pServer, pHttpContext->GetApplication(), parameters.data(), static_cast<DWORD>(parameters.size()), pApplication);
} }
private: private:

View File

@ -59,7 +59,7 @@ APPLICATION_INFO::CreateHandler(
m_pApplicationFactory = nullptr; m_pApplicationFactory = nullptr;
} }
RETURN_IF_FAILED(CreateApplication(*pHttpContext.GetApplication())); RETURN_IF_FAILED(CreateApplication(pHttpContext));
RETURN_IF_FAILED(hr = TryCreateHandler(pHttpContext, pHandler)); RETURN_IF_FAILED(hr = TryCreateHandler(pHttpContext, pHandler));
} }
@ -69,8 +69,9 @@ APPLICATION_INFO::CreateHandler(
} }
HRESULT HRESULT
APPLICATION_INFO::CreateApplication(const IHttpApplication& pHttpApplication) APPLICATION_INFO::CreateApplication(IHttpContext& pHttpContext)
{ {
auto& pHttpApplication = *pHttpContext.GetApplication();
if (AppOfflineApplication::ShouldBeStarted(pHttpApplication)) if (AppOfflineApplication::ShouldBeStarted(pHttpApplication))
{ {
LOG_INFO(L"Detected app_offline file, creating polling application"); LOG_INFO(L"Detected app_offline file, creating polling application");
@ -85,7 +86,7 @@ APPLICATION_INFO::CreateApplication(const IHttpApplication& pHttpApplication)
const WebConfigConfigurationSource configurationSource(m_pServer.GetAdminManager(), pHttpApplication); const WebConfigConfigurationSource configurationSource(m_pServer.GetAdminManager(), pHttpApplication);
ShimOptions options(configurationSource); ShimOptions options(configurationSource);
const auto hr = TryCreateApplication(pHttpApplication, options); const auto hr = TryCreateApplication(pHttpContext, options);
if (FAILED_LOG(hr)) if (FAILED_LOG(hr))
{ {
@ -130,15 +131,15 @@ APPLICATION_INFO::CreateApplication(const IHttpApplication& pHttpApplication)
} }
HRESULT HRESULT
APPLICATION_INFO::TryCreateApplication(const IHttpApplication& pHttpApplication, const ShimOptions& options) APPLICATION_INFO::TryCreateApplication(IHttpContext& pHttpContext, const ShimOptions& options)
{ {
RETURN_IF_FAILED(m_handlerResolver.GetApplicationFactory(pHttpApplication, m_pApplicationFactory, options)); RETURN_IF_FAILED(m_handlerResolver.GetApplicationFactory(*pHttpContext.GetApplication(), m_pApplicationFactory, options));
LOG_INFO(L"Creating handler application"); LOG_INFO(L"Creating handler application");
IAPPLICATION * newApplication; IAPPLICATION * newApplication;
RETURN_IF_FAILED(m_pApplicationFactory->Execute( RETURN_IF_FAILED(m_pApplicationFactory->Execute(
&m_pServer, &m_pServer,
&pHttpApplication, &pHttpContext,
&newApplication)); &newApplication));
m_pApplication.reset(newApplication); m_pApplication.reset(newApplication);

View File

@ -74,10 +74,10 @@ private:
std::unique_ptr<IREQUEST_HANDLER, IREQUEST_HANDLER_DELETER>& pHandler); std::unique_ptr<IREQUEST_HANDLER, IREQUEST_HANDLER_DELETER>& pHandler);
HRESULT HRESULT
CreateApplication(const IHttpApplication& pHttpApplication); CreateApplication(IHttpContext& pHttpContext);
HRESULT HRESULT
TryCreateApplication(const IHttpApplication& pHttpApplication, const ShimOptions& options); TryCreateApplication(IHttpContext& pHttpContext, const ShimOptions& options);
IHttpServer &m_pServer; IHttpServer &m_pServer;
HandlerResolver &m_handlerResolver; HandlerResolver &m_handlerResolver;