summaryrefslogtreecommitdiffstats
path: root/action.c
diff options
context:
space:
mode:
Diffstat (limited to 'action.c')
-rw-r--r--action.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/action.c b/action.c
index 076128ed..6b7169ab 100644
--- a/action.c
+++ b/action.c
@@ -972,22 +972,40 @@ finalize_it:
}
-/* Commit try committing (do not handle retry processing and such) */
+/* the following functions simulates a potential future new omo callback */
static rsRetVal
-actionTryCommit(action_t *pThis, wti_t *pWti)
+doTransaction(action_t *pThis, wti_t *pWti)
{
actWrkrInfo_t *wrkrInfo;
- actWrkrIParams_t *iparamCurr, *iparamDel;
+ actWrkrIParams_t *iparamCurr;
DEFiRet;
wrkrInfo = &(pWti->actWrkrInfo[pThis->iActionNbr]);
- dbgprintf("DDDD: actionCommit: action %d, root %p\n", pThis->iActionNbr, wrkrInfo->iparamRoot);
+ dbgprintf("DDDD: doTransaction: action %d, root %p\n", pThis->iActionNbr, wrkrInfo->iparamRoot);
if(wrkrInfo->iparamRoot != NULL) {
iparamCurr = wrkrInfo->iparamRoot;
while(iparamCurr != NULL) {
iRet = actionProcessMessage(pThis, iparamCurr->msgFlags,
iparamCurr->staticActParams,
pWti);
+ iparamCurr = iparamCurr->next;
+ }
+ }
+ RETiRet;
+}
+
+
+static void
+actionFreeParams(action_t *pThis, wti_t *pWti)
+{
+ actWrkrInfo_t *wrkrInfo;
+ actWrkrIParams_t *iparamCurr, *iparamDel;
+
+ wrkrInfo = &(pWti->actWrkrInfo[pThis->iActionNbr]);
+ dbgprintf("DDDD: actionFreeParams: action %d, root %p\n", pThis->iActionNbr, wrkrInfo->iparamRoot);
+ if(wrkrInfo->iparamRoot != NULL) {
+ iparamCurr = wrkrInfo->iparamRoot;
+ while(iparamCurr != NULL) {
releaseDoActionParams(pThis, pWti);
iparamDel = iparamCurr;
iparamCurr = iparamCurr->next;
@@ -995,6 +1013,17 @@ actionTryCommit(action_t *pThis, wti_t *pWti)
}
wrkrInfo->iparamRoot = wrkrInfo->iparamLast = NULL;
}
+}
+
+
+/* Commit try committing (do not handle retry processing and such) */
+static rsRetVal
+actionTryCommit(action_t *pThis, wti_t *pWti)
+{
+ //actWrkrInfo_t *wrkrInfo;
+ DEFiRet;
+
+ doTransaction(pThis, pWti);
CHKiRet(actionPrepare(pThis, pWti));
if(getActionState(pWti, pThis) == ACT_STATE_ITX) {
@@ -1029,6 +1058,7 @@ dbgprintf("DDDDD: calling endTransaction for action %d\n", pThis->iActionNbr);
iRet = getReturnCode(pThis, pWti);
finalize_it:
+ actionFreeParams(pThis, pWti);
RETiRet;
}