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
109
110
111
112
113
114
115
116
117
118
119
120
|
/* Copyright (C) 2003 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
#define NDBCNTR_C
#include "Ndbcntr.hpp"
#include <ndb_limits.h>
#define DEBUG(x) { ndbout << "Ndbcntr::" << x << endl; }
void Ndbcntr::initData()
{
c_start.reset();
cmasterNodeId = 0;
cnoStartNodes = 0;
cnoWaitrep = 0;
// Records with constant sizes
ndbBlocksRec = new NdbBlocksRec[ZSIZE_NDB_BLOCKS_REC];
}//Ndbcntr::initData()
void Ndbcntr::initRecords()
{
// Records with dynamic sizes
}//Ndbcntr::initRecords()
Ndbcntr::Ndbcntr(Block_context& ctx):
SimulatedBlock(NDBCNTR, ctx),
cnoWaitrep6(0),
cnoWaitrep7(0),
c_stopRec(* this),
c_missra(* this)
{
BLOCK_CONSTRUCTOR(Ndbcntr);
// Transit signals
addRecSignal(GSN_CONTINUEB, &Ndbcntr::execCONTINUEB);
addRecSignal(GSN_READ_NODESCONF, &Ndbcntr::execREAD_NODESCONF);
addRecSignal(GSN_READ_NODESREF, &Ndbcntr::execREAD_NODESREF);
addRecSignal(GSN_CM_ADD_REP, &Ndbcntr::execCM_ADD_REP);
addRecSignal(GSN_CNTR_START_REQ, &Ndbcntr::execCNTR_START_REQ);
addRecSignal(GSN_CNTR_START_REF, &Ndbcntr::execCNTR_START_REF);
addRecSignal(GSN_CNTR_START_CONF, &Ndbcntr::execCNTR_START_CONF);
addRecSignal(GSN_CNTR_WAITREP, &Ndbcntr::execCNTR_WAITREP);
addRecSignal(GSN_CNTR_START_REP, &Ndbcntr::execCNTR_START_REP);
addRecSignal(GSN_API_START_REP, &Ndbcntr::execAPI_START_REP, true);
addRecSignal(GSN_NODE_FAILREP, &Ndbcntr::execNODE_FAILREP);
addRecSignal(GSN_SYSTEM_ERROR , &Ndbcntr::execSYSTEM_ERROR);
// Received signals
addRecSignal(GSN_DUMP_STATE_ORD, &Ndbcntr::execDUMP_STATE_ORD);
addRecSignal(GSN_READ_CONFIG_REQ, &Ndbcntr::execREAD_CONFIG_REQ);
addRecSignal(GSN_STTOR, &Ndbcntr::execSTTOR);
addRecSignal(GSN_TCSEIZECONF, &Ndbcntr::execTCSEIZECONF);
addRecSignal(GSN_TCSEIZEREF, &Ndbcntr::execTCSEIZEREF);
addRecSignal(GSN_TCRELEASECONF, &Ndbcntr::execTCRELEASECONF);
addRecSignal(GSN_TCRELEASEREF, &Ndbcntr::execTCRELEASEREF);
addRecSignal(GSN_TCKEYCONF, &Ndbcntr::execTCKEYCONF);
addRecSignal(GSN_TCKEYREF, &Ndbcntr::execTCKEYREF);
addRecSignal(GSN_TCROLLBACKREP, &Ndbcntr::execTCROLLBACKREP);
addRecSignal(GSN_GETGCICONF, &Ndbcntr::execGETGCICONF);
addRecSignal(GSN_DIH_RESTARTCONF, &Ndbcntr::execDIH_RESTARTCONF);
addRecSignal(GSN_DIH_RESTARTREF, &Ndbcntr::execDIH_RESTARTREF);
addRecSignal(GSN_CREATE_TABLE_REF, &Ndbcntr::execCREATE_TABLE_REF);
addRecSignal(GSN_CREATE_TABLE_CONF, &Ndbcntr::execCREATE_TABLE_CONF);
addRecSignal(GSN_NDB_STTORRY, &Ndbcntr::execNDB_STTORRY);
addRecSignal(GSN_NDB_STARTCONF, &Ndbcntr::execNDB_STARTCONF);
addRecSignal(GSN_READ_NODESREQ, &Ndbcntr::execREAD_NODESREQ);
addRecSignal(GSN_NDB_STARTREF, &Ndbcntr::execNDB_STARTREF);
addRecSignal(GSN_STOP_PERM_REF, &Ndbcntr::execSTOP_PERM_REF);
addRecSignal(GSN_STOP_PERM_CONF, &Ndbcntr::execSTOP_PERM_CONF);
addRecSignal(GSN_STOP_ME_REF, &Ndbcntr::execSTOP_ME_REF);
addRecSignal(GSN_STOP_ME_CONF, &Ndbcntr::execSTOP_ME_CONF);
addRecSignal(GSN_STOP_REQ, &Ndbcntr::execSTOP_REQ);
addRecSignal(GSN_STOP_CONF, &Ndbcntr::execSTOP_CONF);
addRecSignal(GSN_RESUME_REQ, &Ndbcntr::execRESUME_REQ);
addRecSignal(GSN_WAIT_GCP_REF, &Ndbcntr::execWAIT_GCP_REF);
addRecSignal(GSN_WAIT_GCP_CONF, &Ndbcntr::execWAIT_GCP_CONF);
addRecSignal(GSN_CHANGE_NODE_STATE_CONF,
&Ndbcntr::execCHANGE_NODE_STATE_CONF);
addRecSignal(GSN_ABORT_ALL_REF, &Ndbcntr::execABORT_ALL_REF);
addRecSignal(GSN_ABORT_ALL_CONF, &Ndbcntr::execABORT_ALL_CONF);
addRecSignal(GSN_START_ORD, &Ndbcntr::execSTART_ORD);
addRecSignal(GSN_STTORRY, &Ndbcntr::execSTTORRY);
addRecSignal(GSN_READ_CONFIG_CONF, &Ndbcntr::execREAD_CONFIG_CONF);
addRecSignal(GSN_FSREMOVECONF, &Ndbcntr::execFSREMOVECONF);
initData();
ctypeOfStart = NodeState::ST_ILLEGAL_TYPE;
c_start.m_startTime = NdbTick_CurrentMillisecond();
}//Ndbcntr::Ndbcntr()
Ndbcntr::~Ndbcntr()
{
delete []ndbBlocksRec;
}//Ndbcntr::~Ndbcntr()
BLOCK_FUNCTIONS(Ndbcntr)
|