MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / getInfo

Method getInfo

src/yvalve/DistributedTransaction.cpp:164–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

162}
163
164void DTransaction::getInfo(CheckStatusWrapper* status,
165 unsigned int itemsLength, const unsigned char* items,
166 unsigned int bufferLength, unsigned char* buffer)
167{
168 try
169 {
170 status->init();
171
172 ReadLockGuard guard(rwLock, FB_FUNCTION);
173
174 for (unsigned int i = 0; i < sub.getCount(); ++i)
175 {
176 if (sub[i])
177 {
178 sub[i]->getInfo(status, itemsLength, items, bufferLength, buffer);
179 if (status->getState() & IStatus::STATE_ERRORS)
180 {
181 return;
182 }
183
184 unsigned char* const end = buffer + bufferLength;
185 while (buffer < end && (buffer[0] == isc_info_tra_id || buffer[0] == fb_info_tra_dbpath))
186 {
187 buffer += 3 + gds__vax_integer(&buffer[1], 2);
188 }
189
190 if (buffer >= end || buffer[0] != isc_info_end)
191 {
192 return;
193 }
194
195 bufferLength = end - buffer;
196 }
197 }
198 }
199 catch (const Exception& ex)
200 {
201 ex.stuffException(status);
202 }
203}
204
205void DTransaction::prepare(CheckStatusWrapper* status,
206 unsigned int msgLength, const unsigned char* message)

Callers 1

buildPrepareInfoMethod · 0.45

Calls 4

initMethod · 0.45
getCountMethod · 0.45
getStateMethod · 0.45
stuffExceptionMethod · 0.45

Tested by

no test coverage detected