diff --git a/include/villas/node.h b/include/villas/node.h index ceb9286bf..9f7e94f08 100644 --- a/include/villas/node.h +++ b/include/villas/node.h @@ -192,6 +192,8 @@ char * node_name_long(struct vnode *n); */ struct vlist * node_output_signals(struct vnode *n); +struct vlist * node_input_signals(struct vnode *n); + /** Reverse local and remote socket address. * * @see node_type::reverse @@ -218,8 +220,6 @@ bool node_is_valid_name(const char *name); bool node_is_enabled(const struct vnode *n); -struct vlist * node_get_signals(struct vnode *n, enum NodeDir dir); - json_t * node_to_json(struct vnode *); /** @} */ diff --git a/include/villas/path.h b/include/villas/path.h index df4b302f2..28e24d529 100644 --- a/include/villas/path.h +++ b/include/villas/path.h @@ -144,6 +144,8 @@ const char * path_name(struct vpath *p); /** Get a list of signals which is emitted by the path. */ struct vlist * path_output_signals(struct vpath *n); +struct vlist * path_signals(struct vpath *p); + /** Reverse a path */ int path_reverse(struct vpath *p, struct vpath *r); @@ -165,8 +167,6 @@ bool path_is_enabled(const struct vpath *p); bool path_is_reversed(const struct vpath *p); -struct vlist * path_get_signals(struct vpath *p); - json_t * path_to_json(struct vpath *p); /** @} */ diff --git a/lib/mapping.cpp b/lib/mapping.cpp index 756756500..e198a311c 100644 --- a/lib/mapping.cpp +++ b/lib/mapping.cpp @@ -319,7 +319,7 @@ int mapping_entry_prepare(struct mapping_entry *me, struct vlist *nodes) end: if (me->length < 0) { - struct vlist *sigs = node_get_signals(me->node, NodeDir::IN); + struct vlist *sigs = node_input_signals(me->node); me->length = vlist_length(sigs); } diff --git a/lib/node.cpp b/lib/node.cpp index 6677a4d03..79baa2ecd 100644 --- a/lib/node.cpp +++ b/lib/node.cpp @@ -568,14 +568,6 @@ const char * node_name_short(struct vnode *n) return n->name; } -struct vlist * node_output_signals(struct vnode *n) -{ - if (n->output_path) - return path_output_signals(n->output_path); - - return nullptr; -} - int node_reverse(struct vnode *n) { return node_type(n)->reverse ? node_type(n)->reverse(n) : -1; @@ -663,11 +655,17 @@ bool node_is_enabled(const struct vnode *n) return n->enabled; } -struct vlist * node_get_signals(struct vnode *n, enum NodeDir dir) +struct vlist * node_input_signals(struct vnode *n) { - struct vnode_direction *nd = dir == NodeDir::IN ? &n->in : &n->out; + return node_direction_get_signals(&n->in); +} - return node_direction_get_signals(nd); +struct vlist * node_output_signals(struct vnode *n) +{ + if (n->output_path) + return path_output_signals(n->output_path); + + return nullptr; } json_t * node_to_json(struct vnode *n) diff --git a/lib/path.cpp b/lib/path.cpp index 000a66421..576a520ac 100644 --- a/lib/path.cpp +++ b/lib/path.cpp @@ -294,7 +294,7 @@ int path_prepare(struct vpath *p, struct vlist *nodes) vlist_push(&p->sources, ps); } - struct vlist *sigs = node_get_signals(me->node, NodeDir::IN); + struct vlist *sigs = node_input_signals(me->node); /* Update signals of path */ for (unsigned j = 0; j < (unsigned) me->length; j++) { @@ -379,7 +379,7 @@ int path_prepare(struct vpath *p, struct vlist *nodes) #endif /* WITH_HOOKS */ p->logger->info("Prepared path {} with output signals:", path_name(p)); - signal_list_dump(&p->signals); + signal_list_dump(path_output_signals(p)); p->state = State::PREPARED; @@ -758,11 +758,6 @@ const char * path_name(struct vpath *p) return p->_name; } -struct vlist * path_output_signals(struct vpath *p) -{ - return &p->signals; -} - bool path_is_simple(const struct vpath *p) { int ret; @@ -794,11 +789,22 @@ bool path_is_reversed(const struct vpath *p) return p->reverse; } -struct vlist * path_get_signals(struct vpath *p) +struct vlist * path_signals(struct vpath *p) { return &p->signals; } +struct vlist * path_output_signals(struct vpath *p) +{ +#ifdef WITH_HOOKS + Hook *last_hook = (Hook *) vlist_last(&p->hooks); + + return last_hook->getSignals(); +#else + return &p->signals; +#endif +} + json_t * path_to_json(struct vpath *p) { char uuid[37];