From d4900d85f7a5d791f89821713d02d3dd19361044 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 22 Feb 2024 11:17:25 +0300 Subject: Add support for tenant-associated service notifications --- mod/mod-repository-root.cxx | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) (limited to 'mod/mod-repository-root.cxx') diff --git a/mod/mod-repository-root.cxx b/mod/mod-repository-root.cxx index 1b18996..34b4007 100644 --- a/mod/mod-repository-root.cxx +++ b/mod/mod-repository-root.cxx @@ -108,18 +108,31 @@ namespace brep // repository_root:: repository_root () - : packages_ (make_shared ()), + : + // + // Only create and populate the tenant service map in the examplar + // passing a reference to it to all the sub-handler exemplars. Note + // that we dispatch the tenant service callbacks to the examplar + // without creating a new instance for each callback (thus the + // callbacks are const). + // + tenant_service_map_ (make_shared ()), + packages_ (make_shared ()), package_details_ (make_shared ()), package_version_details_ (make_shared ()), repository_details_ (make_shared ()), - build_task_ (make_shared ()), - build_result_ (make_shared ()), - build_force_ (make_shared ()), + build_task_ (make_shared (*tenant_service_map_)), + build_result_ (make_shared (*tenant_service_map_)), + build_force_ (make_shared (*tenant_service_map_)), build_log_ (make_shared ()), builds_ (make_shared ()), build_configs_ (make_shared ()), submit_ (make_shared ()), +#ifdef BREP_CI_TENANT_SERVICE + ci_ (make_shared (*tenant_service_map_)), +#else ci_ (make_shared ()), +#endif upload_ (make_shared ()) { } @@ -127,6 +140,10 @@ namespace brep repository_root:: repository_root (const repository_root& r) : handler (r), + tenant_service_map_ ( + r.initialized_ + ? r.tenant_service_map_ + : make_shared ()), // // Deep/shallow-copy sub-handlers depending on whether this is an // exemplar/handler. @@ -151,15 +168,15 @@ namespace brep build_task_ ( r.initialized_ ? r.build_task_ - : make_shared (*r.build_task_)), + : make_shared (*r.build_task_, *tenant_service_map_)), build_result_ ( r.initialized_ ? r.build_result_ - : make_shared (*r.build_result_)), + : make_shared (*r.build_result_, *tenant_service_map_)), build_force_ ( r.initialized_ ? r.build_force_ - : make_shared (*r.build_force_)), + : make_shared (*r.build_force_, *tenant_service_map_)), build_log_ ( r.initialized_ ? r.build_log_ @@ -179,7 +196,11 @@ namespace brep ci_ ( r.initialized_ ? r.ci_ +#ifdef BREP_CI_TENANT_SERVICE + : make_shared (*r.ci_, *tenant_service_map_)), +#else : make_shared (*r.ci_)), +#endif upload_ ( r.initialized_ ? r.upload_ -- cgit v1.1