Remove extra arguments from CreateApplication (#952)

This commit is contained in:
Pavel Krymets 2018-06-21 15:29:03 -07:00 committed by GitHub
parent de197bfcd1
commit cd81cfc243
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 40 additions and 39 deletions

View File

@ -20,10 +20,9 @@
typedef typedef
HRESULT HRESULT
(WINAPI * PFN_ASPNETCORE_CREATE_APPLICATION)( (WINAPI * PFN_ASPNETCORE_CREATE_APPLICATION)(
_In_ IHttpServer *pServer, _In_ IHttpServer *pServer,
_In_ IHttpContext *pHttpContext, _In_ IHttpApplication *pHttpApplication,
_In_ PCWSTR pwzExeLocation, // TODO remove both pwzExeLocation and pHttpContext from this api _Out_ IAPPLICATION **pApplication
_Out_ IAPPLICATION **pApplication
); );
extern BOOL g_fRecycleProcessCalled; extern BOOL g_fRecycleProcessCalled;

View File

@ -231,7 +231,8 @@ APPLICATION_INFO::EnsureApplicationCreated(
RETURN_IF_FAILED(HRESULT_FROM_WIN32(ERROR_INVALID_FUNCTION)); RETURN_IF_FAILED(HRESULT_FROM_WIN32(ERROR_INVALID_FUNCTION));
} }
RETURN_IF_FAILED(m_pfnAspNetCoreCreateApplication(m_pServer, pHttpContext, struExeLocation.QueryStr(), &pApplication)); RETURN_IF_FAILED(m_pfnAspNetCoreCreateApplication(m_pServer, pHttpContext->GetApplication(), &pApplication));
pApplication->SetParameter(L"InProcessExeLocation", struExeLocation.QueryStr());
m_pApplication = pApplication; m_pApplication = pApplication;
} }
} }

View File

@ -40,6 +40,16 @@ public:
} }
} }
VOID
SetParameter(
_In_ LPCWSTR pzName,
_In_ LPCWSTR pzValue)
override
{
UNREFERENCED_PARAMETER(pzName);
UNREFERENCED_PARAMETER(pzValue);
}
protected: protected:
volatile APPLICATION_STATUS m_status = APPLICATION_STATUS::UNKNOWN; volatile APPLICATION_STATUS m_status = APPLICATION_STATUS::UNKNOWN;

View File

@ -46,4 +46,10 @@ public:
CreateHandler( CreateHandler(
_In_ IHttpContext *pHttpContext, _In_ IHttpContext *pHttpContext,
_Out_ IREQUEST_HANDLER **pRequestHandler) = 0; _Out_ IREQUEST_HANDLER **pRequestHandler) = 0;
virtual
VOID
SetParameter(
_In_ LPCWSTR pzName,
_In_ LPCWSTR pzValue) = 0;
}; };

View File

@ -82,13 +82,11 @@ BOOL APIENTRY DllMain(HMODULE hModule,
return TRUE; return TRUE;
} }
// TODO remove pHttpContext from the CreateApplication call.
HRESULT HRESULT
__stdcall __stdcall
CreateApplication( CreateApplication(
_In_ IHttpServer *pServer, _In_ IHttpServer *pServer,
_In_ IHttpContext *pHttpContext, _In_ IHttpApplication *pHttpApplication,
_In_ PCWSTR pwzExeLocation,
_Out_ IAPPLICATION **ppApplication _Out_ IAPPLICATION **ppApplication
) )
{ {
@ -101,7 +99,7 @@ CreateApplication(
try try
{ {
hr = REQUESTHANDLER_CONFIG::CreateRequestHandlerConfig(pServer, pHttpContext->GetApplication(), &pConfig); hr = REQUESTHANDLER_CONFIG::CreateRequestHandlerConfig(pServer, pHttpApplication, &pConfig);
if (FAILED(hr)) if (FAILED(hr))
{ {
goto Finished; goto Finished;
@ -111,12 +109,6 @@ CreateApplication(
pConfig = NULL; pConfig = NULL;
hr = pApplication->Initialize(pwzExeLocation);
if (FAILED(hr))
{
goto Finished;
}
*ppApplication = pApplication; *ppApplication = pApplication;
} }
catch (std::bad_alloc&) catch (std::bad_alloc&)

View File

@ -37,14 +37,6 @@ IN_PROCESS_APPLICATION::IN_PROCESS_APPLICATION(
m_status = APPLICATION_STATUS::STARTING; m_status = APPLICATION_STATUS::STARTING;
} }
HRESULT
IN_PROCESS_APPLICATION::Initialize(
PCWSTR pDotnetExeLocation
)
{
return m_struExeLocation.Copy(pDotnetExeLocation);
}
IN_PROCESS_APPLICATION::~IN_PROCESS_APPLICATION() IN_PROCESS_APPLICATION::~IN_PROCESS_APPLICATION()
{ {

View File

@ -23,11 +23,6 @@ public:
~IN_PROCESS_APPLICATION(); ~IN_PROCESS_APPLICATION();
HRESULT
Initialize(
PCWSTR pDotnetExeLocation
);
__override __override
VOID VOID
ShutDown(); ShutDown();
@ -54,6 +49,19 @@ public:
_Out_ IREQUEST_HANDLER **pRequestHandler) _Out_ IREQUEST_HANDLER **pRequestHandler)
override; override;
VOID
SetParameter(
_In_ LPCWSTR pzName,
_In_ LPCWSTR pzValue)
override
{
const auto exeLocationParameterName = L"InProcessExeLocation";
if (_wcsicmp(pzName, exeLocationParameterName) == 0)
{
m_struExeLocation.Copy(pzValue);
}
}
// Executes the .NET Core process // Executes the .NET Core process
HRESULT HRESULT
ExecuteApplication( ExecuteApplication(
@ -170,11 +178,6 @@ private:
// used in testing // used in testing
static hostfxr_main_fn s_fMainCallback; static hostfxr_main_fn s_fMainCallback;
VOID
SetStdOut(
VOID
);
static static
VOID VOID
ExecuteAspNetCoreProcess( ExecuteAspNetCoreProcess(

View File

@ -260,25 +260,22 @@ BOOL APIENTRY DllMain(HMODULE hModule,
return TRUE; return TRUE;
} }
// TODO remove pHttpContext from the CreateApplication call.
HRESULT HRESULT
__stdcall __stdcall
CreateApplication( CreateApplication(
_In_ IHttpServer *pServer, _In_ IHttpServer *pServer,
_In_ IHttpContext *pHttpContext, _In_ IHttpApplication *pHttpApplication,
_In_ PCWSTR pwzExeLocation,
_Out_ IAPPLICATION **ppApplication _Out_ IAPPLICATION **ppApplication
) )
{ {
HRESULT hr = S_OK; HRESULT hr = S_OK;
IAPPLICATION *pApplication = NULL; IAPPLICATION *pApplication = NULL;
REQUESTHANDLER_CONFIG *pConfig = NULL; REQUESTHANDLER_CONFIG *pConfig = NULL;
UNREFERENCED_PARAMETER(pwzExeLocation);
// Initialze some global variables here // Initialze some global variables here
InitializeGlobalConfiguration(pServer); InitializeGlobalConfiguration(pServer);
hr = REQUESTHANDLER_CONFIG::CreateRequestHandlerConfig(pServer, pHttpContext->GetApplication(), &pConfig); hr = REQUESTHANDLER_CONFIG::CreateRequestHandlerConfig(pServer, pHttpApplication, &pConfig);
if (FAILED(hr)) if (FAILED(hr))
{ {
return hr; return hr;

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#include "stdafx.h" #include "stdafx.h"
#include "inprocessapplication.h" #include "inprocessapplication.h"
#include "fakeclasses.h" #include "fakeclasses.h"
@ -18,7 +19,7 @@ namespace InprocessTests
IN_PROCESS_APPLICATION *app = new IN_PROCESS_APPLICATION(server, requestHandlerConfig); IN_PROCESS_APPLICATION *app = new IN_PROCESS_APPLICATION(server, requestHandlerConfig);
{ {
std::wstring exePath(L"hello"); std::wstring exePath(L"hello");
app->Initialize(exePath.c_str()); app->SetParameter(L"InProcessExeLocation", exePath.c_str());
} }
ASSERT_STREQ(app->QueryExeLocation(), L"hello"); ASSERT_STREQ(app->QueryExeLocation(), L"hello");
} }