| 162 | } |
| 163 | |
| 164 | void 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 | |
| 205 | void DTransaction::prepare(CheckStatusWrapper* status, |
| 206 | unsigned int msgLength, const unsigned char* message) |
no test coverage detected