📄 queueserviceevent.cpp
字号:
// ***************************************************************
// QueueServiceEvent version: 1.0
// -------------------------------------------------------------
// File Name: QueueServiceEvent.cpp
// Created: 2007/07/18
// Modified: 2007/07/18 16:43
// Author: William.Liang
// Msn: lwq49@msn.com
// Email: lwq49@21cn.com, lwq49@msn.com
// Description:
//
// Purpose:
// -------------------------------------------------------------
// license:
//
// The contents of this file are subject to the Mozilla Public
// License Version 1.1 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy
// of the License at http://www.mozilla.org/MPL/ Software dis-
// tributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or im-
// plied. See the License for the specific language governing
// rights and limitations under the License.
//
// The Initial Developer of the Original Code is William.Liang .
// Copyright (C) 2007 - All Rights Reserved.
// ***************************************************************
#include "StdAfx.h"
#include "QueueServiceEvent.h"
//************************************
// <p>Description: 构造函数</p>
//************************************
CQueueServiceEvent::CQueueServiceEvent()
{
m_pIQueueService=NULL;
}
//************************************
// <p>Description: 析构函数</p>
//************************************
CQueueServiceEvent::~CQueueServiceEvent()
{
}
//************************************
// <p>Description: 设置接口</p>
// <p>Parameters: </p>
// <p> IUnknownEx * pIUnknownEx</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::SetQueueService(IUnknownEx * pIUnknownEx)
{
_ASSERT(pIUnknownEx!=NULL);
m_pIQueueService=GET_OBJECTPTR_INTERFACE(pIUnknownEx,IQueueService);
_ASSERT(m_pIQueueService!=NULL);
return (m_pIQueueService!=NULL);
}
//************************************
// <p>Description: 获取接口</p>
// <p>Parameters: </p>
// <p> const IID & Guid</p>
// <p> DWORD dwQueryVer</p>
//
// <p>Returns: void *</p>
//************************************
void * CQueueServiceEvent::GetQueueService(const IID & Guid, DWORD dwQueryVer)
{
if (m_pIQueueService==NULL) return NULL;
return m_pIQueueService->QueryInterface(Guid,dwQueryVer);
}
//************************************
// <p>Description: 是否有效</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::IsValid()
{
return (m_pIQueueService!=NULL);
}
//************************************
// <p>Description: 定时器事件</p>
// <p>Parameters: </p>
// <p> WORD wTimerID</p>
// <p> WPARAM wBindParam</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::PostTimerEvent(WORD wTimerID, WPARAM wBindParam)
{
//效验参数
_ASSERT(m_pIQueueService!=NULL);
if (m_pIQueueService==NULL) return false;
//投递消息
NTY_TimerEvent * pTimerEvent=(NTY_TimerEvent *)m_cbBuffer;
pTimerEvent->wTimerID=wTimerID;
pTimerEvent->wBindParam=wBindParam;
m_pIQueueService->AddToQueue(EVENT_TIMER,m_cbBuffer,sizeof(NTY_TimerEvent));
return true;
}
//************************************
// <p>Description: 动作事件</p>
// <p>Parameters: </p>
// <p> IGameObject * pIGameObject</p>
// <p> WORD wActionID</p>
// <p> DWORD dwRepeatTimes</p>
// <p> WPARAM wBindParam</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::PostActionEvent(IGameObject* pIGameObject, WORD wActionID, DWORD dwRepeatTimes, WPARAM wBindParam){
//效验参数
_ASSERT(m_pIQueueService!=NULL);
if (m_pIQueueService==NULL) return false;
//投递消息
NTY_ActionEvent * pActionEvent=(NTY_ActionEvent *)m_cbBuffer;
pActionEvent->pIGameObject = pIGameObject;
pActionEvent->wActionID = wActionID;
pActionEvent->dwRepeatTimes = dwRepeatTimes;
pActionEvent->wBindParam = wBindParam;
m_pIQueueService->AddToQueue(EVENT_ACTION,m_cbBuffer,sizeof(NTY_ActionEvent));
return true;
}
//************************************
// <p>Description: 数据库事件</p>
// <p>Parameters: </p>
// <p> WORD wRequestID</p>
// <p> WORD wIndex</p>
// <p> WORD wRoundID</p>
// <p> const void * pDataBuffer</p>
// <p> WORD wDataSize</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::PostDataBaseEvent(WORD wRequestID, WORD wIndex, WORD wRoundID, const void * pDataBuffer, WORD wDataSize)
{
//效验参数
_ASSERT(m_pIQueueService!=NULL);
_ASSERT((wDataSize+sizeof(NTY_DataBaseEvent))<=MAX_QUEUE_PACKET);
if (m_pIQueueService==NULL) return false;
if ((wDataSize+sizeof(NTY_DataBaseEvent))>MAX_QUEUE_PACKET) return false;
//投递消息
NTY_DataBaseEvent * pDataBaseEvent=(NTY_DataBaseEvent *)m_cbBuffer;
pDataBaseEvent->wIndex=wIndex;
pDataBaseEvent->wRequestID=wRequestID;
pDataBaseEvent->wRoundID=wRoundID;
if (wDataSize>0)
{
_ASSERT(pDataBuffer!=NULL);
CopyMemory(m_cbBuffer+sizeof(NTY_DataBaseEvent),pDataBuffer,wDataSize);
}
m_pIQueueService->AddToQueue(EVENT_DATABASE,m_cbBuffer,sizeof(NTY_DataBaseEvent)+wDataSize);
return true;
}
//************************************
// <p>Description: 网络应答事件</p>
// <p>Parameters: </p>
// <p> WORD wIndex</p>
// <p> WORD wRoundID</p>
// <p> DWORD dwClientIP</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::PostSocketAcceptEvent(WORD wIndex, WORD wRoundID, DWORD dwClientIP)
{
//效验参数
_ASSERT(m_pIQueueService!=NULL);
if (m_pIQueueService==NULL) return false;
//投递消息
NTY_SocketAcceptEvent * pSocketAcceptEvent=(NTY_SocketAcceptEvent *)m_cbBuffer;
pSocketAcceptEvent->wIndex=wIndex;
pSocketAcceptEvent->wRoundID=wRoundID;
pSocketAcceptEvent->dwClientIP=dwClientIP;
m_pIQueueService->AddToQueue(EVENT_SOCKET_ACCEPT,m_cbBuffer,sizeof(NTY_SocketAcceptEvent));
return true;
}
//************************************
// <p>Description: 网络读取事件</p>
// <p>Parameters: </p>
// <p> WORD wIndex</p>
// <p> WORD wRoundID</p>
// <p> CMD_Command Command</p>
// <p> const void * pDataBuffer</p>
// <p> WORD wDataSize</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::PostSocketReadEvent(WORD wIndex, WORD wRoundID, CMD_Command Command, const void * pDataBuffer, WORD wDataSize)
{
//效验参数
_ASSERT(m_pIQueueService!=NULL);
_ASSERT((wDataSize+sizeof(NTY_SocketReadEvent))<=MAX_QUEUE_PACKET);
if (m_pIQueueService==NULL) return false;
if ((wDataSize+sizeof(NTY_SocketReadEvent))>MAX_QUEUE_PACKET) return false;
//投递消息
NTY_SocketReadEvent * pSocketReadEvent=(NTY_SocketReadEvent *)m_cbBuffer;
pSocketReadEvent->wIndex=wIndex;
pSocketReadEvent->wRoundID=wRoundID;
pSocketReadEvent->Command=Command;
pSocketReadEvent->wDataSize=wDataSize;
if (wDataSize>0)
{
_ASSERT(pDataBuffer!=NULL);
CopyMemory(m_cbBuffer+sizeof(NTY_SocketReadEvent),pDataBuffer,wDataSize);
}
m_pIQueueService->AddToQueue(EVENT_SOCKET_READ,m_cbBuffer,sizeof(NTY_SocketReadEvent)+wDataSize);
return false;
}
//************************************
// <p>Description: 网络关闭事件</p>
// <p>Parameters: </p>
// <p> WORD wIndex</p>
// <p> WORD wRoundID</p>
// <p> DWORD dwClientIP</p>
// <p> DWORD dwConnectSecond</p>
//
// <p>Returns: bool</p>
//************************************
bool CQueueServiceEvent::PostSocketCloseEvent(WORD wIndex, WORD wRoundID, DWORD dwClientIP, DWORD dwConnectSecond)
{
//效验参数
_ASSERT(m_pIQueueService!=NULL);
if (m_pIQueueService==NULL) return false;
//投递消息
NTY_SocketCloseEvent * pSocketCloseEvent=(NTY_SocketCloseEvent *)m_cbBuffer;
pSocketCloseEvent->wIndex=wIndex;
pSocketCloseEvent->wRoundID=wRoundID;
pSocketCloseEvent->dwClientIP=dwClientIP;
pSocketCloseEvent->dwConnectSecond=dwConnectSecond;
m_pIQueueService->AddToQueue(EVENT_SOCKET_CLOSE,m_cbBuffer,sizeof(NTY_SocketCloseEvent));
return true;
}
//网络连接事件
bool CQueueServiceEvent::PostSocketConnectEvent(int iErrorCode, LPCTSTR szErrorDesc){
//效验参数
_ASSERT(m_pIQueueService!=NULL);
_ASSERT((sizeof(NTY_SocketConnectEvent))<=MAX_QUEUE_PACKET);
if (m_pIQueueService==NULL) return false;
if ((sizeof(NTY_SocketConnectEvent))>MAX_QUEUE_PACKET) return false;
NTY_SocketConnectEvent* pSocketConnectEvent=(NTY_SocketConnectEvent*)m_cbBuffer;
pSocketConnectEvent->iErrorCode = iErrorCode;
CopyMemory(pSocketConnectEvent->szErrorDesc,szErrorDesc,128);
m_pIQueueService->AddToQueue(EVENT_CLIENT_SOCKET_CONNECT,m_cbBuffer,sizeof(NTY_SocketConnectEvent));
return true;
}
//网络读取事件
bool CQueueServiceEvent::PostSocketReadEvent(CMD_Command Command, const void * pDataBuffer, WORD wDataSize){
//效验参数
_ASSERT(m_pIQueueService!=NULL);
_ASSERT((wDataSize+sizeof(NTY_SocketReadEvent))<=MAX_QUEUE_PACKET);
if (m_pIQueueService==NULL) return false;
if ((wDataSize+sizeof(NTY_SocketReadEvent))>MAX_QUEUE_PACKET) return false;
//投递消息
NTY_SocketReadEvent * pSocketReadEvent=(NTY_SocketReadEvent *)m_cbBuffer;
pSocketReadEvent->Command=Command;
pSocketReadEvent->wDataSize=wDataSize;
if (wDataSize>0)
{
_ASSERT(pDataBuffer!=NULL);
CopyMemory(m_cbBuffer+sizeof(NTY_SocketReadEvent),pDataBuffer,wDataSize);
}
m_pIQueueService->AddToQueue(EVENT_CLIENT_SOCKET_READ,m_cbBuffer,sizeof(NTY_SocketReadEvent)+wDataSize);
return true;
}
//网络关闭事件
bool CQueueServiceEvent::PostSocketCloseEvent(){
//效验参数
_ASSERT(m_pIQueueService!=NULL);
if (m_pIQueueService==NULL) return false;
m_pIQueueService->AddToQueue(EVENT_CLIENT_SOCKET_CLOSE, NULL, 0);
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -