Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

71 lines
1.6 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000.
//
// File: R E C E I V E D A T A . H
//
// Contents: Queue of received data from network
//
// Notes:
//
// Author: mbend 17 Dec 2000
//
//----------------------------------------------------------------------------
#pragma once
#include "upsync.h"
#include "winsock2.h"
class CReceiveDataManager;
class CReceiveData
{
private:
friend class CReceiveDataManager;
CReceiveData(char * szData, SOCKET sock, BOOL fIsTcpSocket, BOOL fMCast, SOCKADDR_IN * psockAddrInRemote);
~CReceiveData();
CReceiveData(const CReceiveData &);
CReceiveData & operator=(const CReceiveData &);
CReceiveData * m_pNext;
char * m_szData;
SOCKET m_sock;
SOCKADDR_IN m_sockAddrInRemote;
BOOL m_fIsTcpSocket;
BOOL m_fMCast;
};
class CReceiveDataManager
{
public:
~CReceiveDataManager();
static CReceiveDataManager & Instance();
HRESULT HrAddData(char * szData, SOCKET sock, BOOL fMCast, SOCKADDR_IN * psockAddrInRemote);
HRESULT HrInitialize();
HRESULT HrShutdown();
private:
CReceiveDataManager();
CReceiveDataManager(const CReceiveDataManager &);
CReceiveDataManager & operator=(const CReceiveDataManager &);
static CReceiveDataManager s_instance;
static DWORD WINAPI ThreadFunc(void *);
DWORD ThreadMember();
void ProcessReceiveBuffer(CReceiveData * pData);
CUCriticalSection m_critSec;
CReceiveData * m_pHead;
CReceiveData * m_pTail;
HANDLE m_hEventShutdown;
HANDLE m_hEventWork;
HANDLE m_hThread;
};