USRP Hardware Driver and USRP Manual  Version: 4.7.0.0
UHD and USRP Manual
expert_container.hpp
Go to the documentation of this file.
1 //
2 // Copyright 2016 Ettus Research
3 // Copyright 2018 Ettus Research, a National Instruments Company
4 //
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 
8 #pragma once
9 
10 #include <uhd/config.hpp>
13 #include <memory>
14 #include <mutex>
15 
16 namespace uhd { namespace experts {
17 
23 };
24 
26 {
27 public: // Methods
28  typedef std::shared_ptr<expert_container> sptr;
29 
30  ~expert_container() override{};
31 
35  virtual const std::string& get_name() const = 0;
36 
51  virtual void resolve_all(bool force = false) = 0;
52 
69  virtual void resolve_from(const std::string& node_name) = 0;
70 
87  virtual void resolve_to(const std::string& node_name) = 0;
88 
92  virtual const node_retriever_t& node_retriever() const = 0;
93 
101  virtual std::string to_dot() const = 0;
102 
110  virtual void debug_audit() const = 0;
111 
112 private:
124  const dag_vertex_t& lookup(const std::string& name) const override = 0;
125  dag_vertex_t& retrieve(const std::string& name) const override = 0;
126 
138  friend class expert_factory;
139 
146  static sptr make(const std::string& name);
147 
156  virtual std::recursive_mutex& resolve_mutex() = 0;
157 
168  virtual void add_data_node(
169  dag_vertex_t* data_node, auto_resolve_mode_t resolve_mode = AUTO_RESOLVE_OFF) = 0;
170 
180  virtual void add_worker(worker_node_t* worker) = 0;
181 
190  virtual void clear() = 0;
191 };
192 
193 }} // namespace uhd::experts
std::shared_ptr< expert_container > sptr
Definition: expert_container.hpp:28
boost::noncopyable noncopyable
Definition: noncopyable.hpp:45
Definition: expert_nodes.hpp:473
auto_resolve_mode_t
Definition: expert_container.hpp:18
~expert_container() override
Definition: expert_container.hpp:30
Definition: expert_container.hpp:21
Definition: expert_factory.hpp:31
Definition: expert_container.hpp:19
Definition: expert_nodes.hpp:38
Definition: build_info.hpp:12
Definition: expert_container.hpp:25
Definition: expert_container.hpp:20
#define UHD_API
Definition: config.h:87
Definition: expert_container.hpp:22
Definition: expert_nodes.hpp:277