|
|
/*++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Copyright (c) 1999 Microsoft Corporation
Module Name:
om.h
Abstract:
Object declarations for object model components. Author:
Paul M Midgen (pmidge) 13-October-2000
Revision History:
13-October-2000 pmidge Created on Friday the 13th!!
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--*/
#ifndef __OM_H__
#define __OM_H__
#include "common.h"
class CSession : public ISession, public IProvideClassInfo, public IActiveScriptSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO();
public: // ISession
HRESULT __stdcall get_Socket(IDispatch** ppdisp); HRESULT __stdcall get_Request(IDispatch** ppdisp); HRESULT __stdcall get_Response(IDispatch** ppdisp); HRESULT __stdcall get_KeepAlive(VARIANT* IsKA); HRESULT __stdcall GetPropertyBag(VARIANT Name, IDispatch** ppdisp);
// IActiveScriptSite
HRESULT __stdcall GetLCID(LCID* plcid);
HRESULT __stdcall GetItemInfo( LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown** ppunk, ITypeInfo** ppti );
HRESULT __stdcall GetDocVersionString(BSTR* pbstrVersion); HRESULT __stdcall OnScriptTerminate(const VARIANT* pvarResult, const EXCEPINFO* pei); HRESULT __stdcall OnStateChange(SCRIPTSTATE ss); HRESULT __stdcall OnScriptError(IActiveScriptError* piase); HRESULT __stdcall OnEnterScript(void); HRESULT __stdcall OnLeaveScript(void);
// CSession
CSession(); ~CSession();
HRESULT Run(PIOCTX pioc); HRESULT Terminate(void);
static HRESULT Create(PIOCTX pioc, IW3Spoof* pw3s);
private: HRESULT _Initialize(PIOCTX pioc, IW3Spoof* pw3s); HRESULT _InitScriptEngine(void); HRESULT _LoadScript(void); HRESULT _SetScriptSite(BOOL bClone); HRESULT _ResetScriptEngine(void); HRESULT _LoadScriptDispids(void); HRESULT _InitSocketObject(PIOCTX pioc); HRESULT _InitRequestObject(void); void _SetKeepAlive(PIOCTX pioc); void _SetObjectState(STATE state); BOOL _SetNextServerState(SERVERSTATE state); void _Lock(void); void _Unlock(void);
LONG m_cRefs; LPWSTR m_wszClient; LPWSTR m_wszClientId; BOOL m_bIsKeepAlive; SCRIPTDISPID m_CurrentHandler; LCID m_lcid; PSOCKETOBJ m_socketobj; PREQUESTOBJ m_requestobj; PRESPONSEOBJ m_responseobj; ITypeLib* m_ptl; IW3Spoof* m_pw3s; IActiveScript* m_pas; IDispatch* m_psd; DISPID m_arHandlerDispids[SCRIPTHANDLERS]; CRITSEC m_lock; STATE m_objstate; };
class CSocket : public ISocket, public IProvideClassInfo, public IObjectWithSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO(); DECLAREIOBJECTWITHSITE();
public: // ISocket
HRESULT __stdcall Send(VARIANT Data); HRESULT __stdcall Recv(VARIANT *Data); HRESULT __stdcall Close(VARIANT Method); HRESULT __stdcall Resolve(BSTR Host, BSTR *Address);
HRESULT __stdcall get_Parent(IDispatch** ppdisp); HRESULT __stdcall get_LocalName(BSTR *Name); HRESULT __stdcall get_LocalAddress(BSTR *Address); HRESULT __stdcall get_LocalPort(VARIANT *Port); HRESULT __stdcall get_RemoteName(BSTR *Name); HRESULT __stdcall get_RemoteAddress(BSTR *Address); HRESULT __stdcall get_RemotePort(VARIANT *Port);
HRESULT __stdcall get_Option(BSTR Option, VARIANT *Value); HRESULT __stdcall put_Option(BSTR Option, VARIANT Value);
// CSocket
CSocket(); ~CSocket();
HRESULT Run(PIOCTX pioc); HRESULT Terminate(void); SERVERSTATE GetServerState(void); void SetServerState(SERVERSTATE ss);
static HRESULT Create(PIOCTX pioc, PSOCKETOBJ* ppsocketobj);
friend class CSession;
protected: void GetSendBuffer(WSABUF** ppwb); void GetRecvBuffer(WSABUF** ppwb); DWORD GetBytesSent(void); DWORD GetBytesReceived(void);
private: HRESULT _Initialize(PIOCTX pioc); void _SetObjectState(STATE state); BOOL _ResizeBuffer(PIOCTX pioc, DWORD len); HRESULT _Send(PIOCTX pioc); HRESULT _Recv(PIOCTX pioc); BOOL _Flush(void); HRESULT _TestWinsockError(void);
LONG m_cRefs; SOCKET m_socket; PHOSTINFO m_local; PHOSTINFO m_remote; PIOCTX m_rcvd; PIOCTX m_sent; IUnknown* m_pSite; LPWSTR m_wszClientId; SERVERSTATE m_serverstate; STATE m_objstate; };
class CRequest : public IRequest, public IProvideClassInfo, public IObjectWithSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO(); DECLAREIOBJECTWITHSITE();
public: // IRequest
HRESULT __stdcall get_Parent(IDispatch **ppdisp); HRESULT __stdcall get_Headers(IDispatch **ppdisp); HRESULT __stdcall get_Entity(IDispatch **ppdisp); HRESULT __stdcall get_Url(IDispatch **ppdisp); HRESULT __stdcall get_Verb(BSTR *Verb); HRESULT __stdcall get_HttpVersion(BSTR *HttpVersion);
// CRequest
CRequest(); ~CRequest();
void Terminate(void);
static HRESULT Create(CHAR* request, DWORD len, PREQUESTOBJ* ppreq);
private: HRESULT _Initialize(CHAR* request, DWORD len); void _Cleanup(void); HRESULT _SiteMemberObjects(void); BOOL _CrackRequest(LPSTR request, DWORD len, LPSTR* reqline, LPSTR* headers, LPSTR* entity, LPDWORD contentlength); LPSTR* _CrackRequestLine(CHAR* buf, DWORD len);
LONG m_cRefs; IUnknown* m_pSite; LPWSTR m_wszVerb; LPWSTR m_wszHTTPVersion; PURLOBJ m_urlobj; PHEADERSOBJ m_headersobj; PENTITYOBJ m_entityobj; };
class CResponse : public IResponse, public IProvideClassInfo, public IObjectWithSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO(); DECLAREIOBJECTWITHSITE();
public: // IResponse
HRESULT __stdcall get_Parent(IDispatch **ppdisp); HRESULT __stdcall get_Headers(IDispatch **ppdisp); HRESULT __stdcall putref_Headers(IDispatch **ppdisp); HRESULT __stdcall get_Entity(IDispatch **ppdisp); HRESULT __stdcall putref_Entity(IDispatch **ppdisp); HRESULT __stdcall get_StatusCode(VARIANT *Code); HRESULT __stdcall put_StatusCode(VARIANT StatusCode); HRESULT __stdcall get_StatusText(BSTR *StatusText); HRESULT __stdcall put_StatusText(BSTR StatusText); // CResponse
CResponse(); ~CResponse();
HRESULT Terminate(void);
static HRESULT Create(CHAR* response, DWORD len, PRESPONSEOBJ* ppresponse);
private: HRESULT _Initialize(CHAR* response, DWORD len);
LONG m_cRefs; IUnknown* m_pSite; PHEADERSOBJ m_headersobj; PENTITYOBJ m_entityobj; };
class CUrl : public IUrl, public IProvideClassInfo, public IObjectWithSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO(); DECLAREIOBJECTWITHSITE();
public: // IUrl
HRESULT __stdcall get_Parent(IDispatch **ppdisp); HRESULT __stdcall get_Encoding(BSTR *Encoding); HRESULT __stdcall get_Scheme(BSTR *Scheme); HRESULT __stdcall put_Scheme(BSTR Scheme); HRESULT __stdcall get_Server(BSTR *Server); HRESULT __stdcall put_Server(BSTR Server); HRESULT __stdcall get_Port(VARIANT *Port); HRESULT __stdcall put_Port(VARIANT Port); HRESULT __stdcall get_Path(BSTR *Path); HRESULT __stdcall put_Path(BSTR Path); HRESULT __stdcall get_Resource(BSTR *Resource); HRESULT __stdcall put_Resource(BSTR Resource); HRESULT __stdcall get_Query(BSTR *Query); HRESULT __stdcall put_Query(BSTR Query); HRESULT __stdcall get_Fragment(BSTR *Fragment); HRESULT __stdcall put_Fragment(BSTR Fragment); HRESULT __stdcall Escape(BSTR *Url); HRESULT __stdcall Unescape(BSTR *Url); HRESULT __stdcall Set(BSTR Url); HRESULT __stdcall Get(BSTR *Url);
// CUrl
CUrl(); ~CUrl();
static HRESULT Create(CHAR* url, BOOL bReadOnly, PURLOBJ* ppurl);
void Terminate(void);
private: HRESULT _Initialize(CHAR* url, BOOL bReadOnly); void _Cleanup(void);
LONG m_cRefs; IUnknown* m_pSite; ITypeInfo* m_pti; BOOL m_bReadOnly; BOOL m_bEscaped; LPSTR m_szOriginalUrl; LPSTR m_szUnescapedUrl; LPWSTR m_wszUrl; LPWSTR m_wszScheme; USHORT m_usPort; LPWSTR m_wszServer; LPWSTR m_wszPath; LPWSTR m_wszResource; LPWSTR m_wszQuery; LPWSTR m_wszFragment; };
class CHeaders : public IHeaders, public IProvideClassInfo, public IObjectWithSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO(); DECLAREIOBJECTWITHSITE();
public: // IHeaders
HRESULT __stdcall get_Parent(IDispatch **ppdisp); HRESULT __stdcall Get(BSTR *Headers); HRESULT __stdcall Set(VARIANT *Headers); HRESULT __stdcall GetHeader(BSTR Header, VARIANT *Value); HRESULT __stdcall SetHeader(BSTR Header, VARIANT *Value);
// CHeaders
CHeaders(); ~CHeaders();
static HRESULT Create(CHAR* headers, BOOL bReadOnly, PHEADERSOBJ* ppheaders);
void Terminate(void);
private: HRESULT _Initialize(CHAR* headers, BOOL bReadOnly); HRESULT _ParseHeaders(CHAR* headers); void _Cleanup(void);
LONG m_cRefs; IUnknown* m_pSite; ITypeInfo* m_pti; BOOL m_bReadOnly; CHAR* m_pchHeaders; PHEADERLIST m_headerlist; };
class CEntity : public IEntity, public IProvideClassInfo, public IObjectWithSite { public: DECLAREIUNKNOWN(); DECLAREIDISPATCH(); DECLAREIPROVIDECLASSINFO(); DECLAREIOBJECTWITHSITE();
public: // IEntity
HRESULT __stdcall get_Parent(IDispatch **ppdisp); HRESULT __stdcall get_Length(VARIANT *Length); HRESULT __stdcall Get(VARIANT *Entity); HRESULT __stdcall Set(VARIANT Entity); HRESULT __stdcall Compress(BSTR Method); HRESULT __stdcall Decompress(VARIANT Method);
// CEntity
CEntity(); ~CEntity();
static HRESULT Create(LPBYTE data, DWORD length, BOOL bReadOnly, PENTITYOBJ* ppentity);
void Terminate(void);
private: HRESULT _Initialize(LPBYTE data, DWORD length, BOOL bReadOnly); void _Cleanup(void);
LONG m_cRefs; IUnknown* m_pSite; ITypeInfo* m_pti; BOOL m_bReadOnly; LPBYTE m_pbData; DWORD m_cData; };
#endif /* __OM_H__ */
|