LCOV - code coverage report
Current view: top level - confmodel/pybindsrc - dal_methods.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 105 0
Test Date: 2026-02-16 10:18:04 Functions: 0.0 % 13 0

            Line data    Source code
       1              : /**
       2              :  * @file dal_methods.cpp
       3              :  *
       4              :  * This is part of the DUNE DAQ Software Suite, copyright 2020.
       5              :  * Licensing/copyright details are in the COPYING file that you should have
       6              :  * received with this code.
       7              :  */
       8              : 
       9              : #include "pybind11/operators.h"
      10              : #include "pybind11/pybind11.h"
      11              : #include "pybind11/stl.h"
      12              : 
      13              : #include "confmodel/Application.hpp"
      14              : #include "confmodel/DaqApplication.hpp"
      15              : #include "confmodel/DetectorToDaqConnection.hpp"
      16              : #include "confmodel/DetectorStream.hpp"
      17              : #include "confmodel/DetDataReceiver.hpp"
      18              : #include "confmodel/DetDataSender.hpp"
      19              : #include "confmodel/HostComponent.hpp"
      20              : #include "confmodel/RCApplication.hpp"
      21              : #include "confmodel/Session.hpp"
      22              : 
      23              : 
      24              : #include <sstream>
      25              : 
      26              : namespace py = pybind11;
      27              : using namespace dunedaq::conffwk;
      28              : 
      29              : namespace dunedaq::confmodel::python {
      30              : 
      31              :   struct ObjectLocator {
      32            0 :     ObjectLocator(const std::string& id_arg, const std::string& class_name_arg) :
      33            0 :       id(id_arg), class_name(class_name_arg)
      34            0 :       {}
      35              :     const std::string id;
      36              :     const std::string class_name;
      37              :   };
      38              : 
      39              : 
      40              :   std::vector<ObjectLocator>
      41            0 :   session_get_all_applications(Configuration& db,
      42              :                                const std::string& session_name) {
      43            0 :     auto session=db.get<Session>(session_name);
      44            0 :     std::vector<ObjectLocator> apps;
      45            0 :     for (auto app : session->all_applications()) {
      46            0 :       apps.push_back({app->UID(),app->class_name()});
      47            0 :     }
      48            0 :     return apps;
      49            0 :   }
      50              : 
      51              :   std::vector<ObjectLocator>
      52            0 :   session_get_enabled_applications(Configuration& db,
      53              :                                    const std::string& session_name) {
      54            0 :     auto session=db.get<Session>(session_name);
      55            0 :     std::vector<ObjectLocator> apps;
      56            0 :     for (auto app : session->enabled_applications()) {
      57            0 :       apps.push_back({app->UID(),app->class_name()});
      58            0 :     }
      59            0 :     return apps;
      60            0 :   }
      61              : 
      62            0 :   bool component_disabled(Configuration& db,
      63              :                           const std::string& session_id,
      64              :                           const std::string& component_id) {
      65            0 :     const dunedaq::confmodel::Session* session_ptr = db.get<dunedaq::confmodel::Session>(session_id);
      66            0 :     const dunedaq::confmodel::Resource* component_ptr = db.get<dunedaq::confmodel::Resource>(component_id);
      67            0 :     if (component_ptr == nullptr) {
      68              :       return false;
      69              :     }
      70            0 :     return component_ptr->is_disabled(*session_ptr);
      71              :   }
      72              : 
      73              : 
      74            0 :   std::vector<std::vector<ObjectLocator>> component_get_parents(Configuration& db,
      75              :                                                                 const std::string& session_id,
      76              :                                                                 const std::string& component_id) {
      77            0 :     const dunedaq::confmodel::Session* session_ptr = db.get<dunedaq::confmodel::Session>(session_id);
      78            0 :     const dunedaq::confmodel::Resource* component_ptr = db.get<dunedaq::confmodel::Resource>(component_id);
      79              : 
      80            0 :     std::list<std::vector<const dunedaq::confmodel::Resource*>> parents;
      81            0 :     std::vector<std::vector<ObjectLocator>> parent_ids;
      82              : 
      83            0 :     component_ptr->parents(*session_ptr, parents);
      84              : 
      85            0 :     for (const auto& parent : parents) {
      86            0 :       std::vector<ObjectLocator> parents_components;
      87            0 :       for (const auto& ancestor_component_ptr : parent) {
      88            0 :         parents_components.emplace_back(
      89            0 :           ObjectLocator(ancestor_component_ptr->UID(),
      90            0 :                         ancestor_component_ptr->class_name()) );
      91              :       }
      92            0 :       parent_ids.emplace_back(parents_components);
      93            0 :     }
      94            0 :     return parent_ids;
      95            0 :   }
      96              : 
      97            0 :   std::vector<std::string> daq_application_get_used_hostresources(Configuration& db, const std::string& app_id) {
      98            0 :     auto app = db.get<dunedaq::confmodel::DaqApplication>(app_id);
      99            0 :     std::vector<std::string> resources;
     100            0 :     for (auto res : app->get_used_hostresources()) {
     101            0 :       resources.push_back(res->UID());
     102            0 :     }
     103            0 :     return resources;
     104            0 :   }
     105              : 
     106            0 :   std::vector<std::string> daq_application_construct_commandline_parameters(Configuration& db,
     107              :                                                                             const std::string& session_id,
     108              :                                                                             const std::string& app_id) {
     109            0 :     const auto* app = db.get<dunedaq::confmodel::DaqApplication>(app_id);
     110            0 :     const auto* session = db.get<dunedaq::confmodel::Session>(session_id);
     111            0 :     return app->construct_commandline_parameters(db, session);
     112              :   }
     113              : 
     114            0 :   std::vector<std::string> rc_application_construct_commandline_parameters(const Configuration& db,
     115              :                                                                            const std::string& session_id,
     116              :                                                                            const std::string& app_id) {
     117            0 :     const auto* app = const_cast<Configuration&>(db).get<dunedaq::confmodel::RCApplication>(app_id);
     118            0 :     const auto* session = const_cast<Configuration&>(db).get<dunedaq::confmodel::Session>(session_id);
     119            0 :     return app->construct_commandline_parameters(db, session);
     120              :   }
     121              : 
     122              : 
     123            0 :   std::string d2d_receiver(Configuration& db,
     124              :                            const std::string& d2d_id) {
     125            0 :     const auto* d2d = db.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
     126            0 :     if (d2d == nullptr) {
     127            0 :       return "";
     128              :     }
     129            0 :     return d2d->receiver()->UID();
     130              :   }
     131              : 
     132            0 :   std::vector<std::string> d2d_senders(Configuration& db,
     133              :                                        const std::string& d2d_id) {
     134            0 :     std::vector<std::string> senders;
     135            0 :     const auto* d2d = db.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
     136            0 :     if (d2d != nullptr) {
     137            0 :       for (auto sender: d2d->senders()) {
     138            0 :         senders.push_back(sender->UID());
     139            0 :       }
     140              :     }
     141            0 :     return senders;
     142            0 :   }
     143              : 
     144            0 :   std::vector<std::string> d2d_streams(Configuration& db,
     145              :                                        const std::string& d2d_id) {
     146            0 :     std::vector<std::string> streams;
     147            0 :     const auto* d2d = db.get<dunedaq::confmodel::DetectorToDaqConnection>(d2d_id);
     148            0 :     if (d2d != nullptr) {
     149            0 :       for (auto stream: d2d->streams()) {
     150            0 :         streams.push_back(stream->UID());
     151            0 :       }
     152              :     }
     153            0 :     return streams;
     154            0 :   }
     155              : 
     156              :   std::vector<std::string>
     157            0 :   resourceset_contains(Configuration& db,
     158              :                        const std::string& res_id) {
     159            0 :     std::vector<std::string> resources;
     160            0 :     auto res_set = db.get<dunedaq::confmodel::ResourceSet>(res_id);
     161            0 :     if (res_set != nullptr) {
     162            0 :       for (auto res: res_set->contained_resources()) {
     163            0 :         resources.push_back(res->UID());
     164            0 :       }
     165              :     }
     166            0 :     return resources;
     167            0 :   }
     168              : 
     169              : 
     170              : void
     171            0 : register_dal_methods(py::module& m)
     172              : {
     173            0 :   py::class_<ObjectLocator>(m, "ObjectLocator")
     174            0 :     .def(py::init<const std::string&, const std::string&>())
     175            0 :     .def_readonly("id", &ObjectLocator::id)
     176            0 :     .def_readonly("class_name", &ObjectLocator::class_name)
     177              :     ;
     178              : 
     179            0 :   m.def("session_get_all_applications", &session_get_all_applications, "Get list of ALL applications (regardless of enabled/disabled state) in the requested session");
     180            0 :   m.def("session_get_enabled_applications", &session_get_enabled_applications, "Get list of enabled applications in the requested session");
     181              : 
     182            0 :   m.def("component_disabled", &component_disabled, "Determine if a Resource-derived object (e.g. a Segment) has been disabled");
     183            0 :   m.def("component_get_parents", &component_get_parents, "Get the Resource-derived class instances of the parent(s) of the Resource-derived object in question");
     184            0 :   m.def("daqapp_get_used_resources", &daq_application_get_used_hostresources, "Get list of HostResources used by DAQApplication");
     185            0 :   m.def("daq_application_construct_commandline_parameters", &daq_application_construct_commandline_parameters, "Get a version of the command line agruments parsed");
     186            0 :   m.def("rc_application_construct_commandline_parameters", &rc_application_construct_commandline_parameters, "Get a version of the command line agruments parsed");
     187              : 
     188            0 :   m.def("d2d_receiver", &d2d_receiver, "Get receiver associated with DetectorToDaqConnection");
     189            0 :   m.def("d2d_senders", &d2d_senders, "Get senders associated with DetectorToDaqConnection");
     190            0 :   m.def("d2d_streams", &d2d_streams, "Get streams associated with DetectorToDaqConnection");
     191            0 :   m.def("resourceset_contains", &resourceset_contains, "Get contained Resources from ResourceSet");
     192            0 : }
     193              : 
     194              : } // namespace dunedaq::confmodel::python
        

Generated by: LCOV version 2.0-1