#include "stdafx.h"
|
#include "HsmsAction.h"
|
|
|
CHsmsAction::CHsmsAction()
|
{
|
m_nAction = ACTION_IDLE;
|
m_bNeedWaitReply = FALSE;
|
m_nTimeout = 45;
|
m_nResponseTime = 0;
|
m_pContext = NULL;
|
m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
|
}
|
|
CHsmsAction::CHsmsAction(int nAction, BOOL bNeedReply, unsigned int nTimeout)
|
{
|
m_nAction = nAction;
|
m_bNeedWaitReply = bNeedReply;
|
m_nTimeout = nTimeout;
|
m_nResponseTime = 0;
|
m_pContext = NULL;
|
m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
|
}
|
|
CHsmsAction::~CHsmsAction()
|
{
|
if (m_hEvent != NULL) {
|
CloseHandle(m_hEvent);
|
m_hEvent = NULL;
|
}
|
|
if (m_pSendMessage != NULL) {
|
HSMS_Destroy1Message(m_pSendMessage);
|
m_pSendMessage = NULL;
|
}
|
}
|
|
void CHsmsAction::reset()
|
{
|
m_nAction = ACTION_IDLE;
|
m_bNeedWaitReply = FALSE;
|
m_nTimeout = 45;
|
m_nResponseTime = 0;
|
::ResetEvent(m_hEvent);
|
}
|
|
void CHsmsAction::resetResponseTime()
|
{
|
m_nResponseTime = 0;
|
}
|
|
void CHsmsAction::setAction(int nAction, BOOL bNeedReply/* = TRUE*/, unsigned int nTimeout/* = 45*/)
|
{
|
m_nAction = nAction;
|
m_bNeedWaitReply = bNeedReply;
|
m_nTimeout = nTimeout;
|
}
|
|
int CHsmsAction::getAction()
|
{
|
return m_nAction;
|
}
|
|
void CHsmsAction::setContext(CContext* pContext)
|
{
|
m_pContext = pContext;
|
}
|
|
CContext* CHsmsAction::getContext()
|
{
|
return m_pContext;
|
}
|
|
void CHsmsAction::setSendMessage(IMessage* pMessage)
|
{
|
m_pSendMessage = pMessage;
|
}
|
|
IMessage* CHsmsAction::getSendMessage()
|
{
|
return m_pSendMessage;
|
}
|
|
unsigned int CHsmsAction::getTimeout()
|
{
|
return m_nTimeout;
|
}
|
|
BOOL CHsmsAction::isNeedWaitReply()
|
{
|
return m_bNeedWaitReply;
|
}
|
|
HANDLE CHsmsAction::getEvent()
|
{
|
return m_hEvent;
|
}
|
|
int CHsmsAction::responseTimeIncrement()
|
{
|
return InterlockedIncrement(&m_nResponseTime);
|
}
|
|
BOOL CHsmsAction::incrementAndCheckTimeout()
|
{
|
unsigned int nResponseTime = InterlockedIncrement(&m_nResponseTime);
|
return nResponseTime >= m_nTimeout;
|
}
|