--- src/amf/amfd/imm.cc | 54 ++++++++++++++++++---------------------------------- src/amf/amfd/imm.h | 2 -- src/amf/amfd/role.cc | 2 +- 3 files changed, 19 insertions(+), 39 deletions(-)
diff --git a/src/amf/amfd/imm.cc b/src/amf/amfd/imm.cc index 82d2b13..d917b0d 100644 --- a/src/amf/amfd/imm.cc +++ b/src/amf/amfd/imm.cc @@ -456,16 +456,19 @@ AvdJobDequeueResultT Fifo::executeAll(AVD_CL_CB *cb, AvdJobTypeT job_type) { if (ret != JOB_EXECUTED) break; } else { - // push back - ajob = Fifo::dequeue(); - Fifo::queue(ajob); - // check if we have gone through all jobs of queue if (firstjob == nullptr) { firstjob = ajob; + // push back + ajob = Fifo::dequeue(); + Fifo::queue(ajob); } else { - if (firstjob == ajob) - break; + if (firstjob == ajob) break; + else { + // push back + ajob = Fifo::dequeue(); + Fifo::queue(ajob); + } } } } @@ -476,54 +479,33 @@ AvdJobDequeueResultT Fifo::executeAll(AVD_CL_CB *cb, AvdJobTypeT job_type) { } void Fifo::remove(const AVD_CL_CB *cb, AvdJobTypeT job_type) { - Job *ajob, *firstjob; TRACE_ENTER(); firstjob = nullptr; - while ((ajob = peek()) != nullptr) { if (ajob->getJobType() == job_type) { delete Fifo::dequeue(); } else { - // push back - ajob = Fifo::dequeue(); - Fifo::queue(ajob); - // check if we have gone through all jobs of queue if (firstjob == nullptr) { firstjob = ajob; + // push back + ajob = Fifo::dequeue(); + Fifo::queue(ajob); } else { - if (firstjob == ajob) - break; + if (firstjob == ajob) break; + else { + // push back + ajob = Fifo::dequeue(); + Fifo::queue(ajob); + } } } } - TRACE_LEAVE(); } -AvdJobDequeueResultT Fifo::executeAdminResp(AVD_CL_CB *cb) { - Job *ajob; - AvdJobDequeueResultT ret = JOB_EXECUTED; - - TRACE_ENTER(); - - while ((ajob = peek()) != nullptr) { - if (dynamic_cast<ImmAdminResponse *>(ajob) != nullptr) { - ret = ajob->exec(cb); - } else { - ajob = dequeue(); - delete ajob; - ret = JOB_EXECUTED; - } - } - - TRACE_LEAVE2("%d", ret); - - return ret; -} - // void Fifo::empty() { Job *ajob; diff --git a/src/amf/amfd/imm.h b/src/amf/amfd/imm.h index 3cfc207..670c691 100644 --- a/src/amf/amfd/imm.h +++ b/src/amf/amfd/imm.h @@ -169,8 +169,6 @@ class Fifo { AvdJobTypeT job_type = JOB_TYPE_ANY); static void remove(const AVD_CL_CB *cb, AvdJobTypeT job_type = JOB_TYPE_ANY); - static AvdJobDequeueResultT executeAdminResp(AVD_CL_CB *cb); - static void empty(); static uint32_t size(); diff --git a/src/amf/amfd/role.cc b/src/amf/amfd/role.cc index 42f77f8..15b0458 100644 --- a/src/amf/amfd/role.cc +++ b/src/amf/amfd/role.cc @@ -802,7 +802,7 @@ try_again: /* Execute admin op jobs before calling saImmOiImplementerClear to avoid * SA_AIS_ERR_TIMEOUT */ - Fifo::executeAdminResp(cb); + Fifo::executeAll(cb, JOB_TYPE_IMM); /* Take mutex here to sync with imm reinit thread.*/ osaf_mutex_lock_ordie(&imm_reinit_mutex); -- 2.7.4 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel