aspnetcore/src/AspNetCoreModuleV2/OutOfProcessRequestHandler/outofprocess/outprocessapplication.h

70 lines
1.4 KiB
C++

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#pragma once
#include "AppOfflineTrackingApplication.h"
class OUT_OF_PROCESS_APPLICATION : public AppOfflineTrackingApplication
{
enum WEBSOCKET_STATUS
{
WEBSOCKET_UNKNOWN = 0,
WEBSOCKET_NOT_SUPPORTED,
WEBSOCKET_SUPPORTED,
};
public:
OUT_OF_PROCESS_APPLICATION(
IHttpApplication& pApplication,
std::unique_ptr<REQUESTHANDLER_CONFIG> pConfig);
__override
~OUT_OF_PROCESS_APPLICATION() override;
HRESULT
Initialize();
HRESULT
GetProcess(
_Out_ SERVER_PROCESS **ppServerProcess
);
__override
VOID
ShutDown()
override;
__override
VOID
Recycle()
override;
__override
HRESULT
CreateHandler(
_In_ IHttpContext *pHttpContext,
_Out_ IREQUEST_HANDLER **pRequestHandler)
override;
BOOL
QueryWebsocketStatus()
const;
REQUESTHANDLER_CONFIG* QueryConfig()
{
return m_pConfig.get();
}
private:
VOID SetWebsocketStatus(IHttpContext *pHttpContext);
PROCESS_MANAGER * m_pProcessManager;
SRWLOCK m_srwLock;
IHttpServer *m_pHttpServer;
WEBSOCKET_STATUS m_fWebSocketSupported;
std::unique_ptr<REQUESTHANDLER_CONFIG> m_pConfig;
};