1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#ifndef __XNLINKINPUTDATAENDPOINT_H__
#define __XNLINKINPUTDATAENDPOINT_H__
#include "IAsyncInputConnection.h"
#include "IConnection.h"
#include <XnOSCpp.h>
struct XnDumpFile;
namespace xn
{
class IConnectionFactory;
class LinkInputStreamsMgr;
class ILinkDataEndpointNotifications
{
public:
virtual ~ILinkDataEndpointNotifications() {}
virtual void HandleLinkDataEndpointDisconnection(XnUInt16 nEndpointID) = 0;
};
class LinkInputDataEndpoint : public IDataDestination, public IConnection
{
public:
LinkInputDataEndpoint();
virtual ~LinkInputDataEndpoint();
XnStatus Init(XnUInt16 nEndpointID,
IConnectionFactory* pConnectionFactory,
LinkInputStreamsMgr* pLinkInputStreamsMgr,
ILinkDataEndpointNotifications* pNotifications);
XnBool IsInitialized() const;
void Shutdown();
XnStatus Connect();
void Disconnect();
XnBool IsConnected() const;
XnUInt16 GetMaxPacketSize() const;
/* IDataDestination Implementation */
virtual XnStatus IncomingData(const void* pData, XnUInt32 nSize);
virtual void HandleDisconnection();
private:
XnUInt16 m_nEndpointID;
LinkInputStreamsMgr* m_pLinkInputStreamsMgr;
ILinkDataEndpointNotifications* m_pNotifications;
IAsyncInputConnection* m_pConnection;
IConnectionFactory* m_pConnectionFactory;
XnBool m_bInitialized;
volatile XnUInt32 m_nConnected;
XN_CRITICAL_SECTION_HANDLE m_hCriticalSection;
XnDumpFile* m_pDumpFile;
};
}
#endif // __XNLINKINPUTDATAENDPOINT_H__
|