windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/cmp/asp/exec.h
2020-09-26 16:20:57 +08:00

123 lines
2.9 KiB
C++

/*-----------------------------------------------------------------------------
Microsoft Denali
Microsoft Confidential
Copyright 1996 Microsoft Corporation. All Rights Reserved.
Component: Executive
File: Executor.h
Owner: DGottner
Executor API definition
-----------------------------------------------------------------------------*/
#ifndef _EXECUTOR_H
#define _EXECUTOR_H
// Includes -------------------------------------------------------------------
#include "HitObj.h"
// Forward References ---------------------------------------------------------
class CResponse;
class CRequest;
class CServer;
class CScriptingNamespace;
// Error codes ----------------------------------------------------------------
#define E_PAGE_HAS_SESSAPP_OBJECTS 0x8000E001L
// Types and Constants --------------------------------------------------------
class CIntrinsicObjects
{
private:
BOOL m_fIsChild;
CResponse * m_pResponse;
CRequest * m_pRequest;
CServer * m_pServer;
CScriptingNamespace * m_pScriptingNamespace;
public:
inline CResponse * PResponse() const { return m_pResponse; }
inline CRequest * PRequest() const { return m_pRequest; }
inline CServer * PServer() const { return m_pServer; }
inline CScriptingNamespace *PScriptingNamespace() const { return m_pScriptingNamespace; }
CIntrinsicObjects()
{
m_fIsChild = FALSE;
m_pResponse = NULL;
m_pRequest = NULL;
m_pServer = NULL;
m_pScriptingNamespace = NULL;
}
~CIntrinsicObjects()
{
Cleanup();
}
HRESULT Prepare(CSession *pSession);
HRESULT PrepareChild(CResponse *pResponse, CRequest *pRequest, CServer *pServer);
HRESULT Cleanup();
};
struct TemplateGoodies
{
int iScriptBlock;
CTemplate * pTemplate;
};
// CONSIDER: declare pScriptEngine to be a CActiveScriptEngine, because that's its
// actual type.
//
struct ScriptingInfo
{
CHAR * szScriptEngine; // name of this scripting engine
PROGLANG_ID * pProgLangId; // ptr to prog lang id of the script engine
CScriptEngine * pScriptEngine; // pointer to scripting engine
TemplateGoodies LineMapInfo; // used to map lines back to VBScript
};
struct ActiveEngineInfo
{
int cEngines; // required engines
int cActiveEngines; // successfully instantiated engines
ScriptingInfo *rgActiveEngines; // pointer to array of engines
// when only one engine rgActiveEngines points to here
ScriptingInfo siOneActiveEngine;
};
// Prototypes -----------------------------------------------------------------
HRESULT Execute
(
CTemplate *pTemplate,
CHitObj *pHitObj,
const CIntrinsicObjects &intrinsics,
BOOL fChild = FALSE
);
HRESULT LoadTemplate
(
const TCHAR *szFile,
CHitObj *pHitObj,
CTemplate **ppTemplate,
const CIntrinsicObjects &intrinsics,
BOOL fGlobalAsa,
BOOL *pfTemplateInCache
);
#endif // _EXECUTOR_H