21 #include <ndb_global.h>
22 #include <ndb_limits.h>
23 #include <kernel_types.h>
25 #include <ErrorReporter.hpp>
26 #include <NodeBitmask.hpp>
28 #include <RefConvert.hpp>
29 #include <TransporterDefinitions.hpp>
44 void clear() { m_cnt = 0;}
67 Uint32 m_sectionPtrI[3];
86 Uint32 getLength()
const;
87 Uint32 getTrace()
const;
88 Uint32 getSendersBlockRef()
const;
90 const Uint32* getDataPtr()
const ;
91 Uint32* getDataPtrSend() ;
93 void setTrace(Uint32);
95 Uint32 getNoOfSections()
const;
100 Uint32
length()
const {
return getLength();}
101 BlockReference senderBlockRef()
const {
return getSendersBlockRef();}
104 void setLength(Uint32);
107 #define VMS_DATA_SIZE \
108 (MAX_ATTRIBUTES_IN_TABLE + MAX_TUPLE_SIZE_IN_WORDS + MAX_KEY_SIZE_IN_WORDS)
110 #if VMS_DATA_SIZE > 8192
111 #error "VMSignal buffer is too small"
114 Uint32 m_sectionPtrI[3];
117 Uint32 theData[8192];
120 void garbage_register();
134 void save(
Signal* signal) {
136 for (Uint32
i = 0;
i<len;
i++)
137 m_copy[
i] = m_signal->theData[
i];
140 void clear() { m_signal = 0;}
143 for (Uint32
i = 0;
i<len;
i++)
144 m_signal->theData[
i] = m_copy[
i];
156 Signal::getLength()
const {
157 return header.theLength;
162 Signal::getTrace()
const {
163 return header.theTrace;
168 Signal::getSendersBlockRef()
const {
169 return header.theSendersBlockRef;
174 Signal::getDataPtr()
const {
180 Signal::getDataPtrSend() {
186 Signal::setLength(Uint32 len){
187 header.theLength = len;
192 Signal::setTrace(Uint32 t){
198 Signal::getNoOfSections()
const {
199 return header.m_noOfSections;
203 NodeReceiverGroup::NodeReceiverGroup() : m_block(0){
208 NodeReceiverGroup::NodeReceiverGroup(Uint32 blockRef){
210 m_block = refToBlock(blockRef);
211 m_nodes.
set(refToNode(blockRef));
215 NodeReceiverGroup::NodeReceiverGroup(Uint32 blockNo,
223 NodeReceiverGroup::NodeReceiverGroup(Uint32 blockNo,
230 #include "SignalCounter.hpp"
233 NodeReceiverGroup::NodeReceiverGroup(Uint32 blockNo,
236 m_nodes = nodes.m_nodes;
241 NodeReceiverGroup::operator=(BlockReference blockRef){
243 m_block = refToBlock(blockRef);
244 m_nodes.
set(refToNode(blockRef));
257 : m_cnt(s->header.m_noOfSections),
260 Uint32 * ptr = s->m_sectionPtrI;
261 Uint32 ptr0 = * ptr++;
262 Uint32 ptr1 = * ptr++;
263 Uint32 ptr2 = * ptr++;
269 getSections(m_cnt, m_ptr);
271 s->header.m_noOfSections = 0;
280 getSections(1, m_ptr);
287 if (likely(no < m_cnt))