From 33ceb2f46cc1fabd3ff23b36f0fb7ad80e9e4520 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 28 Aug 2020 09:37:06 +0200 Subject: [PATCH] path: add dedicated functions for path_{source,destination}_prepare() --- include/villas/path_destination.h | 4 +++- include/villas/path_source.h | 2 ++ lib/path.cpp | 8 ++++---- lib/path_destination.cpp | 8 +++++++- lib/path_source.cpp | 9 +++++++++ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/include/villas/path_destination.h b/include/villas/path_destination.h index 3d9690527..55c77c611 100644 --- a/include/villas/path_destination.h +++ b/include/villas/path_destination.h @@ -41,7 +41,9 @@ struct vpath_destination { struct queue queue; }; -int path_destination_init(struct vpath_destination *pd, int queuelen); +int path_destination_init(struct vpath_destination *pd); + +int path_destination_prepare(struct vpath_destination *pd, int queuelen); int path_destination_destroy(struct vpath_destination *pd); diff --git a/include/villas/path_source.h b/include/villas/path_source.h index fdadfcb68..a1448d288 100644 --- a/include/villas/path_source.h +++ b/include/villas/path_source.h @@ -47,6 +47,8 @@ struct vpath_source { int path_source_init(struct vpath_source *ps); +int path_source_prepare(struct vpath_source *ps); + int path_source_destroy(struct vpath_source *ps); int path_source_read(struct vpath_source *ps, struct vpath *p, int i); diff --git a/lib/path.cpp b/lib/path.cpp index c66c734e0..a37840c4a 100644 --- a/lib/path.cpp +++ b/lib/path.cpp @@ -236,7 +236,7 @@ int path_prepare(struct vpath *p) if (node_type(pd->node)->memory_type) pool_mt = node_memory_type(pd->node); - ret = path_destination_init(pd, p->queuelen); + ret = path_destination_prepare(pd, p->queuelen); if (ret) return ret; } @@ -249,7 +249,7 @@ int path_prepare(struct vpath *p) for (size_t i = 0; i < vlist_length(&p->sources); i++) { struct vpath_source *ps = (struct vpath_source *) vlist_at(&p->sources, i); - ret = path_source_init(ps); + ret = path_source_prepare(ps); if (ret) return ret; @@ -433,8 +433,8 @@ int path_parse(struct vpath *p, json_t *cfg, struct vlist *nodes) if (!pd) throw MemoryAllocationError(); - pd->node = n; - pd->node->output_path = p; + path_destination_init(pd); + if (!node_is_enabled(pd->node)) { p->logger->error("Destination {} of path {} is not enabled", node_name(pd->node), path_name(p)); diff --git a/lib/path_destination.cpp b/lib/path_destination.cpp index 67162a656..239d80217 100644 --- a/lib/path_destination.cpp +++ b/lib/path_destination.cpp @@ -27,7 +27,13 @@ #include #include -int path_destination_init(struct vpath_destination *pd, int queuelen) +int path_destination_init(struct vpath_destination *pd) +{ + pd->node = n; + pd->node->output_path = p; +} + +int path_destination_prepare(struct vpath_destination *pd, int queuelen) { int ret; diff --git a/lib/path_source.cpp b/lib/path_source.cpp index fb3ccab52..4e825b543 100644 --- a/lib/path_source.cpp +++ b/lib/path_source.cpp @@ -30,6 +30,15 @@ #include int path_source_init(struct vpath_source *ps) +{ + ps->node = me->node; + ps->masked = false; + + vlist_init(&ps->mappings); + vlist_init(&ps->secondaries); +} + +int path_source_prepare(struct vpath_source *ps) { int ret; int pool_size = MAX(DEFAULT_QUEUE_LENGTH, ps->node->in.vectorize);