From f00c225b2609c51406bc78402ffbcd24cd75b11b Mon Sep 17 00:00:00 2001 From: Felix Wege Date: Fri, 8 Jan 2021 14:49:28 +0100 Subject: [PATCH] io: removed CHECKED state and fixed sprintf/sscan --- include/villas/io.h | 2 -- lib/hooks/print.cpp | 4 ---- lib/io.cpp | 15 ++++----------- lib/nodes/amqp.cpp | 4 ---- lib/nodes/exec.cpp | 4 ---- lib/nodes/file.cpp | 4 ---- lib/nodes/mqtt.cpp | 4 ---- lib/nodes/nanomsg.cpp | 4 ---- lib/nodes/rtp.cpp | 4 ---- lib/nodes/socket.cpp | 4 ---- lib/nodes/test_rtt.cpp | 4 ---- lib/nodes/websocket.cpp | 4 ---- lib/nodes/zeromq.cpp | 4 ---- src/villas-convert.cpp | 4 ---- src/villas-hook.cpp | 4 ---- src/villas-pipe.cpp | 4 ---- src/villas-signal.cpp | 4 ---- src/villas-test-cmp.cpp | 4 ---- tests/unit/io.cpp | 6 ------ 19 files changed, 4 insertions(+), 83 deletions(-) diff --git a/include/villas/io.h b/include/villas/io.h index 57e0d5611..4ea65a5a9 100644 --- a/include/villas/io.h +++ b/include/villas/io.h @@ -82,8 +82,6 @@ int io_init2(struct io *io, const struct format_type *fmt, const char *dt, int f int io_destroy(struct io *io) __attribute__ ((warn_unused_result)); -int io_check(struct io *io); - int io_open(struct io *io, const char *uri); int io_close(struct io *io); diff --git a/lib/hooks/print.cpp b/lib/hooks/print.cpp index 4f66f29cb..d96380206 100644 --- a/lib/hooks/print.cpp +++ b/lib/hooks/print.cpp @@ -64,10 +64,6 @@ public: if (ret) throw RuntimeError("Failed to initialze IO"); - ret = io_check(&io); - if (ret) - throw RuntimeError("Failed to check IO"); - ret = io_open(&io, uri); if (ret) throw RuntimeError("Failed to open IO"); diff --git a/lib/io.cpp b/lib/io.cpp index 77a996ee7..cef01c798 100644 --- a/lib/io.cpp +++ b/lib/io.cpp @@ -144,7 +144,7 @@ int io_destroy(struct io *io) { int ret; - assert(io->state == State::CLOSED || io->state == State::INITIALIZED || io->state == State::CHECKED); + assert(io->state == State::CLOSED || io->state == State::INITIALIZED); ret = io_type(io)->destroy ? io_type(io)->destroy(io) : 0; if (ret) @@ -163,13 +163,6 @@ int io_destroy(struct io *io) return 0; } -int io_check(struct io *io) -{ - io->state = State::CHECKED; - - return 0; -} - int io_stream_open(struct io *io, const char *uri) { int ret; @@ -338,7 +331,7 @@ int io_open(struct io *io, const char *uri) { int ret; - assert(io->state == State::CHECKED || io->state == State::CLOSED); + assert(io->state == State::INITIALIZED || io->state == State::CLOSED); ret = io_type(io)->open ? io_type(io)->open(io, uri) @@ -505,14 +498,14 @@ FILE * io_stream_input(struct io *io) { int io_sscan(struct io *io, const char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { - assert(io->state == State::CHECKED || io->state == State::OPENED); + assert(io->state == State::INITIALIZED || io->state == State::OPENED || io->state == State::CLOSED); return io_type(io)->sscan ? io_type(io)->sscan(io, buf, len, rbytes, smps, cnt) : -1; } int io_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { - assert(io->state == State::CHECKED || io->state == State::OPENED); + assert(io->state == State::INITIALIZED || io->state == State::OPENED || io->state == State::CLOSED); return io_type(io)->sprint ? io_type(io)->sprint(io, buf, len, wbytes, smps, cnt) : -1; } diff --git a/lib/nodes/amqp.cpp b/lib/nodes/amqp.cpp index a655664bd..11de525eb 100644 --- a/lib/nodes/amqp.cpp +++ b/lib/nodes/amqp.cpp @@ -245,10 +245,6 @@ int amqp_start(struct vnode *n) if (ret) return ret; - ret = io_check(&a->io); - if (ret) - return ret; - /* Connect producer */ a->producer = amqp_connect(&a->connection_info, &a->ssl_info); if (!a->producer) diff --git a/lib/nodes/exec.cpp b/lib/nodes/exec.cpp index f7ca0c4d7..e7bfc662a 100644 --- a/lib/nodes/exec.cpp +++ b/lib/nodes/exec.cpp @@ -125,10 +125,6 @@ int exec_prepare(struct vnode *n) if (ret) return ret; - ret = io_check(&e->io); - if (ret) - return ret; - /* Start subprocess */ e->proc = std::make_unique(e->command, e->arguments, e->environment, e->working_dir, e->shell); debug(2, "Started sub-process with pid=%d", e->proc->getPid()); diff --git a/lib/nodes/file.cpp b/lib/nodes/file.cpp index bb75e0c95..5fea6bf40 100644 --- a/lib/nodes/file.cpp +++ b/lib/nodes/file.cpp @@ -276,10 +276,6 @@ int file_start(struct vnode *n) if (ret) return ret; - ret = io_check(&f->io); - if (ret) - return ret; - ret = io_open(&f->io, f->uri); if (ret) return ret; diff --git a/lib/nodes/mqtt.cpp b/lib/nodes/mqtt.cpp index 22011a060..a4ac99b4c 100644 --- a/lib/nodes/mqtt.cpp +++ b/lib/nodes/mqtt.cpp @@ -299,10 +299,6 @@ int mqtt_check(struct vnode *n) int ret; struct mqtt *m = (struct mqtt *) n->_vd; - ret = io_check(&m->io); - if (ret) - return ret; - ret = mosquitto_sub_topic_check(m->subscribe); if (ret != MOSQ_ERR_SUCCESS) error("Invalid subscribe topic: '%s' for node %s: %s", m->subscribe, node_name(n), mosquitto_strerror(ret)); diff --git a/lib/nodes/nanomsg.cpp b/lib/nodes/nanomsg.cpp index 4c6984060..9cd1b29d9 100644 --- a/lib/nodes/nanomsg.cpp +++ b/lib/nodes/nanomsg.cpp @@ -164,10 +164,6 @@ int nanomsg_start(struct vnode *n) if (ret) return ret; - ret = io_check(&m->io); - if (ret) - return ret; - ret = m->in.socket = nn_socket(AF_SP, NN_SUB); if (ret < 0) { warning("Failed to create nanomsg socket: node=%s, error=%s", node_name(n), nn_strerror(errno)); diff --git a/lib/nodes/rtp.cpp b/lib/nodes/rtp.cpp index b8735b9d0..46c536999 100644 --- a/lib/nodes/rtp.cpp +++ b/lib/nodes/rtp.cpp @@ -340,10 +340,6 @@ int rtp_start(struct vnode *n) if (ret) return -1; - ret = io_check(&r->io); - if (ret) - return ret; - /* Initialize AIMD hook */ if (r->aimd.rate_hook_type != RTPHookType::DISABLED) { #ifdef WITH_HOOKS diff --git a/lib/nodes/socket.cpp b/lib/nodes/socket.cpp index ccfcd5d6a..10fa6dceb 100644 --- a/lib/nodes/socket.cpp +++ b/lib/nodes/socket.cpp @@ -168,10 +168,6 @@ int socket_start(struct vnode *n) if (ret) return ret; - ret = io_check(&s->io); - if (ret) - return ret; - /* Create socket */ switch (s->layer) { case SocketLayer::UDP: diff --git a/lib/nodes/test_rtt.cpp b/lib/nodes/test_rtt.cpp index d683be23c..728c5b357 100644 --- a/lib/nodes/test_rtt.cpp +++ b/lib/nodes/test_rtt.cpp @@ -297,10 +297,6 @@ int test_rtt_start(struct vnode *n) if (ret) return ret; - ret = io_check(&t->io); - if (ret) - return ret; - t->task.setRate(c->rate); t->current = -1; diff --git a/lib/nodes/websocket.cpp b/lib/nodes/websocket.cpp index 2af573740..87fd29137 100644 --- a/lib/nodes/websocket.cpp +++ b/lib/nodes/websocket.cpp @@ -94,10 +94,6 @@ static int websocket_connection_init(struct websocket_connection *c) if (ret) return ret; - ret = io_check(&c->io); - if (ret) - return ret; - c->buffers.recv = new Buffer(DEFAULT_WEBSOCKET_BUFFER_SIZE); c->buffers.send = new Buffer(DEFAULT_WEBSOCKET_BUFFER_SIZE); diff --git a/lib/nodes/zeromq.cpp b/lib/nodes/zeromq.cpp index 9bfd7fa3a..e82c0e46f 100644 --- a/lib/nodes/zeromq.cpp +++ b/lib/nodes/zeromq.cpp @@ -327,10 +327,6 @@ int zeromq_start(struct vnode *n) if (ret) return ret; - ret = io_check(&z->io); - if (ret) - return ret; - switch (z->pattern) { #ifdef ZMQ_BUILD_DISH case zeromq::Pattern::RADIODISH: diff --git a/src/villas-convert.cpp b/src/villas-convert.cpp index a4bde06da..2871657b2 100644 --- a/src/villas-convert.cpp +++ b/src/villas-convert.cpp @@ -136,10 +136,6 @@ protected: if (ret) throw RuntimeError("Failed to initialize IO: {}", dirs[i].name); - ret = io_check(&dirs[i].io); - if (ret) - throw RuntimeError("Failed to validate IO configuration"); - ret = io_open(&dirs[i].io, nullptr); if (ret) throw RuntimeError("Failed to open IO"); diff --git a/src/villas-hook.cpp b/src/villas-hook.cpp index eab43d953..891716636 100644 --- a/src/villas-hook.cpp +++ b/src/villas-hook.cpp @@ -211,10 +211,6 @@ check: if (optarg == endptr) if (ret) throw RuntimeError("Failed to initialize IO"); - ret = io_check(&io); - if (ret) - throw RuntimeError("Failed to validate IO configuration"); - ret = io_open(&io, nullptr); if (ret) throw RuntimeError("Failed to open IO"); diff --git a/src/villas-pipe.cpp b/src/villas-pipe.cpp index 86e63de7b..dd0995c84 100644 --- a/src/villas-pipe.cpp +++ b/src/villas-pipe.cpp @@ -421,10 +421,6 @@ check: if (optarg == endptr) if (ret) throw RuntimeError("Failed to initialize IO"); - ret = io_check(&io); - if (ret) - throw RuntimeError("Failed to validate IO configuration"); - ret = io_open(&io, nullptr); if (ret) throw RuntimeError("Failed to open IO"); diff --git a/src/villas-signal.cpp b/src/villas-signal.cpp index ead053a30..85f746670 100644 --- a/src/villas-signal.cpp +++ b/src/villas-signal.cpp @@ -265,10 +265,6 @@ check: if (optarg == endptr) if (ret) throw RuntimeError("Failed to initialize output"); - ret = io_check(&io); - if (ret) - throw RuntimeError("Failed to validate IO configuration"); - ret = pool_init(&q, 16, SAMPLE_LENGTH(vlist_length(&n.in.signals)), &memory_heap); if (ret) throw RuntimeError("Failed to initialize pool"); diff --git a/src/villas-test-cmp.cpp b/src/villas-test-cmp.cpp index 0602c6f57..6c8601131 100644 --- a/src/villas-test-cmp.cpp +++ b/src/villas-test-cmp.cpp @@ -63,10 +63,6 @@ public: if (ret) throw RuntimeError("Failed to initialize IO"); - ret = io_check(&io); - if (ret) - throw RuntimeError("Failed to validate IO configuration"); - ret = io_open(&io, path.c_str()); if (ret) throw RuntimeError("Failed to open file: {}", path); diff --git a/tests/unit/io.cpp b/tests/unit/io.cpp index d986d3ea4..0b3518c09 100644 --- a/tests/unit/io.cpp +++ b/tests/unit/io.cpp @@ -258,9 +258,6 @@ ParameterizedTest(Param *p, io, lowlevel, .init = init_memory) ret = io_init(&io, f, &signals, (int) SampleFlags::HAS_ALL); cr_assert_eq(ret, 0); - ret = io_check(&io); - cr_assert_eq(ret, 0); - cnt = io_sprint(&io, buf, sizeof(buf), &wbytes, smps, p->cnt); cr_assert_eq(cnt, p->cnt, "Written only %d of %d samples for format %s", cnt, p->cnt, format_type_name(f)); @@ -359,9 +356,6 @@ ParameterizedTest(Param *p, io, highlevel, .init = init_memory) ret = io_init(&io, f, &signals, (int) SampleFlags::HAS_ALL); cr_assert_eq(ret, 0); - ret = io_check(&io); - cr_assert_eq(ret, 0); - ret = io_open(&io, fn); cr_assert_eq(ret, 0);