51 std::unordered_map<res_source_info, std::vector<res_source_info>>;
72 static const size_t ANY_PORT = size_t(~0);
135 template <
typename prop_data_t>
137 const std::string&
id,
const prop_data_t& val,
const size_t instance = 0);
190 template <
typename prop_data_t>
191 const prop_data_t& get_property(
192 const std::string&
id,
const size_t instance = 0) ;
350 template <
typename prop_data_t>
352 const std::string&
id,
const prop_data_t& val,
const res_source_info& src_info);
365 template <
typename prop_data_t>
366 const prop_data_t& get_property(
481 const std::vector<size_t>& connected_outputs);
518 template <
typename PredicateType>
519 prop_ptrs_t filter_props(PredicateType&& predicate)
522 for (
const auto& type_prop_pair : _props) {
523 for (
const auto& prop : type_prop_pair.second) {
524 if (predicate(prop)) {
525 filtered_props.push_back(prop);
530 return filtered_props;
540 property_base_t* inject_edge_property(
541 property_base_t* blueprint, res_source_info new_src_info);
581 void resolve_props();
597 void set_resolve_all_callback(resolve_callback_t&& resolver)
599 _resolve_all_cb = resolver;
604 void clear_resolve_all_callback()
606 _resolve_all_cb = _default_resolve_all_cb;
612 void set_graph_mutex_callback(graph_mutex_callback_t&& mutex)
614 _graph_mutex_cb = mutex;
620 void clear_graph_mutex_callback()
622 _graph_mutex_cb = NULL;
659 void forward_edge_property(
660 property_base_t* incoming_prop,
const size_t incoming_port);
668 void set_post_action_callback(post_action_handler_t&& post_handler)
670 _post_action_cb = std::move(post_handler);
681 void receive_action(
const res_source_info& src_info, action_info::sptr action);
687 bool _has_port(
const res_source_info& port_info)
const;
690 template <
typename prop_data_t>
692 const std::string&
id,
const prop_data_t& val,
const res_source_info& src_info);
698 mutable std::mutex _prop_mutex;
701 std::unordered_map<res_source_info::source_t,
702 std::vector<property_base_t*>,
707 std::unordered_map<property_base_t*, resolve_callback_t> _clean_cb_registry;
709 using property_resolver_t = std::tuple<prop_ptrs_t, prop_ptrs_t, resolver_fn_t>;
711 std::vector<property_resolver_t> _prop_resolvers;
716 graph_mutex_callback_t _graph_mutex_cb;
720 resolve_callback_t _resolve_all_cb;
724 const resolve_callback_t _default_resolve_all_cb = [
this]() {
736 std::unordered_set<std::unique_ptr<property_base_t>> _dynamic_props;
741 std::unordered_map<std::string, forwarding_policy_t> _prop_fwd_policies{
742 {
"", forwarding_policy_t::ONE_TO_ONE}};
745 forwarding_map_t _prop_fwd_map;
750 mutable std::mutex _action_mutex;
753 std::unordered_map<std::string, action_handler_t> _action_handlers;
756 std::unordered_map<std::string, forwarding_policy_t> _action_fwd_policies{
757 {
"", forwarding_policy_t::ONE_TO_ONE}};
762 post_action_handler_t _post_action_cb =
763 [](
const res_source_info&, action_info::sptr, action_mode_t) { };
766 forwarding_map_t _action_fwd_map;
771 std::vector<uhd::time_spec_t> _cmd_timespecs;