📄 hxengin.h
字号:
STDMETHOD(Shutdown) (THIS) PURE;
STDMETHOD(PostConnect) (THIS_
LONG32 nSocketNumber) PURE;
STDMETHOD_(LONG32, Read) (THIS_
LONG32 nSocketNumber,
void* buff,
LONG32 buffLen) PURE;
STDMETHOD_(LONG32, Write) (THIS_
LONG32 nSocketNumber,
void* buff,
LONG32 buffLen) PURE;
STDMETHOD(Close) (THIS_
LONG32 nSocketNumber) PURE;
STDMETHOD(SetCallbacks) (THIS_
void* readCallback,
void* writeCallback,
void* closeCallback) PURE;
};
// $EndPrivate.
// $Private:
/****************************************************************************
*
* Interface:
*
* IHXBufferedSocket
*
* Purpose:
*
* This provdies a method for doing for doing more optimal
* TCP delivery using desired packet size and writev.
*
* IID_IHXTCPSocket:
*
* {00001402-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXBufferedSocket,
0x00001402, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXBufferedSocket
DECLARE_INTERFACE_(IHXBufferedSocket, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXTCPSocket methods
*/
STDMETHOD(BufferedWrite) (THIS_
IHXBuffer* pBuffer) PURE;
STDMETHOD(FlushWrite) (THIS) PURE;
STDMETHOD(SetDesiredPacketSize) (THIS_
UINT32 ulPacketSize) PURE;
};
// $EndPrivate.
/****************************************************************************
*
* Interface:
*
* IHXListenResponse
*
* Purpose:
*
* This is the response interface for the asynchronous TCP listening
* socket interface.
*
* IID_IHXListenResponse:
*
* {00000104-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXListenResponse, 0x00000104, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXListenResponse
DECLARE_INTERFACE_(IHXListenResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXListenResponse methods
*/
STDMETHOD(NewConnection) (THIS_
HX_RESULT status,
IHXTCPSocket* pTCPSocket) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXListenSocket
*
* Purpose:
*
* This interfaces allows you to asynchronously listen on a port for
* TCP connections.
*
* IID_IHXListenSocket:
*
* {00000105-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXListenSocket, 0x00000105, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXListenSocket
DECLARE_INTERFACE_(IHXListenSocket, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXListenSocket methods
*/
STDMETHOD(Init) (THIS_
UINT32 ulLocalAddr,
UINT16 port,
IHXListenResponse* /*IN*/ pListenResponse
) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXNetworkServices
*
* Purpose:
*
* This is a factory interface for the various types of networking
* interfaces described above.
*
* IID_IHXNetworkServices:
*
* {00000106-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXNetworkServices, 0x00000106, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXNetworkServices
DECLARE_INTERFACE_(IHXNetworkServices, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXNetworkServices methods
*/
/************************************************************************
* Method:
* IHXNetworkServices::CreateTCPSocket
* Purpose:
* Create a new TCP socket.
*/
STDMETHOD(CreateTCPSocket) (THIS_
IHXTCPSocket** /*OUT*/ ppTCPSocket) PURE;
/************************************************************************
* Method:
* IHXNetworkServices::CreateUDPSocket
* Purpose:
* Create a new UDP socket.
*/
STDMETHOD(CreateUDPSocket) (THIS_
IHXUDPSocket** /*OUT*/ ppUDPSocket) PURE;
/************************************************************************
* Method:
* IHXNetworkServices::CreateListenSocket
* Purpose:
* Create a new TCP socket that will listen for connections on a
* particular port.
*/
STDMETHOD(CreateListenSocket) (THIS_
IHXListenSocket** /*OUT*/ ppListenSocket
) PURE;
/************************************************************************
* Method:
* IHXNetworkServices::CreateResolver
* Purpose:
* Create a new resolver that can lookup host names
*/
STDMETHOD(CreateResolver) (THIS_
IHXResolver** /*OUT*/ ppResolver) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXNetworkServices2
*
* Purpose:
*
* This is a factory interface for the various types of networking
* interfaces described above.
*
* IID_IHXNetworkServices:
*
* {17951551-5683-11d3-B6BA-00C0F031C237}
*
*/
// {17951551-5683-11d3-B6BA-00C0F031C237}
DEFINE_GUID(IID_IHXNetworkServices2, 0x17951551, 0x5683, 0x11d3, 0xb6, 0xba, 0x0, 0xc0, 0xf0, 0x31, 0xc2, 0x37);
#undef INTERFACE
#define INTERFACE IHXNetworkServices2
DECLARE_INTERFACE_(IHXNetworkServices2, IHXNetworkServices)
{
/************************************************************************
* Method:
* IHXNetworkServices2::CreateLBoundTCPSocket
* Purpose:
* Create a new local bound TCP socket.
*/
STDMETHOD(CreateLBoundTCPSocket) (THIS_
IHXTCPSocket** /*OUT*/ ppTCPSocket) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXUDPResponse
*
* Purpose:
*
* This is the response interface for the asynchronous UDP networking
* interface.
*
* IID_IHXUDPResponse:
*
* {00000107-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXUDPResponse, 0x00000107, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXUDPResponse
DECLARE_INTERFACE_(IHXUDPResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXUDPResponse methods
*/
STDMETHOD(ReadDone) (THIS_
HX_RESULT status,
IHXBuffer* pBuffer,
ULONG32 ulAddr,
UINT16 nPort) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXUDPSocket
*
* Purpose:
*
* Provides the user with an asynchronous UDP networking interface.
*
* IID_IHXUDPSocket:
*
* {00000108-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXUDPSocket, 0x00000108, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXUDPSocket
DECLARE_INTERFACE_(IHXUDPSocket, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXUDPSocket methods
*
* Network addresses and ports are in native byte order
*/
STDMETHOD(Init) (THIS_
ULONG32 ulAddr,
UINT16 nPort,
IHXUDPResponse* pUDPResponse) PURE;
STDMETHOD(Bind) (THIS_
UINT32 ulLocalAddr,
UINT16 nPort) PURE;
STDMETHOD(Read) (THIS_
UINT16 Size) PURE;
STDMETHOD(Write) (THIS_
IHXBuffer* pBuffer) PURE;
STDMETHOD(WriteTo) (THIS_
ULONG32 ulAddr,
UINT16 nPort,
IHXBuffer* pBuffer) PURE;
STDMETHOD(GetLocalPort) (THIS_
REF(UINT16) port) PURE;
STDMETHOD(JoinMulticastGroup) (THIS_
ULONG32 ulMulticastAddr,
ULONG32 ulInterfaceAddr) PURE;
STDMETHOD(LeaveMulticastGroup) (THIS_
ULONG32 ulMulticastAddr,
ULONG32 ulInterfaceAddr) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXResolver
*
* Purpose:
*
* This interface allows you to asynchronously resolve hostnames.
*
* IID_IHXResolver:
*
* {00000109-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXResolver, 0x00000109, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXResolver
DECLARE_INTERFACE_(IHXResolver, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXResolver methods
*/
STDMETHOD(Init) (THIS_
IHXResolverResponse* pResponse) PURE;
STDMETHOD(GetHostByName) (THIS_
const char* pHostName) PURE;
};
/****************************************************************************
*
* Interface:
*
* IHXResolverResponse
*
* Purpose:
*
* This is the response interface for the asynchronous DNS hostname
* resolver.
*
* IID_IHXResolverResponse:
*
* {0000010A-0901-11d1-8B06-00A024406D59}
*
*/
DEFINE_GUID(IID_IHXResolverResponse, 0x0000010A, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
0xa0, 0x24, 0x40, 0x6d, 0x59);
#undef INTERFACE
#define INTERFACE IHXResolverResponse
DECLARE_INTERFACE_(IHXResolverResponse, IUnknown)
{
/*
* IUnknown methods
*/
STDMETHOD(QueryInterface) (THIS_
REFIID riid,
void** ppvObj) PURE;
STDMETHOD_(ULONG32,AddRef) (THIS) PURE;
STDMETHOD_(ULONG32,Release) (THIS) PURE;
/*
* IHXResolverResponse methods
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -