| | |
| | | m_nTimeout = 45; |
| | | m_nResponseTime = 0; |
| | | m_pContext = NULL; |
| | | m_pSendMessage = NULL; |
| | | m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); |
| | | } |
| | | |
| | |
| | | m_nTimeout = nTimeout; |
| | | m_nResponseTime = 0; |
| | | m_pContext = NULL; |
| | | m_pSendMessage = NULL; |
| | | m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); |
| | | } |
| | | |
| | |
| | | m_bNeedWaitReply = FALSE; |
| | | m_nTimeout = 45; |
| | | m_nResponseTime = 0; |
| | | if (m_pSendMessage != NULL) { |
| | | HSMS_Destroy1Message(m_pSendMessage); |
| | | m_pSendMessage = NULL; |
| | | } |
| | | ::ResetEvent(m_hEvent); |
| | | } |
| | | |
| | |
| | | |
| | | void CHsmsAction::setSendMessage(IMessage* pMessage) |
| | | { |
| | | if (m_pSendMessage != NULL && m_pSendMessage != pMessage) { |
| | | HSMS_Destroy1Message(m_pSendMessage); |
| | | } |
| | | m_pSendMessage = pMessage; |
| | | } |
| | | |
| | |
| | | BOOL CHsmsAction::incrementAndCheckTimeout() |
| | | { |
| | | unsigned int nResponseTime = InterlockedIncrement(&m_nResponseTime); |
| | | return nResponseTime >= m_nTimeout; |
| | | return nResponseTime >= m_nTimeout + 1; |
| | | } |
| | | |
| | | int CHsmsAction::serialize(char* pszBuffer, int nBufferSize) |
| | | { |
| | | int index = 0; |
| | | if (m_pSendMessage == NULL) { |
| | | return 0; |
| | | } |
| | | if (pszBuffer == nullptr) { |
| | | index += sizeof(int); |
| | | index += sizeof(m_nTimeout); |
| | | index += sizeof(int); |
| | | index += sizeof(BOOL); |
| | | index += m_pSendMessage->serialize(pszBuffer, nBufferSize); |
| | | index += m_pSendMessage->serialize(nullptr, 0); |
| | | |
| | | return index; |
| | | } |
| | |
| | | memcpy(&m_bNeedWaitReply, &pszBuffer[index], sizeof(BOOL)); |
| | | index += sizeof(BOOL); |
| | | |
| | | HSMS_Create1Message(m_pSendMessage, 1, 1 | REPLY, 1, 1); |
| | | if (m_pSendMessage != NULL) { |
| | | HSMS_Destroy1Message(m_pSendMessage); |
| | | m_pSendMessage = NULL; |
| | | } |
| | | if (HSMS_Create1Message(m_pSendMessage, 1, 1 | REPLY, 1, 1) != 0 || m_pSendMessage == NULL) { |
| | | return -1; |
| | | } |
| | | int nRet = m_pSendMessage->unserialize(&pszBuffer[index], nBufferSize - index); |
| | | if (nRet < 0) return nRet; |
| | | |