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.
194 lines
4.5 KiB
194 lines
4.5 KiB
/*==========================================================================
|
|
*
|
|
* Copyright (C) 2000 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: QueuedMsg.h
|
|
* Content: Queued Message Object Header File
|
|
*@@BEGIN_MSINTERNAL
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 07/31/00 mjn Created
|
|
* 09/12/00 mjn Added m_OpType
|
|
*@@END_MSINTERNAL
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef __QUEUED_MSG_H__
|
|
#define __QUEUED_MSG_H__
|
|
|
|
//**********************************************************************
|
|
// Constant definitions
|
|
//**********************************************************************
|
|
|
|
#define QUEUED_MSG_FLAG_VOICE 0x0001
|
|
|
|
//**********************************************************************
|
|
// Macro definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Structure definitions
|
|
//**********************************************************************
|
|
|
|
typedef enum
|
|
{
|
|
UNKNOWN,
|
|
RECEIVE,
|
|
ADD_PLAYER_TO_GROUP,
|
|
REMOVE_PLAYER_FROM_GROUP,
|
|
UPDATE_INFO
|
|
} QUEUED_MSG_TYPE;
|
|
|
|
class CAsyncOp;
|
|
|
|
typedef struct _DIRECTNETOBJECT DIRECTNETOBJECT;
|
|
|
|
//**********************************************************************
|
|
// Variable definitions
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Function prototypes
|
|
//**********************************************************************
|
|
|
|
//**********************************************************************
|
|
// Class prototypes
|
|
//**********************************************************************
|
|
|
|
// class for Queued Messages
|
|
|
|
class CQueuedMsg
|
|
{
|
|
public:
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CQueuedMsg::FPMAlloc"
|
|
static BOOL FPMAlloc( void* pvItem, void* pvContext )
|
|
{
|
|
CQueuedMsg* pQueuedMsg = (CQueuedMsg*)pvItem;
|
|
|
|
pQueuedMsg->m_Sig[0] = 'Q';
|
|
pQueuedMsg->m_Sig[1] = 'M';
|
|
pQueuedMsg->m_Sig[2] = 'S';
|
|
pQueuedMsg->m_Sig[3] = 'G';
|
|
|
|
pQueuedMsg->m_bilinkQueuedMsgs.Initialize();
|
|
|
|
return(TRUE);
|
|
};
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CQueuedMsg::FPMInitialize"
|
|
static void FPMInitialize( void* pvItem, void* pvContext )
|
|
{
|
|
CQueuedMsg* pQueuedMsg = (CQueuedMsg*)pvItem;
|
|
|
|
pQueuedMsg->m_pdnObject = static_cast<DIRECTNETOBJECT*>(pvContext);
|
|
|
|
pQueuedMsg->m_OpType = UNKNOWN;
|
|
pQueuedMsg->m_dwFlags = 0;
|
|
pQueuedMsg->m_pBuffer = NULL;
|
|
pQueuedMsg->m_dwBufferSize = 0;
|
|
pQueuedMsg->m_hCompletionOp = 0;
|
|
pQueuedMsg->m_pAsyncOp = NULL;
|
|
|
|
DNASSERT(pQueuedMsg->m_bilinkQueuedMsgs.IsEmpty());
|
|
};
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CQueuedMsg::FPMRelease"
|
|
static void FPMRelease(void* pvItem)
|
|
{
|
|
const CQueuedMsg* pQueuedMsg = (CQueuedMsg*)pvItem;
|
|
|
|
DNASSERT(pQueuedMsg->m_bilinkQueuedMsgs.IsEmpty());
|
|
};
|
|
|
|
void ReturnSelfToPool( void )
|
|
{
|
|
g_QueuedMsgPool.Release( this );
|
|
};
|
|
|
|
void SetOpType( const QUEUED_MSG_TYPE OpType )
|
|
{
|
|
m_OpType = OpType;
|
|
};
|
|
|
|
QUEUED_MSG_TYPE GetOpType( void ) const
|
|
{
|
|
return( m_OpType );
|
|
};
|
|
|
|
#ifndef DPNBUILD_NOVOICE
|
|
void MakeVoiceMessage( void )
|
|
{
|
|
m_dwFlags |= QUEUED_MSG_FLAG_VOICE;
|
|
};
|
|
|
|
BOOL IsVoiceMessage( void ) const
|
|
{
|
|
if (m_dwFlags & QUEUED_MSG_FLAG_VOICE)
|
|
{
|
|
return( TRUE );
|
|
}
|
|
return( FALSE );
|
|
};
|
|
#endif // DPNBUILD_NOVOICE
|
|
|
|
void SetBuffer( BYTE *const pBuffer )
|
|
{
|
|
m_pBuffer = pBuffer;
|
|
};
|
|
|
|
BYTE *GetBuffer( void )
|
|
{
|
|
return( m_pBuffer );
|
|
};
|
|
|
|
void SetBufferSize( const DWORD dwBufferSize )
|
|
{
|
|
m_dwBufferSize = dwBufferSize;
|
|
};
|
|
|
|
DWORD GetBufferSize( void ) const
|
|
{
|
|
return( m_dwBufferSize );
|
|
};
|
|
|
|
void SetCompletionOp( const DPNHANDLE hCompletionOp)
|
|
{
|
|
m_hCompletionOp = hCompletionOp;
|
|
};
|
|
|
|
DPNHANDLE GetCompletionOp( void ) const
|
|
{
|
|
return( m_hCompletionOp );
|
|
};
|
|
|
|
void CQueuedMsg::SetAsyncOp( CAsyncOp *const pAsyncOp );
|
|
|
|
CAsyncOp *GetAsyncOp( void )
|
|
{
|
|
return( m_pAsyncOp );
|
|
};
|
|
|
|
CBilink m_bilinkQueuedMsgs;
|
|
|
|
private:
|
|
BYTE m_Sig[4]; // Signature
|
|
QUEUED_MSG_TYPE m_OpType;
|
|
DWORD volatile m_dwFlags;
|
|
|
|
BYTE *m_pBuffer;
|
|
DWORD m_dwBufferSize;
|
|
|
|
DPNHANDLE m_hCompletionOp;
|
|
|
|
CAsyncOp *m_pAsyncOp;
|
|
|
|
DIRECTNETOBJECT *m_pdnObject;
|
|
};
|
|
|
|
#undef DPF_MODNAME
|
|
|
|
#endif // __QUEUED_MSG_H__
|