Register a transaction specific cleanup handler.
| 3709 | |
| 3710 | // Register a transaction specific cleanup handler. |
| 3711 | ISC_STATUS API_ROUTINE gds__transaction_cleanup(ISC_STATUS* userStatus, isc_tr_handle* traHandle, |
| 3712 | TransactionCleanupRoutine* routine, void* arg) |
| 3713 | { |
| 3714 | StatusVector status(userStatus); |
| 3715 | CheckStatusWrapper statusWrapper(&status); |
| 3716 | |
| 3717 | try |
| 3718 | { |
| 3719 | RefPtr<YTransaction> transaction(translateHandle(transactions, traHandle)); |
| 3720 | |
| 3721 | AutoPtr<CleanupCallbackImpl<YTransaction, TransactionCleanupRoutine> > callback( |
| 3722 | FB_NEW CleanupCallbackImpl<YTransaction, TransactionCleanupRoutine>(transaction, routine, arg)); |
| 3723 | |
| 3724 | transaction->addCleanupHandler(&statusWrapper, callback); |
| 3725 | |
| 3726 | if (!(status.getState() & IStatus::STATE_ERRORS)) |
| 3727 | callback.release(); |
| 3728 | } |
| 3729 | catch (const Exception& e) |
| 3730 | { |
| 3731 | e.stuffException(&statusWrapper); |
| 3732 | } |
| 3733 | |
| 3734 | return status[1]; |
| 3735 | } |
| 3736 | |
| 3737 | |
| 3738 | // Provide information on transaction object. |
nothing calls this directly
no test coverage detected