LM_A_CHECKOUTFILTER Feature Documentation Clarification
Throwing light on the Statement "When you use the callback function, disable automatic heartbeat and execute with manual heartbeat to avoid deadlocks " mentioned in the Product Documentation of FNP (fnp_PR-LF.pdf/pg.135 )
- The function pointer LM_A_CHECKOUTFILTER (or the extended version, LM_A_CHECKOUTFILTER_EX) is set to point to a checkout filter callback function. This filter function is invoked each time lc_checkout finds a FEATURE/INCREMENT line that is a candidate for fulfilling the license request.
- Candidates are selected based on the feature name.
This filter provides the application the opportunity to examine the FEATURE/INCREMENT line before lc_checkout processes it, and either allows lc_checkout to proceed processing the line or rejects this particular line. lc_checkout may still reject the line even though the filter function allows processing to proceed.
- The LM_A_CHECKOUTFILTER routine is called as follows:
status = (*myCheckoutFilter)(config);
or, with LM_A_CHECKOUTFILTER_EX:
status = (*myCheckoutFilterEx)(job, config, vendor_data);
Explanation of the Note
- The statement here is an historical update made in the document.
- In the past there were issues seen in and around deadlock scenarios where automatic heartbeat had been executed before the checkout procedure could get completed .
- Checkout filter callback is part of checkout request code flow.
- Having these apprehension in mind it is proposed to use manual heartbeat with Checkout filter.