darker
2025-02-17 dd25d842b508e836e73b38c5970dbd276bac6fa5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#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;
}