Right we we have three ZOOM event loops in C4::Search, which is rather wasteful and against good programming practice. I propose to use closures for the section of code that processes the actual results.
Created attachment 13807 [details] [review] Bug 9183: Refactor ZOOM event loop Prior to this patch, there were three identical ZOOM event loops in C4::Search. This is wasteful, and goes against all good programming practice. This patch refactors the ZOOM event loops into a separate subroutine which is called by SimpleSearch, searchResults, and GetDistinctValues call. The new routine, _ZOOM_event_loop process the ZOOM event loop and, once it has been fully processed, passes control to a closure provided by the calling routine for processing the results, and destroys the result sets. To test (after applying patch): 1) Do a regular bibliographic search that should return results. 2) Do a search in the Cataloging module that should return results. 3) If you get results from both searches, the patch works.
Created attachment 13924 [details] [review] [SIGNED-OFF] Bug 9183: Refactor ZOOM event loop Prior to this patch, there were three identical ZOOM event loops in C4::Search. This is wasteful, and goes against all good programming practice. This patch refactors the ZOOM event loops into a separate subroutine which is called by SimpleSearch, searchResults, and GetDistinctValues call. The new routine, _ZOOM_event_loop process the ZOOM event loop and, once it has been fully processed, passes control to a closure provided by the calling routine for processing the results, and destroys the result sets. To test (after applying patch): 1) Do a regular bibliographic search that should return results. 2) Do a search in the Cataloging module that should return results. 3) If you get results from both searches, the patch works. Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
QA Comments: I don't know very well this part of code but it seems good to me. I searched in the 2 places and I got results. Marked as Passed QA.
Created attachment 14269 [details] [review] Bug 9183: Refactor ZOOM event loop Prior to this patch, there were three identical ZOOM event loops in C4::Search. This is wasteful, and goes against all good programming practice. This patch refactors the ZOOM event loops into a separate subroutine which is called by SimpleSearch, searchResults, and GetDistinctValues call. The new routine, _ZOOM_event_loop process the ZOOM event loop and, once it has been fully processed, passes control to a closure provided by the calling routine for processing the results, and destroys the result sets. To test (after applying patch): 1) Do a regular bibliographic search that should return results. 2) Do a search in the Cataloging module that should return results. 3) If you get results from both searches, the patch works. Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
This patch has been pushed to master.
Pushed to 3.10.x will be in 3.10.2