#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; }