From 221937bb5ecdf9375b2aaeeea7a8d222e029c7d7 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 12 May 2018 18:01:48 +0200 Subject: [PATCH] io: pass instance pointer everywhere --- include/villas/format_type.h | 4 +- include/villas/formats/json.h | 8 ++-- include/villas/formats/protobuf.h | 4 +- include/villas/formats/raw.h | 4 +- include/villas/formats/villas_binary.h | 4 +- lib/formats/csv.c | 18 +++---- lib/formats/json.c | 28 +++++------ lib/formats/json_reserve.c | 16 +++---- lib/formats/protobuf.c | 4 +- lib/formats/raw.c | 65 +++++++++++++------------- lib/formats/villas_binary.c | 14 +++--- lib/formats/villas_human.c | 20 ++++---- 12 files changed, 96 insertions(+), 93 deletions(-) diff --git a/include/villas/format_type.h b/include/villas/format_type.h index af3282bf6..68721a9d8 100644 --- a/include/villas/format_type.h +++ b/include/villas/format_type.h @@ -90,10 +90,10 @@ struct format_type { */ /** @see format_type_sscan */ - int (*sscan)(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags); + int (*sscan)(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt); /** @see format_type_sprint */ - int (*sprint)(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags); + int (*sprint)(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt); /** @} */ diff --git a/include/villas/formats/json.h b/include/villas/formats/json.h index d16df8f5b..5f8778417 100644 --- a/include/villas/formats/json.h +++ b/include/villas/formats/json.h @@ -27,10 +27,10 @@ /* Forward declarations */ struct sample; -int json_pack_sample(json_t **j, struct sample *s, int flags); +int json_pack_sample(struct io *io, json_t **j, struct sample *s); -int json_unpack_sample(json_t *j, struct sample *s, int flags); +int json_unpack_sample(struct io *io, json_t *j, struct sample *s); -int json_fprint(FILE *f, struct sample *smps[], unsigned cnt, int flags); +int json_fprint(struct io *io, FILE *f, struct sample *smps[], unsigned cnt); -int json_fscan(FILE *f, struct sample *smps[], unsigned cnt, int flags); +int json_fscan(struct io *io, FILE *f, struct sample *smps[], unsigned cnt); diff --git a/include/villas/formats/protobuf.h b/include/villas/formats/protobuf.h index abba82533..49f171555 100644 --- a/include/villas/formats/protobuf.h +++ b/include/villas/formats/protobuf.h @@ -29,7 +29,7 @@ struct sample; /** Copy / read struct msg's from buffer \p buf to / fram samples \p smps. */ -int protobuf_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags); +int protobuf_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt); /** Read struct sample's from buffer \p buf into samples \p smps. */ -int protobuf_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags); +int protobuf_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt); diff --git a/include/villas/formats/raw.h b/include/villas/formats/raw.h index 9fa5d04cb..7d0b1e3b9 100644 --- a/include/villas/formats/raw.h +++ b/include/villas/formats/raw.h @@ -54,7 +54,7 @@ enum raw_flags { }; /** Copy / read struct msg's from buffer \p buf to / fram samples \p smps. */ -int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags); +int raw_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt); /** Read struct sample's from buffer \p buf into samples \p smps. */ -int raw_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags); +int raw_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt); diff --git a/include/villas/formats/villas_binary.h b/include/villas/formats/villas_binary.h index 6f567ce61..79dd248e4 100644 --- a/include/villas/formats/villas_binary.h +++ b/include/villas/formats/villas_binary.h @@ -35,7 +35,7 @@ enum villas_binary_flags { }; /** Copy / read struct msg's from buffer \p buf to / fram samples \p smps. */ -int villas_binary_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags); +int villas_binary_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt); /** Read struct sample's from buffer \p buf into samples \p smps. */ -int villas_binary_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags); +int villas_binary_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt); diff --git a/lib/formats/csv.c b/lib/formats/csv.c index 42ad3dcd7..8c682306d 100644 --- a/lib/formats/csv.c +++ b/lib/formats/csv.c @@ -30,21 +30,21 @@ #include #include -size_t csv_sprint_single(char *buf, size_t len, struct sample *s, int flags) +size_t csv_sprint_single(struct io *io, char *buf, size_t len, struct sample *s) { size_t off = 0; - if (flags & SAMPLE_HAS_ORIGIN) + if (io->flags & SAMPLE_HAS_ORIGIN) off += snprintf(buf + off, len - off, "%ld%c%09ld", s->ts.origin.tv_sec, CSV_SEPARATOR, s->ts.origin.tv_nsec); else off += snprintf(buf + off, len - off, "nan%cnan", CSV_SEPARATOR); - if (flags & SAMPLE_HAS_RECEIVED) + if (io->flags & SAMPLE_HAS_RECEIVED) off += snprintf(buf + off, len - off, "%c%f", CSV_SEPARATOR, time_delta(&s->ts.origin, &s->ts.received)); else off += snprintf(buf + off, len - off, "%cnan", CSV_SEPARATOR); - if (flags & SAMPLE_HAS_SEQUENCE) + if (io->flags & SAMPLE_HAS_SEQUENCE) off += snprintf(buf + off, len - off, "%c%u", CSV_SEPARATOR, s->sequence); else off += snprintf(buf + off, len - off, "%cnan", CSV_SEPARATOR); @@ -65,7 +65,7 @@ size_t csv_sprint_single(char *buf, size_t len, struct sample *s, int flags) return off; } -size_t csv_sscan_single(const char *buf, size_t len, struct sample *s, int flags) +size_t csv_sscan_single(struct io *io, const char *buf, size_t len, struct sample *s) { const char *ptr = buf; char *end; @@ -127,13 +127,13 @@ out: if (*end == '\n') return end - buf; } -int csv_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int csv_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { int i; size_t off = 0; for (i = 0; i < cnt && off < len; i++) - off += csv_sprint_single(buf + off, len - off, smps[i], flags); + off += csv_sprint_single(io, buf + off, len - off, smps[i]); if (wbytes) *wbytes = off; @@ -141,13 +141,13 @@ int csv_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], uns return i; } -int csv_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int csv_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { int i; size_t off = 0; for (i = 0; i < cnt && off < len; i++) - off += csv_sscan_single(buf + off, len - off, smps[i], flags); + off += csv_sscan_single(io, buf + off, len - off, smps[i]); if (rbytes) *rbytes = off; diff --git a/lib/formats/json.c b/lib/formats/json.c index 639f6a968..be5faae5a 100644 --- a/lib/formats/json.c +++ b/lib/formats/json.c @@ -69,20 +69,20 @@ static int json_unpack_timestamps(json_t *json_ts, struct sample *smp) return 0; } -int json_pack_sample(json_t **j, struct sample *smp, int flags) +int json_pack_sample(struct io *io, json_t **j, struct sample *smp) { json_t *json_smp; json_error_t err; json_smp = json_pack_ex(&err, 0, "{ s: o }", "ts", json_pack_timestamps(smp)); - if (flags & SAMPLE_HAS_SEQUENCE) { + if (smp->flags & SAMPLE_HAS_SEQUENCE) { json_t *json_sequence = json_integer(smp->sequence); json_object_set(json_smp, "sequence", json_sequence); } - if (flags & SAMPLE_HAS_VALUES) { + if (smp->flags & SAMPLE_HAS_VALUES) { json_t *json_data = json_array(); for (int i = 0; i < smp->length; i++) { @@ -101,7 +101,7 @@ int json_pack_sample(json_t **j, struct sample *smp, int flags) return 0; } -int json_pack_samples(json_t **j, struct sample *smps[], unsigned cnt, int flags) +int json_pack_samples(struct io *io, json_t **j, struct sample *smps[], unsigned cnt) { int ret; json_t *json_smps = json_array(); @@ -109,7 +109,7 @@ int json_pack_samples(json_t **j, struct sample *smps[], unsigned cnt, int flags for (int i = 0; i < cnt; i++) { json_t *json_smp; - ret = json_pack_sample(&json_smp, smps[i], flags); + ret = json_pack_sample(io, &json_smp, smps[i]); if (ret) break; @@ -121,7 +121,7 @@ int json_pack_samples(json_t **j, struct sample *smps[], unsigned cnt, int flags return cnt; } -int json_unpack_sample(json_t *json_smp, struct sample *smp, int flags) +int json_unpack_sample(struct io *io, json_t *json_smp, struct sample *smp) { int ret; json_error_t err; @@ -181,7 +181,7 @@ int json_unpack_sample(json_t *json_smp, struct sample *smp, int flags) return 0; } -int json_unpack_samples(json_t *json_smps, struct sample *smps[], unsigned cnt, int flags) +int json_unpack_samples(struct io *io, json_t *json_smps, struct sample *smps[], unsigned cnt) { int ret; json_t *json_smp; @@ -194,7 +194,7 @@ int json_unpack_samples(json_t *json_smps, struct sample *smps[], unsigned cnt, if (i >= cnt) break; - ret = json_unpack_sample(json_smp, smps[i], flags); + ret = json_unpack_sample(io, json_smp, smps[i]); if (ret < 0) break; } @@ -202,13 +202,13 @@ int json_unpack_samples(json_t *json_smps, struct sample *smps[], unsigned cnt, return i; } -int json_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int json_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { int ret; json_t *json; size_t wr; - ret = json_pack_samples(&json, smps, cnt, flags); + ret = json_pack_samples(io, &json, smps, cnt); if (ret < 0) return ret; @@ -222,7 +222,7 @@ int json_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], un return ret; } -int json_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int json_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { int ret; json_t *json; @@ -232,7 +232,7 @@ int json_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], uns if (!json) return -1; - ret = json_unpack_samples(json, smps, cnt, flags); + ret = json_unpack_samples(io, json, smps, cnt); json_decref(json); @@ -253,7 +253,7 @@ int json_print(struct io *io, struct sample *smps[], unsigned cnt) FILE *f = io_stream_output(io); for (i = 0; i < cnt; i++) { - ret = json_pack_sample(&json, smps[i], io->flags); + ret = json_pack_sample(io, &json, smps[i]); if (ret) return ret; @@ -279,7 +279,7 @@ skip: json = json_loadf(f, JSON_DISABLE_EOF_CHECK, &err); if (!json) break; - ret = json_unpack_sample(json, smps[i], io->flags); + ret = json_unpack_sample(io, json, smps[i]); if (ret) goto skip; diff --git a/lib/formats/json_reserve.c b/lib/formats/json_reserve.c index b77c09cdd..632c79414 100644 --- a/lib/formats/json_reserve.c +++ b/lib/formats/json_reserve.c @@ -29,7 +29,7 @@ #include #include -int json_reserve_pack_sample(json_t **j, struct sample *smp, int flags) +int json_reserve_pack_sample(struct io *io, json_t **j, struct sample *smp) { json_error_t err; json_t *json_data, *json_name, *json_unit, *json_value; @@ -95,7 +95,7 @@ int json_reserve_pack_sample(json_t **j, struct sample *smp, int flags) return 0; } -int json_reserve_unpack_sample(json_t *json_smp, struct sample *smp, int flags) +int json_reserve_unpack_sample(struct io *io, json_t *json_smp, struct sample *smp) { int ret, idx; double created = -1; @@ -162,7 +162,7 @@ int json_reserve_unpack_sample(json_t *json_smp, struct sample *smp, int flags) * Note: The following functions are the same as io/json.c !!! */ -int json_reserve_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int json_reserve_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { int ret; json_t *json; @@ -170,7 +170,7 @@ int json_reserve_sprint(char *buf, size_t len, size_t *wbytes, struct sample *sm assert(cnt == 1); - ret = json_reserve_pack_sample(&json, smps[0], flags); + ret = json_reserve_pack_sample(io, &json, smps[0]); if (ret < 0) return ret; @@ -184,7 +184,7 @@ int json_reserve_sprint(char *buf, size_t len, size_t *wbytes, struct sample *sm return ret; } -int json_reserve_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int json_reserve_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { int ret; json_t *json; @@ -196,7 +196,7 @@ int json_reserve_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smp if (!json) return -1; - ret = json_reserve_unpack_sample(json, smps[0], flags); + ret = json_reserve_unpack_sample(io, json, smps[0]); json_decref(json); @@ -217,7 +217,7 @@ int json_reserve_print(struct io *io, struct sample *smps[], unsigned cnt) FILE *f = io_stream_output(io); for (i = 0; i < cnt; i++) { - ret = json_reserve_pack_sample(&json, smps[i], io->flags); + ret = json_reserve_pack_sample(io, &json, smps[i]); if (ret) return ret; @@ -243,7 +243,7 @@ skip: json = json_loadf(f, JSON_DISABLE_EOF_CHECK, &err); if (!json) break; - ret = json_reserve_unpack_sample(json, smps[i], io->flags); + ret = json_reserve_unpack_sample(io, json, smps[i]); if (ret) goto skip; diff --git a/lib/formats/protobuf.c b/lib/formats/protobuf.c index 06d37e184..1d6cb2de8 100644 --- a/lib/formats/protobuf.c +++ b/lib/formats/protobuf.c @@ -27,7 +27,7 @@ #include #include -int protobuf_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int protobuf_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { unsigned psz; @@ -93,7 +93,7 @@ out: return -1; } -int protobuf_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int protobuf_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { unsigned i, j; Villas__Node__Message *pb_msg; diff --git a/lib/formats/raw.c b/lib/formats/raw.c index 270a9c6e7..d2572adc5 100644 --- a/lib/formats/raw.c +++ b/lib/formats/raw.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -56,7 +57,7 @@ /** Convert integer of varying width to big/little endian byte order */ #define SWAP_INT_TOE(o, b, n) (o ? htobe ## b (n) : htole ## b (n)) -int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int raw_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { int i, o = 0; @@ -69,25 +70,25 @@ int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], uns float *f32 = (void *) buf; double *f64 = (void *) buf; - int bits = 1 << (flags >> 24); + int bits = 1 << (io->flags >> 24); for (i = 0; i < cnt; i++) { - nlen = (smps[i]->length + o + (flags & RAW_FAKE) ? 3 : 0) * (bits / 8); + nlen = (smps[i]->length + o + (io->flags & RAW_FAKE) ? 3 : 0) * (bits / 8); if (nlen >= len) break; /* First three values are sequence, seconds and nano-seconds timestamps */ - if (flags & RAW_FAKE) { + if (io->flags & RAW_FAKE) { switch (bits) { case 32: - i32[o++] = SWAP_INT_TOE(flags & RAW_BE_HDR, 32, smps[i]->sequence); - i32[o++] = SWAP_INT_TOE(flags & RAW_BE_HDR, 32, smps[i]->ts.origin.tv_sec); - i32[o++] = SWAP_INT_TOE(flags & RAW_BE_HDR, 32, smps[i]->ts.origin.tv_nsec); + i32[o++] = SWAP_INT_TOE(io->flags & RAW_BE_HDR, 32, smps[i]->sequence); + i32[o++] = SWAP_INT_TOE(io->flags & RAW_BE_HDR, 32, smps[i]->ts.origin.tv_sec); + i32[o++] = SWAP_INT_TOE(io->flags & RAW_BE_HDR, 32, smps[i]->ts.origin.tv_nsec); break; case 64: - i64[o++] = SWAP_INT_TOE(flags & RAW_BE_HDR, 64, smps[i]->sequence); - i64[o++] = SWAP_INT_TOE(flags & RAW_BE_HDR, 64, smps[i]->ts.origin.tv_sec); - i64[o++] = SWAP_INT_TOE(flags & RAW_BE_HDR, 64, smps[i]->ts.origin.tv_nsec); + i64[o++] = SWAP_INT_TOE(io->flags & RAW_BE_HDR, 64, smps[i]->sequence); + i64[o++] = SWAP_INT_TOE(io->flags & RAW_BE_HDR, 64, smps[i]->ts.origin.tv_sec); + i64[o++] = SWAP_INT_TOE(io->flags & RAW_BE_HDR, 64, smps[i]->ts.origin.tv_nsec); break; } } @@ -103,9 +104,9 @@ int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], uns union { double f; uint64_t i; } val; - if (flags & RAW_AUTO) + if (io->flags & RAW_AUTO) raw_fmt = smps[i]->format & (1 << i) ? RAW_FORMAT_INT : RAW_FORMAT_FLT; - else if (flags & RAW_FLT) + else if (io->flags & RAW_FLT) raw_fmt = RAW_FORMAT_FLT; else raw_fmt = RAW_FORMAT_INT; @@ -121,8 +122,8 @@ int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], uns } switch (bits) { - case 32: f32[o++] = SWAP_FLT_TOE(flags & RAW_BE_FLT, val.f); break; - case 64: f64[o++] = SWAP_DBL_TOE(flags & RAW_BE_FLT, val.f); break; + case 32: f32[o++] = SWAP_FLT_TOE(io->flags & RAW_BE_FLT, val.f); break; + case 64: f64[o++] = SWAP_DBL_TOE(io->flags & RAW_BE_FLT, val.f); break; } break; @@ -135,9 +136,9 @@ int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], uns switch (bits) { case 8: i8 [o++] = val.i; break; - case 16: i16[o++] = SWAP_INT_TOE(flags & RAW_BE_INT, 16, val.i); break; - case 32: i32[o++] = SWAP_INT_TOE(flags & RAW_BE_INT, 32, val.i); break; - case 64: i64[o++] = SWAP_INT_TOE(flags & RAW_BE_INT, 64, val.i); break; + case 16: i16[o++] = SWAP_INT_TOE(io->flags & RAW_BE_INT, 16, val.i); break; + case 32: i32[o++] = SWAP_INT_TOE(io->flags & RAW_BE_INT, 32, val.i); break; + case 64: i64[o++] = SWAP_INT_TOE(io->flags & RAW_BE_INT, 64, val.i); break; } break; } @@ -150,7 +151,7 @@ int raw_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], uns return i; } -int raw_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int raw_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { /* The raw format can not encode multiple samples in one buffer * as there is no support for framing. */ @@ -163,11 +164,11 @@ int raw_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsi float *f32 = (void *) buf; double *f64 = (void *) buf; - int off, bits = 1 << (flags >> 24); + int off, bits = 1 << (io->flags >> 24); smp->length = len / (bits / 8); - if (flags & RAW_FAKE) { + if (io->flags & RAW_FAKE) { off = 3; if (smp->length < off) { @@ -179,15 +180,15 @@ int raw_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsi switch (bits) { case 32: - smp->sequence = SWAP_INT_TOH(flags & RAW_BE_HDR, 32, i32[0]); - smp->ts.origin.tv_sec = SWAP_INT_TOH(flags & RAW_BE_HDR, 32, i32[1]); - smp->ts.origin.tv_nsec = SWAP_INT_TOH(flags & RAW_BE_HDR, 32, i32[2]); + smp->sequence = SWAP_INT_TOH(io->flags & RAW_BE_HDR, 32, i32[0]); + smp->ts.origin.tv_sec = SWAP_INT_TOH(io->flags & RAW_BE_HDR, 32, i32[1]); + smp->ts.origin.tv_nsec = SWAP_INT_TOH(io->flags & RAW_BE_HDR, 32, i32[2]); break; case 64: - smp->sequence = SWAP_INT_TOH(flags & RAW_BE_HDR, 64, i64[0]); - smp->ts.origin.tv_sec = SWAP_INT_TOH(flags & RAW_BE_HDR, 64, i64[1]); - smp->ts.origin.tv_nsec = SWAP_INT_TOH(flags & RAW_BE_HDR, 64, i64[2]); + smp->sequence = SWAP_INT_TOH(io->flags & RAW_BE_HDR, 64, i64[0]); + smp->ts.origin.tv_sec = SWAP_INT_TOH(io->flags & RAW_BE_HDR, 64, i64[1]); + smp->ts.origin.tv_nsec = SWAP_INT_TOH(io->flags & RAW_BE_HDR, 64, i64[2]); break; } @@ -208,7 +209,7 @@ int raw_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsi } for (int i = 0; i < smp->length; i++) { - enum sample_data_format smp_fmt = flags & RAW_FLT ? SAMPLE_DATA_FORMAT_FLOAT + enum sample_data_format smp_fmt = io->flags & RAW_FLT ? SAMPLE_DATA_FORMAT_FLOAT : SAMPLE_DATA_FORMAT_INT; sample_set_data_format(smp, i, smp_fmt); @@ -216,17 +217,17 @@ int raw_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsi switch (smp_fmt) { case SAMPLE_DATA_FORMAT_FLOAT: switch (bits) { - case 32: smp->data[i].f = SWAP_FLT_TOH(flags & RAW_BE_FLT, f32[i+off]); break; - case 64: smp->data[i].f = SWAP_DBL_TOH(flags & RAW_BE_FLT, f64[i+off]); break; + case 32: smp->data[i].f = SWAP_FLT_TOH(io->flags & RAW_BE_FLT, f32[i+off]); break; + case 64: smp->data[i].f = SWAP_DBL_TOH(io->flags & RAW_BE_FLT, f64[i+off]); break; } break; case SAMPLE_DATA_FORMAT_INT: switch (bits) { case 8: smp->data[i].i = i8[i]; break; - case 16: smp->data[i].i = (int16_t) SWAP_INT_TOH(flags & RAW_BE_INT, 16, i16[i+off]); break; - case 32: smp->data[i].i = (int32_t) SWAP_INT_TOH(flags & RAW_BE_INT, 32, i32[i+off]); break; - case 64: smp->data[i].i = (int64_t) SWAP_INT_TOH(flags & RAW_BE_INT, 64, i64[i+off]); break; + case 16: smp->data[i].i = (int16_t) SWAP_INT_TOH(io->flags & RAW_BE_INT, 16, i16[i+off]); break; + case 32: smp->data[i].i = (int32_t) SWAP_INT_TOH(io->flags & RAW_BE_INT, 32, i32[i+off]); break; + case 64: smp->data[i].i = (int64_t) SWAP_INT_TOH(io->flags & RAW_BE_INT, 64, i64[i+off]); break; } break; } diff --git a/lib/formats/villas_binary.c b/lib/formats/villas_binary.c index 3b6690d29..8d7f6014d 100644 --- a/lib/formats/villas_binary.c +++ b/lib/formats/villas_binary.c @@ -22,6 +22,7 @@ #include +#include #include #include #include @@ -29,7 +30,7 @@ #include #include -int villas_binary_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int villas_binary_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { int ret, i = 0; char *ptr = buf; @@ -45,7 +46,7 @@ int villas_binary_sprint(char *buf, size_t len, size_t *wbytes, struct sample *s if (ret) return ret; - if (flags & VILLAS_BINARY_WEB) { + if (io->flags & VILLAS_BINARY_WEB) { /** @todo convert to little endian */ } else @@ -60,7 +61,7 @@ int villas_binary_sprint(char *buf, size_t len, size_t *wbytes, struct sample *s return i; } -int villas_binary_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int villas_binary_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { int ret, i = 0, values; char *ptr = buf; @@ -84,7 +85,7 @@ int villas_binary_sscan(char *buf, size_t len, size_t *rbytes, struct sample *sm break; } - values = (flags & VILLAS_BINARY_WEB) ? msg->length : ntohs(msg->length); + values = (io->flags & VILLAS_BINARY_WEB) ? msg->length : ntohs(msg->length); /* Check if remainder of message is in buffer boundaries */ if (ptr + MSG_LEN(values) > buf + len) { @@ -92,8 +93,9 @@ int villas_binary_sscan(char *buf, size_t len, size_t *rbytes, struct sample *sm break; } - if (flags & VILLAS_BINARY_WEB) - ; + if (io->flags & VILLAS_BINARY_WEB) { + /** @todo convert from little endian */ + } else msg_ntoh(msg); diff --git a/lib/formats/villas_human.c b/lib/formats/villas_human.c index 08dc33ad9..357de557c 100644 --- a/lib/formats/villas_human.c +++ b/lib/formats/villas_human.c @@ -31,22 +31,22 @@ #include #include -size_t villas_human_sprint_single(char *buf, size_t len, struct sample *s, int flags) +size_t villas_human_sprint_single(struct io *io, char *buf, size_t len, struct sample *s) { size_t off = 0; - if (flags & SAMPLE_HAS_ORIGIN) { + if (io->flags & SAMPLE_HAS_ORIGIN) { off += snprintf(buf + off, len - off, "%llu", (unsigned long long) s->ts.origin.tv_sec); off += snprintf(buf + off, len - off, ".%09llu", (unsigned long long) s->ts.origin.tv_nsec); } - if (flags & SAMPLE_HAS_RECEIVED) + if (io->flags & SAMPLE_HAS_RECEIVED) off += snprintf(buf + off, len - off, "%+e", time_delta(&s->ts.origin, &s->ts.received)); - if (flags & SAMPLE_HAS_SEQUENCE) + if (io->flags & SAMPLE_HAS_SEQUENCE) off += snprintf(buf + off, len - off, "(%u)", s->sequence); - if (flags & SAMPLE_HAS_VALUES) { + if (io->flags & SAMPLE_HAS_VALUES) { for (int i = 0; i < s->length; i++) { switch (sample_get_data_format(s, i)) { case SAMPLE_DATA_FORMAT_FLOAT: @@ -64,7 +64,7 @@ size_t villas_human_sprint_single(char *buf, size_t len, struct sample *s, int f return off; } -size_t villas_human_sscan_single(const char *buf, size_t len, struct sample *s, int flags) +size_t villas_human_sscan_single(struct io *io, const char *buf, size_t len, struct sample *s) { char *end; const char *ptr = buf; @@ -158,13 +158,13 @@ size_t villas_human_sscan_single(const char *buf, size_t len, struct sample *s, return end - buf; } -int villas_human_sprint(char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt, int flags) +int villas_human_sprint(struct io *io, char *buf, size_t len, size_t *wbytes, struct sample *smps[], unsigned cnt) { int i; size_t off = 0; for (i = 0; i < cnt && off < len; i++) - off += villas_human_sprint_single(buf + off, len - off, smps[i], flags); + off += villas_human_sprint_single(io, buf + off, len - off, smps[i]); if (wbytes) *wbytes = off; @@ -172,13 +172,13 @@ int villas_human_sprint(char *buf, size_t len, size_t *wbytes, struct sample *sm return i; } -int villas_human_sscan(char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt, int flags) +int villas_human_sscan(struct io *io, char *buf, size_t len, size_t *rbytes, struct sample *smps[], unsigned cnt) { int i; size_t off = 0; for (i = 0; i < cnt && off < len; i++) - off += villas_human_sscan_single(buf + off, len - off, smps[i], flags); + off += villas_human_sscan_single(io, buf + off, len - off, smps[i]); if (rbytes) *rbytes = off;