📄 hxengin.h
字号:
DECLARE_INTERFACE_(IHXProcess, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; STDMETHOD(Start) (THIS_ const char* pProcessName, IHXProcessEntryPoint* pEntryPoint) PURE;};/**************************************************************************** * * Interface: * * IHXLoadBalancedListen * * Purpose: * * This interface is queried off of IHXListenSocket. It allows * a plugin to specify that it wants the server to load balance * multiple instances of itself. The server will instantiate multiple * instances of the plugin as needed based on socket / descriptor limits. * Each plugin instance should attempt to listen on the same port as * other instances (they will share the port). * * IID_IHXLoadBalancedListen: * * {00000110-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXLoadBalancedListen, 0x00000110, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXLoadBalancedListenDECLARE_INTERFACE_(IHXLoadBalancedListen, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXLoadBalancedListen methods */ /************************************************************************ * Method: * IHXLoadBalancedListen::SetID * Purpose: * This function set's the unique ID for this listen socket. This * ID is used to determine whether or not different instances of * a plugin trying to listen on a single port are actually the * same plugin. Without this function, it would be possible for * two completely different plugins to listen on the same port using * the load balanced listener. */ STDMETHOD(SetID) (THIS_ REFIID ID) PURE; /************************************************************************ * Method: * IHXLoadBalancedListen::SetReserveLimit * Purpose: * Sets the reserve limit for descriptors / sockets. If less * than reserve limit descriptors / sockets are left then a new * instance of the plugin will be created. */ STDMETHOD(SetReserveLimit) (THIS_ UINT32 ulDescriptors, UINT32 ulSockets) PURE;};/**************************************************************************** * * Interface: * * IHXOverrideDefaultServices * * Purpose: * * This interface is queried off of the context. It allows * a plugin to override any default services provided by the G2 system. * Currently, it is supported only on the client side. * You may currently override IHXNetworkServices using this interface * You can use the same interface to later restore back the overriden services. * This is done by calling the same OverrideServices() function with the * original service QIed before the initial override. * * IID_IHXOverrideDefaultServices: * * {00000111-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXOverrideDefaultServices, 0x00000111, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXOverrideDefaultServicesDECLARE_INTERFACE_(IHXOverrideDefaultServices, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXOverrideDefaultServices methods */ /************************************************************************ * Method: * IHXOverrideDefaultServices::OverrideServices * Purpose: * Override default services provided by the G2 system. * */ STDMETHOD(OverrideServices) (THIS_ IUnknown* pContext) PURE;};typedef enum _HX_SOCKET_OPTION{ HX_SOCKOPT_REUSE_ADDR, HX_SOCKOPT_REUSE_PORT, HX_SOCKOPT_BROADCAST, HX_SOCKOPT_SET_RECVBUF_SIZE, HX_SOCKOPT_SET_SENDBUF_SIZE, HX_SOCKOPT_MULTICAST_IF, HX_SOCKOPT_IP_TOS} HX_SOCKET_OPTION;/**************************************************************************** * * Interface: * * IHXSetSocketOption * * Purpose: * * Set sockt option * * IID_IHXSetSocketOption: * * IID_IHXSetSocketOption: {00000114-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXSetSocketOption, 0x00000114, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXSetSocketOptionDECLARE_INTERFACE_(IHXSetSocketOption, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXListenSocket methods */ STDMETHOD(SetOption) (THIS_ HX_SOCKET_OPTION option, UINT32 ulValue) PURE; };#define HX_THREADSAFE_METHOD_FF_GETPACKET 0x00000001/* * FileFormat::GetPacket() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * FS->Read(), FS->Close(), FS->Seek(), * FFR->PacketReady(), FFR->StreamDone() * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_FS_READ 0x00000002/* * FileSystem::Read()/Seek()/Close() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * FS->Read(), FS->Close(), FS->Seek(), * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_FSR_READDONE 0x00000004/* * FileFormat::ReadDone()/SeekDone()/CloseDone() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * FS->Read(), FS->Close(), FS->Seek(), * FFR->PacketReady(), FFR->StreamDone() * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_CACHE_FILE 0x00000008/* * FileSystem::Read()/Seek()/Close() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * FS->Read(), FS->Close(), FS->Seek(), * IHXCacheFile->*, IHXCacheFileResponse->*, * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_CACHE_FILE_RESPONSE 0x00000010/* * FileSystem::Read()/Seek()/Close() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * FS->Read(), FS->Close(), FS->Seek(), * IHXCacheFile->*, IHXCacheFileResponse->*, * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW *//* * Thread Safe flags for IHXDataConvert */#define HX_THREADSAFE_METHOD_CONVERT_HEADERS 0x00000020/* * IHXDataConvert::ConvertXXX()/CtrlBufferReady() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * IHXDataConvertResponse->* * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_CONVERT_DATA 0x00000040/* * IHXDataConvert::ConvertXXX()/CtrlBufferReady() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * IHXDataConvertResponse->* * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_CONVERT_CTRL_BUFFER_READY 0x00000080/* * IHXDataConvert::ConvertXXX()/CtrlBufferReady() only calls: * CCF->CI(Buffer), CCF->CI(Packet), CCF->CI(Values), *Alloc, *Free, * IHXDataConvertResponse->* * Context->Scheduler->*, * CCF->CI(Mutex), Mutex->* * Context->ErrorMessages * * XXXSMPNOW */#define HX_THREADSAFE_METHOD_SOCKET_READDONE 0x00000100#define HX_THREADSAFE_METHOD_ALL (~0)/**************************************************************************** * * Interface: * * IHXThreadSafeMethods * * Purpose: * * XXXSMPNOW * * IID_IHXThreadSafeMethods: * * {00000115-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXThreadSafeMethods, 0x00000115, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXThreadSafeMethodsDECLARE_INTERFACE_(IHXThreadSafeMethods, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXThreadSafeMethods methods */ /************************************************************************ * Method: * IHXThreadSafeMethods::IsThreadSafe * Purpose: * XXXSMPNOW */ STDMETHOD_(UINT32,IsThreadSafe) (THIS) PURE;};/**************************************************************************** * * Interface: * * IHXMutex * * Purpose: * * XXXSMPNOW * * IID_IHXMutex: * * {00000116-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXMutex, 0x00000116, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXMutex/* * The IHXCommonClassFactory supports creating an instance * of this object. */#define CLSID_IHXMutex IID_IHXMutexDECLARE_INTERFACE_(IHXMutex, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXMutex methods */ /* XXXSMPNOW Comments */ STDMETHOD(Lock) (THIS) PURE; STDMETHOD(TryLock) (THIS) PURE; STDMETHOD(Unlock) (THIS) PURE;};// $Private:/**************************************************************************** * * Interface: * * IHXFastPathNetWrite * * Purpose: * * Private interface for high speed UDP output. * * IID_IHXFastPathNetWrite: * * {00000117-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXFastPathNetWrite, 0x00000117, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXFastPathNetWriteDECLARE_INTERFACE_(IHXFastPathNetWrite, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXFastPathNetWrite methods * */ STDMETHOD(FastWrite) (THIS_ const UINT8* pBuffer, UINT32 ulLen) PURE;};/**************************************************************************** * * Interface: * * IHXWouldBlockResponse * * Purpose: * * Get notifications of EWOULDBLOCK conditions. * * IID_IHXWouldBlockResponse: * * {00000118-0901-11d1-8B06-00A024406D59} * */DEFINE_GUID(IID_IHXWouldBlockResponse, 0x00000118, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);#undef INTERFACE#define INTERFACE IHXWouldBlockResponseDECLARE_INTERFACE_(IHXWouldBlockResponse, IUnknown){ /* * IUnknown methods */ STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE; STDMETHOD_(ULONG32,AddRef) (THIS) PURE; STDMETHOD_(ULONG32,Release) (THIS) PURE; /* * IHXWouldBlockResponse methods * */ /* * WouldBlock * * Return HXR_OK to go into blocked mode, causing a future * WouldBlockCleared call. HXR_anythingelse to ignore. */ STDMETHOD(WouldBlock) (THIS_ UINT32 id) PURE; STDMETHOD(WouldBlockCleared)(THIS_ UINT32 id) PURE;};/**************************************************************************** * * Interface: * * IHXWouldBlock
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -