From 30c7fcb1e505598a57bd42dfec2e0ec12261e200 Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Mon, 10 Jul 2023 14:45:25 +0200 Subject: [PATCH] Move workspace crates into subfolder --- Cargo.toml | 2 +- {bitshuffle => crates/bitshuffle}/Cargo.toml | 0 {bitshuffle => crates/bitshuffle}/build.rs | 0 .../bitshuffle}/src/bitshuffle.c | 0 .../bitshuffle}/src/bitshuffle.h | 0 .../bitshuffle}/src/bitshuffle.rs | 0 .../bitshuffle}/src/bitshuffle_core.c | 0 .../bitshuffle}/src/bitshuffle_core.h | 0 .../bitshuffle}/src/bitshuffle_internals.h | 0 .../bitshuffle}/src/iochain.c | 0 .../bitshuffle}/src/iochain.h | 0 {bitshuffle => crates/bitshuffle}/src/lz4.c | 0 {bitshuffle => crates/bitshuffle}/src/lz4.h | 0 {commonio => crates/commonio}/Cargo.toml | 0 {commonio => crates/commonio}/src/commonio.rs | 0 {commonio => crates/commonio}/src/ringbuf.rs | 0 {daqbuffer => crates/daqbuffer}/Cargo.toml | 0 .../daqbuffer}/src/bin/daqbuffer.rs | 0 {daqbuffer => crates/daqbuffer}/src/cli.rs | 0 {daqbuffer => crates/daqbuffer}/src/err.rs | 0 {daqbuffer => crates/daqbuffer}/src/lib.rs | 0 {daqbufp2 => crates/daqbufp2}/Cargo.toml | 0 {daqbufp2 => crates/daqbufp2}/src/client.rs | 0 {daqbufp2 => crates/daqbufp2}/src/daqbufp2.rs | 0 {daqbufp2 => crates/daqbufp2}/src/err.rs | 0 {daqbufp2 => crates/daqbufp2}/src/nodes.rs | 0 {daqbufp2 => crates/daqbufp2}/src/test.rs | 0 .../daqbufp2}/src/test/api1.rs | 0 .../src/test/api1/data_api_python.rs | 0 .../daqbufp2}/src/test/api4.rs | 0 .../daqbufp2}/src/test/api4/binnedjson.rs | 0 .../daqbufp2}/src/test/api4/common.rs | 0 .../daqbufp2}/src/test/api4/eventsjson.rs | 0 .../daqbufp2}/src/test/api4/pulseiddiff.rs | 0 .../daqbufp2}/src/test/archapp.rs | 0 .../daqbufp2}/src/test/binnedjson.rs | 0 .../src/test/binnedjson/channelarchiver.rs | 0 .../daqbufp2}/src/test/timeweightedjson.rs | 0 {dbconn => crates/dbconn}/Cargo.toml | 0 .../dbconn}/src/channelconfig.rs | 0 {dbconn => crates/dbconn}/src/dbconn.rs | 0 {dbconn => crates/dbconn}/src/query.rs | 0 {dbconn => crates/dbconn}/src/scan.rs | 0 .../dbconn}/src/scan/updatechannelnames.rs | 0 {dbconn => crates/dbconn}/src/search.rs | 0 {disk => crates/disk}/Cargo.toml | 0 {disk => crates/disk}/src/agg/binnedt.rs | 0 .../disk}/src/agg/scalarbinbatch.rs | 0 {disk => crates/disk}/src/agg/streams.rs | 0 {disk => crates/disk}/src/aggtest.rs | 0 .../disk}/src/binned/binnedfrompbv.rs | 0 {disk => crates/disk}/src/binned/dim1.rs | 0 {disk => crates/disk}/src/binned/pbv.rs | 0 {disk => crates/disk}/src/binned/prebinned.rs | 0 {disk => crates/disk}/src/binnedstream.rs | 0 {disk => crates/disk}/src/cache.rs | 0 {disk => crates/disk}/src/channelconfig.rs | 10 +- {disk => crates/disk}/src/dataopen.rs | 0 {disk => crates/disk}/src/decode.rs | 0 {disk => crates/disk}/src/disk.rs | 2 + {disk => crates/disk}/src/eventblobs.rs | 0 {disk => crates/disk}/src/eventchunker.rs | 0 {disk => crates/disk}/src/frame.rs | 0 {disk => crates/disk}/src/frame/makeframe.rs | 0 {disk => crates/disk}/src/gen.rs | 0 {disk => crates/disk}/src/index.rs | 0 {disk => crates/disk}/src/merge.rs | 0 .../disk}/src/merge/mergedblobsfromremotes.rs | 0 {disk => crates/disk}/src/paths.rs | 0 {disk => crates/disk}/src/raw.rs | 0 {disk => crates/disk}/src/raw/conn.rs | 0 {disk => crates/disk}/src/raw/generated.rs | 0 {disk => crates/disk}/src/read3.rs | 0 {disk => crates/disk}/src/read4.rs | 0 {disk => crates/disk}/src/streamlog.rs | 0 {dq => crates/dq}/Cargo.toml | 0 {dq => crates/dq}/src/bin/daq-convert.rs | 0 {dq => crates/dq}/src/bin/dq.rs | 0 {dq => crates/dq}/src/dq.rs | 0 {err => crates/err}/Cargo.toml | 6 +- {err => crates/err}/src/lib.rs | 50 +++++++- {h5out => crates/h5out}/Cargo.toml | 0 {h5out => crates/h5out}/src/lib.rs | 0 {httpclient => crates/httpclient}/Cargo.toml | 0 .../httpclient}/src/httpclient.rs | 0 {httpclient => crates/httpclient}/src/lib.rs | 0 {httpret => crates/httpret}/Cargo.toml | 0 {httpret => crates/httpret}/src/api1.rs | 0 {httpret => crates/httpret}/src/api4.rs | 1 + .../httpret}/src/api4/binned.rs | 0 crates/httpret/src/api4/databuffer_tools.rs | 110 ++++++++++++++++++ .../httpret}/src/api4/events.rs | 0 .../httpret}/src/api4/search.rs | 0 .../httpret}/src/api4/status.rs | 0 {httpret => crates/httpret}/src/bodystream.rs | 0 .../httpret}/src/channel_status.rs | 0 .../httpret}/src/channelconfig.rs | 0 {httpret => crates/httpret}/src/download.rs | 0 {httpret => crates/httpret}/src/err.rs | 0 {httpret => crates/httpret}/src/evinfo.rs | 0 {httpret => crates/httpret}/src/gather.rs | 0 {httpret => crates/httpret}/src/httpret.rs | 0 {httpret => crates/httpret}/src/prometheus.rs | 0 {httpret => crates/httpret}/src/proxy.rs | 0 {httpret => crates/httpret}/src/proxy/api1.rs | 0 .../httpret}/src/proxy/api1/reqstatus.rs | 0 {httpret => crates/httpret}/src/proxy/api4.rs | 0 .../httpret}/src/proxy/api4/caioclookup.rs | 0 {httpret => crates/httpret}/src/pulsemap.rs | 0 {httpret => crates/httpret}/src/settings.rs | 0 .../httpret}/static/documentation/api1.html | 0 .../httpret}/static/documentation/api4.html | 0 .../httpret}/static/documentation/script.js | 0 .../static/documentation/status-main.html | 0 .../httpret}/static/documentation/style.css | 0 {items_0 => crates/items_0}/Cargo.toml | 0 {items_0 => crates/items_0}/src/collect_s.rs | 0 {items_0 => crates/items_0}/src/container.rs | 0 {items_0 => crates/items_0}/src/framable.rs | 0 {items_0 => crates/items_0}/src/isodate.rs | 0 {items_0 => crates/items_0}/src/items_0.rs | 0 {items_0 => crates/items_0}/src/overlap.rs | 0 {items_0 => crates/items_0}/src/scalar_ops.rs | 0 {items_0 => crates/items_0}/src/streamitem.rs | 0 {items_0 => crates/items_0}/src/subfr.rs | 0 {items_0 => crates/items_0}/src/test.rs | 0 {items_0 => crates/items_0}/src/timebin.rs | 0 .../items_0}/src/timebin/timebinimpl.rs | 0 {items_0 => crates/items_0}/src/transform.rs | 0 {items_2 => crates/items_2}/Cargo.toml | 0 .../items_2}/src/binnedcollected.rs | 0 {items_2 => crates/items_2}/src/binsdim0.rs | 0 .../items_2}/src/binsxbindim0.rs | 0 .../items_2}/src/channelevents.rs | 0 {items_2 => crates/items_2}/src/empty.rs | 0 {items_2 => crates/items_2}/src/eventfull.rs | 0 {items_2 => crates/items_2}/src/eventsdim0.rs | 0 {items_2 => crates/items_2}/src/eventsdim1.rs | 0 .../items_2}/src/eventsxbindim0.rs | 0 {items_2 => crates/items_2}/src/framable.rs | 0 {items_2 => crates/items_2}/src/frame.rs | 0 {items_2 => crates/items_2}/src/inmem.rs | 0 {items_2 => crates/items_2}/src/items_2.rs | 0 {items_2 => crates/items_2}/src/merger.rs | 0 {items_2 => crates/items_2}/src/streams.rs | 0 {items_2 => crates/items_2}/src/test.rs | 0 .../items_2}/src/test/eventsdim0.rs | 0 {items_2 => crates/items_2}/src/testgen.rs | 0 {items_2 => crates/items_2}/src/timebin.rs | 0 {items_2 => crates/items_2}/src/transform.rs | 0 {items_proc => crates/items_proc}/Cargo.toml | 0 .../items_proc}/src/items_proc.rs | 0 {netpod => crates/netpod}/Cargo.toml | 0 {netpod => crates/netpod}/src/histo.rs | 0 {netpod => crates/netpod}/src/netpod.rs | 0 {netpod => crates/netpod}/src/query.rs | 0 {netpod => crates/netpod}/src/query/api1.rs | 0 .../netpod}/src/query/datetime.rs | 0 .../netpod}/src/query/prebinned.rs | 0 {netpod => crates/netpod}/src/range.rs | 0 .../netpod}/src/range/binrange.rs | 0 .../netpod}/src/range/evrange.rs | 0 {netpod => crates/netpod}/src/status.rs | 0 {netpod => crates/netpod}/src/streamext.rs | 0 {nodenet => crates/nodenet}/Cargo.toml | 0 .../nodenet}/src/channelconfig.rs | 36 +++--- .../nodenet}/src/configquorum.rs | 0 {nodenet => crates/nodenet}/src/conn.rs | 0 {nodenet => crates/nodenet}/src/conn/test.rs | 0 {nodenet => crates/nodenet}/src/lib.rs | 0 {nodenet => crates/nodenet}/src/scylla.rs | 0 {parse => crates/parse}/Cargo.toml | 1 + {parse => crates/parse}/src/api1_parse.rs | 0 {parse => crates/parse}/src/channelconfig.rs | 69 +++++++++-- {parse => crates/parse}/src/jsonconf.rs | 0 {parse => crates/parse}/src/lib.rs | 0 {query => crates/query}/Cargo.toml | 0 {query => crates/query}/src/api4.rs | 0 {query => crates/query}/src/api4/binned.rs | 0 {query => crates/query}/src/api4/events.rs | 0 {query => crates/query}/src/lib.rs | 0 {query => crates/query}/src/transform.rs | 0 {scyllaconn => crates/scyllaconn}/Cargo.toml | 0 .../scyllaconn}/src/bincache.rs | 0 .../scyllaconn}/src/errconv.rs | 0 .../scyllaconn}/src/events.rs | 0 .../scyllaconn}/src/scyllaconn.rs | 0 .../scyllaconn}/src/status.rs | 0 {streams => crates/streams}/Cargo.toml | 0 {streams => crates/streams}/src/boxed.rs | 0 {streams => crates/streams}/src/collect.rs | 0 {streams => crates/streams}/src/dtflags.rs | 0 .../streams}/src/filechunkread.rs | 0 {streams => crates/streams}/src/frames.rs | 0 .../streams}/src/frames/eventsfromframes.rs | 0 .../streams}/src/frames/inmem.rs | 0 {streams => crates/streams}/src/generators.rs | 0 {streams => crates/streams}/src/itemclone.rs | 0 {streams => crates/streams}/src/lib.rs | 0 .../streams}/src/needminbuffer.rs | 0 .../streams}/src/plaineventsjson.rs | 0 .../streams}/src/rangefilter2.rs | 0 {streams => crates/streams}/src/slidebuf.rs | 0 .../streams}/src/tcprawclient.rs | 0 {streams => crates/streams}/src/test.rs | 0 .../streams}/src/test/collect.rs | 0 .../streams}/src/test/timebin.rs | 0 {streams => crates/streams}/src/timebin.rs | 0 .../streams}/src/timebinnedjson.rs | 0 {streams => crates/streams}/src/transform.rs | 0 {taskrun => crates/taskrun}/Cargo.toml | 0 {taskrun => crates/taskrun}/src/taskrun.rs | 0 212 files changed, 246 insertions(+), 41 deletions(-) rename {bitshuffle => crates/bitshuffle}/Cargo.toml (100%) rename {bitshuffle => crates/bitshuffle}/build.rs (100%) rename {bitshuffle => crates/bitshuffle}/src/bitshuffle.c (100%) rename {bitshuffle => crates/bitshuffle}/src/bitshuffle.h (100%) rename {bitshuffle => crates/bitshuffle}/src/bitshuffle.rs (100%) rename {bitshuffle => crates/bitshuffle}/src/bitshuffle_core.c (100%) rename {bitshuffle => crates/bitshuffle}/src/bitshuffle_core.h (100%) rename {bitshuffle => crates/bitshuffle}/src/bitshuffle_internals.h (100%) rename {bitshuffle => crates/bitshuffle}/src/iochain.c (100%) rename {bitshuffle => crates/bitshuffle}/src/iochain.h (100%) rename {bitshuffle => crates/bitshuffle}/src/lz4.c (100%) rename {bitshuffle => crates/bitshuffle}/src/lz4.h (100%) rename {commonio => crates/commonio}/Cargo.toml (100%) rename {commonio => crates/commonio}/src/commonio.rs (100%) rename {commonio => crates/commonio}/src/ringbuf.rs (100%) rename {daqbuffer => crates/daqbuffer}/Cargo.toml (100%) rename {daqbuffer => crates/daqbuffer}/src/bin/daqbuffer.rs (100%) rename {daqbuffer => crates/daqbuffer}/src/cli.rs (100%) rename {daqbuffer => crates/daqbuffer}/src/err.rs (100%) rename {daqbuffer => crates/daqbuffer}/src/lib.rs (100%) rename {daqbufp2 => crates/daqbufp2}/Cargo.toml (100%) rename {daqbufp2 => crates/daqbufp2}/src/client.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/daqbufp2.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/err.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/nodes.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api1.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api1/data_api_python.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api4.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api4/binnedjson.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api4/common.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api4/eventsjson.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/api4/pulseiddiff.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/archapp.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/binnedjson.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/binnedjson/channelarchiver.rs (100%) rename {daqbufp2 => crates/daqbufp2}/src/test/timeweightedjson.rs (100%) rename {dbconn => crates/dbconn}/Cargo.toml (100%) rename {dbconn => crates/dbconn}/src/channelconfig.rs (100%) rename {dbconn => crates/dbconn}/src/dbconn.rs (100%) rename {dbconn => crates/dbconn}/src/query.rs (100%) rename {dbconn => crates/dbconn}/src/scan.rs (100%) rename {dbconn => crates/dbconn}/src/scan/updatechannelnames.rs (100%) rename {dbconn => crates/dbconn}/src/search.rs (100%) rename {disk => crates/disk}/Cargo.toml (100%) rename {disk => crates/disk}/src/agg/binnedt.rs (100%) rename {disk => crates/disk}/src/agg/scalarbinbatch.rs (100%) rename {disk => crates/disk}/src/agg/streams.rs (100%) rename {disk => crates/disk}/src/aggtest.rs (100%) rename {disk => crates/disk}/src/binned/binnedfrompbv.rs (100%) rename {disk => crates/disk}/src/binned/dim1.rs (100%) rename {disk => crates/disk}/src/binned/pbv.rs (100%) rename {disk => crates/disk}/src/binned/prebinned.rs (100%) rename {disk => crates/disk}/src/binnedstream.rs (100%) rename {disk => crates/disk}/src/cache.rs (100%) rename {disk => crates/disk}/src/channelconfig.rs (94%) rename {disk => crates/disk}/src/dataopen.rs (100%) rename {disk => crates/disk}/src/decode.rs (100%) rename {disk => crates/disk}/src/disk.rs (99%) rename {disk => crates/disk}/src/eventblobs.rs (100%) rename {disk => crates/disk}/src/eventchunker.rs (100%) rename {disk => crates/disk}/src/frame.rs (100%) rename {disk => crates/disk}/src/frame/makeframe.rs (100%) rename {disk => crates/disk}/src/gen.rs (100%) rename {disk => crates/disk}/src/index.rs (100%) rename {disk => crates/disk}/src/merge.rs (100%) rename {disk => crates/disk}/src/merge/mergedblobsfromremotes.rs (100%) rename {disk => crates/disk}/src/paths.rs (100%) rename {disk => crates/disk}/src/raw.rs (100%) rename {disk => crates/disk}/src/raw/conn.rs (100%) rename {disk => crates/disk}/src/raw/generated.rs (100%) rename {disk => crates/disk}/src/read3.rs (100%) rename {disk => crates/disk}/src/read4.rs (100%) rename {disk => crates/disk}/src/streamlog.rs (100%) rename {dq => crates/dq}/Cargo.toml (100%) rename {dq => crates/dq}/src/bin/daq-convert.rs (100%) rename {dq => crates/dq}/src/bin/dq.rs (100%) rename {dq => crates/dq}/src/dq.rs (100%) rename {err => crates/err}/Cargo.toml (82%) rename {err => crates/err}/src/lib.rs (90%) rename {h5out => crates/h5out}/Cargo.toml (100%) rename {h5out => crates/h5out}/src/lib.rs (100%) rename {httpclient => crates/httpclient}/Cargo.toml (100%) rename {httpclient => crates/httpclient}/src/httpclient.rs (100%) rename {httpclient => crates/httpclient}/src/lib.rs (100%) rename {httpret => crates/httpret}/Cargo.toml (100%) rename {httpret => crates/httpret}/src/api1.rs (100%) rename {httpret => crates/httpret}/src/api4.rs (71%) rename {httpret => crates/httpret}/src/api4/binned.rs (100%) create mode 100644 crates/httpret/src/api4/databuffer_tools.rs rename {httpret => crates/httpret}/src/api4/events.rs (100%) rename {httpret => crates/httpret}/src/api4/search.rs (100%) rename {httpret => crates/httpret}/src/api4/status.rs (100%) rename {httpret => crates/httpret}/src/bodystream.rs (100%) rename {httpret => crates/httpret}/src/channel_status.rs (100%) rename {httpret => crates/httpret}/src/channelconfig.rs (100%) rename {httpret => crates/httpret}/src/download.rs (100%) rename {httpret => crates/httpret}/src/err.rs (100%) rename {httpret => crates/httpret}/src/evinfo.rs (100%) rename {httpret => crates/httpret}/src/gather.rs (100%) rename {httpret => crates/httpret}/src/httpret.rs (100%) rename {httpret => crates/httpret}/src/prometheus.rs (100%) rename {httpret => crates/httpret}/src/proxy.rs (100%) rename {httpret => crates/httpret}/src/proxy/api1.rs (100%) rename {httpret => crates/httpret}/src/proxy/api1/reqstatus.rs (100%) rename {httpret => crates/httpret}/src/proxy/api4.rs (100%) rename {httpret => crates/httpret}/src/proxy/api4/caioclookup.rs (100%) rename {httpret => crates/httpret}/src/pulsemap.rs (100%) rename {httpret => crates/httpret}/src/settings.rs (100%) rename {httpret => crates/httpret}/static/documentation/api1.html (100%) rename {httpret => crates/httpret}/static/documentation/api4.html (100%) rename {httpret => crates/httpret}/static/documentation/script.js (100%) rename {httpret => crates/httpret}/static/documentation/status-main.html (100%) rename {httpret => crates/httpret}/static/documentation/style.css (100%) rename {items_0 => crates/items_0}/Cargo.toml (100%) rename {items_0 => crates/items_0}/src/collect_s.rs (100%) rename {items_0 => crates/items_0}/src/container.rs (100%) rename {items_0 => crates/items_0}/src/framable.rs (100%) rename {items_0 => crates/items_0}/src/isodate.rs (100%) rename {items_0 => crates/items_0}/src/items_0.rs (100%) rename {items_0 => crates/items_0}/src/overlap.rs (100%) rename {items_0 => crates/items_0}/src/scalar_ops.rs (100%) rename {items_0 => crates/items_0}/src/streamitem.rs (100%) rename {items_0 => crates/items_0}/src/subfr.rs (100%) rename {items_0 => crates/items_0}/src/test.rs (100%) rename {items_0 => crates/items_0}/src/timebin.rs (100%) rename {items_0 => crates/items_0}/src/timebin/timebinimpl.rs (100%) rename {items_0 => crates/items_0}/src/transform.rs (100%) rename {items_2 => crates/items_2}/Cargo.toml (100%) rename {items_2 => crates/items_2}/src/binnedcollected.rs (100%) rename {items_2 => crates/items_2}/src/binsdim0.rs (100%) rename {items_2 => crates/items_2}/src/binsxbindim0.rs (100%) rename {items_2 => crates/items_2}/src/channelevents.rs (100%) rename {items_2 => crates/items_2}/src/empty.rs (100%) rename {items_2 => crates/items_2}/src/eventfull.rs (100%) rename {items_2 => crates/items_2}/src/eventsdim0.rs (100%) rename {items_2 => crates/items_2}/src/eventsdim1.rs (100%) rename {items_2 => crates/items_2}/src/eventsxbindim0.rs (100%) rename {items_2 => crates/items_2}/src/framable.rs (100%) rename {items_2 => crates/items_2}/src/frame.rs (100%) rename {items_2 => crates/items_2}/src/inmem.rs (100%) rename {items_2 => crates/items_2}/src/items_2.rs (100%) rename {items_2 => crates/items_2}/src/merger.rs (100%) rename {items_2 => crates/items_2}/src/streams.rs (100%) rename {items_2 => crates/items_2}/src/test.rs (100%) rename {items_2 => crates/items_2}/src/test/eventsdim0.rs (100%) rename {items_2 => crates/items_2}/src/testgen.rs (100%) rename {items_2 => crates/items_2}/src/timebin.rs (100%) rename {items_2 => crates/items_2}/src/transform.rs (100%) rename {items_proc => crates/items_proc}/Cargo.toml (100%) rename {items_proc => crates/items_proc}/src/items_proc.rs (100%) rename {netpod => crates/netpod}/Cargo.toml (100%) rename {netpod => crates/netpod}/src/histo.rs (100%) rename {netpod => crates/netpod}/src/netpod.rs (100%) rename {netpod => crates/netpod}/src/query.rs (100%) rename {netpod => crates/netpod}/src/query/api1.rs (100%) rename {netpod => crates/netpod}/src/query/datetime.rs (100%) rename {netpod => crates/netpod}/src/query/prebinned.rs (100%) rename {netpod => crates/netpod}/src/range.rs (100%) rename {netpod => crates/netpod}/src/range/binrange.rs (100%) rename {netpod => crates/netpod}/src/range/evrange.rs (100%) rename {netpod => crates/netpod}/src/status.rs (100%) rename {netpod => crates/netpod}/src/streamext.rs (100%) rename {nodenet => crates/nodenet}/Cargo.toml (100%) rename {nodenet => crates/nodenet}/src/channelconfig.rs (89%) rename {nodenet => crates/nodenet}/src/configquorum.rs (100%) rename {nodenet => crates/nodenet}/src/conn.rs (100%) rename {nodenet => crates/nodenet}/src/conn/test.rs (100%) rename {nodenet => crates/nodenet}/src/lib.rs (100%) rename {nodenet => crates/nodenet}/src/scylla.rs (100%) rename {parse => crates/parse}/Cargo.toml (95%) rename {parse => crates/parse}/src/api1_parse.rs (100%) rename {parse => crates/parse}/src/channelconfig.rs (88%) rename {parse => crates/parse}/src/jsonconf.rs (100%) rename {parse => crates/parse}/src/lib.rs (100%) rename {query => crates/query}/Cargo.toml (100%) rename {query => crates/query}/src/api4.rs (100%) rename {query => crates/query}/src/api4/binned.rs (100%) rename {query => crates/query}/src/api4/events.rs (100%) rename {query => crates/query}/src/lib.rs (100%) rename {query => crates/query}/src/transform.rs (100%) rename {scyllaconn => crates/scyllaconn}/Cargo.toml (100%) rename {scyllaconn => crates/scyllaconn}/src/bincache.rs (100%) rename {scyllaconn => crates/scyllaconn}/src/errconv.rs (100%) rename {scyllaconn => crates/scyllaconn}/src/events.rs (100%) rename {scyllaconn => crates/scyllaconn}/src/scyllaconn.rs (100%) rename {scyllaconn => crates/scyllaconn}/src/status.rs (100%) rename {streams => crates/streams}/Cargo.toml (100%) rename {streams => crates/streams}/src/boxed.rs (100%) rename {streams => crates/streams}/src/collect.rs (100%) rename {streams => crates/streams}/src/dtflags.rs (100%) rename {streams => crates/streams}/src/filechunkread.rs (100%) rename {streams => crates/streams}/src/frames.rs (100%) rename {streams => crates/streams}/src/frames/eventsfromframes.rs (100%) rename {streams => crates/streams}/src/frames/inmem.rs (100%) rename {streams => crates/streams}/src/generators.rs (100%) rename {streams => crates/streams}/src/itemclone.rs (100%) rename {streams => crates/streams}/src/lib.rs (100%) rename {streams => crates/streams}/src/needminbuffer.rs (100%) rename {streams => crates/streams}/src/plaineventsjson.rs (100%) rename {streams => crates/streams}/src/rangefilter2.rs (100%) rename {streams => crates/streams}/src/slidebuf.rs (100%) rename {streams => crates/streams}/src/tcprawclient.rs (100%) rename {streams => crates/streams}/src/test.rs (100%) rename {streams => crates/streams}/src/test/collect.rs (100%) rename {streams => crates/streams}/src/test/timebin.rs (100%) rename {streams => crates/streams}/src/timebin.rs (100%) rename {streams => crates/streams}/src/timebinnedjson.rs (100%) rename {streams => crates/streams}/src/transform.rs (100%) rename {taskrun => crates/taskrun}/Cargo.toml (100%) rename {taskrun => crates/taskrun}/src/taskrun.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index b74118a..70d9ee4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["daqbuffer", "httpret", "h5out", "items_proc", "nodenet", "httpclient", "dq"] +members = ["crates/*"] [profile.release] opt-level = 1 diff --git a/bitshuffle/Cargo.toml b/crates/bitshuffle/Cargo.toml similarity index 100% rename from bitshuffle/Cargo.toml rename to crates/bitshuffle/Cargo.toml diff --git a/bitshuffle/build.rs b/crates/bitshuffle/build.rs similarity index 100% rename from bitshuffle/build.rs rename to crates/bitshuffle/build.rs diff --git a/bitshuffle/src/bitshuffle.c b/crates/bitshuffle/src/bitshuffle.c similarity index 100% rename from bitshuffle/src/bitshuffle.c rename to crates/bitshuffle/src/bitshuffle.c diff --git a/bitshuffle/src/bitshuffle.h b/crates/bitshuffle/src/bitshuffle.h similarity index 100% rename from bitshuffle/src/bitshuffle.h rename to crates/bitshuffle/src/bitshuffle.h diff --git a/bitshuffle/src/bitshuffle.rs b/crates/bitshuffle/src/bitshuffle.rs similarity index 100% rename from bitshuffle/src/bitshuffle.rs rename to crates/bitshuffle/src/bitshuffle.rs diff --git a/bitshuffle/src/bitshuffle_core.c b/crates/bitshuffle/src/bitshuffle_core.c similarity index 100% rename from bitshuffle/src/bitshuffle_core.c rename to crates/bitshuffle/src/bitshuffle_core.c diff --git a/bitshuffle/src/bitshuffle_core.h b/crates/bitshuffle/src/bitshuffle_core.h similarity index 100% rename from bitshuffle/src/bitshuffle_core.h rename to crates/bitshuffle/src/bitshuffle_core.h diff --git a/bitshuffle/src/bitshuffle_internals.h b/crates/bitshuffle/src/bitshuffle_internals.h similarity index 100% rename from bitshuffle/src/bitshuffle_internals.h rename to crates/bitshuffle/src/bitshuffle_internals.h diff --git a/bitshuffle/src/iochain.c b/crates/bitshuffle/src/iochain.c similarity index 100% rename from bitshuffle/src/iochain.c rename to crates/bitshuffle/src/iochain.c diff --git a/bitshuffle/src/iochain.h b/crates/bitshuffle/src/iochain.h similarity index 100% rename from bitshuffle/src/iochain.h rename to crates/bitshuffle/src/iochain.h diff --git a/bitshuffle/src/lz4.c b/crates/bitshuffle/src/lz4.c similarity index 100% rename from bitshuffle/src/lz4.c rename to crates/bitshuffle/src/lz4.c diff --git a/bitshuffle/src/lz4.h b/crates/bitshuffle/src/lz4.h similarity index 100% rename from bitshuffle/src/lz4.h rename to crates/bitshuffle/src/lz4.h diff --git a/commonio/Cargo.toml b/crates/commonio/Cargo.toml similarity index 100% rename from commonio/Cargo.toml rename to crates/commonio/Cargo.toml diff --git a/commonio/src/commonio.rs b/crates/commonio/src/commonio.rs similarity index 100% rename from commonio/src/commonio.rs rename to crates/commonio/src/commonio.rs diff --git a/commonio/src/ringbuf.rs b/crates/commonio/src/ringbuf.rs similarity index 100% rename from commonio/src/ringbuf.rs rename to crates/commonio/src/ringbuf.rs diff --git a/daqbuffer/Cargo.toml b/crates/daqbuffer/Cargo.toml similarity index 100% rename from daqbuffer/Cargo.toml rename to crates/daqbuffer/Cargo.toml diff --git a/daqbuffer/src/bin/daqbuffer.rs b/crates/daqbuffer/src/bin/daqbuffer.rs similarity index 100% rename from daqbuffer/src/bin/daqbuffer.rs rename to crates/daqbuffer/src/bin/daqbuffer.rs diff --git a/daqbuffer/src/cli.rs b/crates/daqbuffer/src/cli.rs similarity index 100% rename from daqbuffer/src/cli.rs rename to crates/daqbuffer/src/cli.rs diff --git a/daqbuffer/src/err.rs b/crates/daqbuffer/src/err.rs similarity index 100% rename from daqbuffer/src/err.rs rename to crates/daqbuffer/src/err.rs diff --git a/daqbuffer/src/lib.rs b/crates/daqbuffer/src/lib.rs similarity index 100% rename from daqbuffer/src/lib.rs rename to crates/daqbuffer/src/lib.rs diff --git a/daqbufp2/Cargo.toml b/crates/daqbufp2/Cargo.toml similarity index 100% rename from daqbufp2/Cargo.toml rename to crates/daqbufp2/Cargo.toml diff --git a/daqbufp2/src/client.rs b/crates/daqbufp2/src/client.rs similarity index 100% rename from daqbufp2/src/client.rs rename to crates/daqbufp2/src/client.rs diff --git a/daqbufp2/src/daqbufp2.rs b/crates/daqbufp2/src/daqbufp2.rs similarity index 100% rename from daqbufp2/src/daqbufp2.rs rename to crates/daqbufp2/src/daqbufp2.rs diff --git a/daqbufp2/src/err.rs b/crates/daqbufp2/src/err.rs similarity index 100% rename from daqbufp2/src/err.rs rename to crates/daqbufp2/src/err.rs diff --git a/daqbufp2/src/nodes.rs b/crates/daqbufp2/src/nodes.rs similarity index 100% rename from daqbufp2/src/nodes.rs rename to crates/daqbufp2/src/nodes.rs diff --git a/daqbufp2/src/test.rs b/crates/daqbufp2/src/test.rs similarity index 100% rename from daqbufp2/src/test.rs rename to crates/daqbufp2/src/test.rs diff --git a/daqbufp2/src/test/api1.rs b/crates/daqbufp2/src/test/api1.rs similarity index 100% rename from daqbufp2/src/test/api1.rs rename to crates/daqbufp2/src/test/api1.rs diff --git a/daqbufp2/src/test/api1/data_api_python.rs b/crates/daqbufp2/src/test/api1/data_api_python.rs similarity index 100% rename from daqbufp2/src/test/api1/data_api_python.rs rename to crates/daqbufp2/src/test/api1/data_api_python.rs diff --git a/daqbufp2/src/test/api4.rs b/crates/daqbufp2/src/test/api4.rs similarity index 100% rename from daqbufp2/src/test/api4.rs rename to crates/daqbufp2/src/test/api4.rs diff --git a/daqbufp2/src/test/api4/binnedjson.rs b/crates/daqbufp2/src/test/api4/binnedjson.rs similarity index 100% rename from daqbufp2/src/test/api4/binnedjson.rs rename to crates/daqbufp2/src/test/api4/binnedjson.rs diff --git a/daqbufp2/src/test/api4/common.rs b/crates/daqbufp2/src/test/api4/common.rs similarity index 100% rename from daqbufp2/src/test/api4/common.rs rename to crates/daqbufp2/src/test/api4/common.rs diff --git a/daqbufp2/src/test/api4/eventsjson.rs b/crates/daqbufp2/src/test/api4/eventsjson.rs similarity index 100% rename from daqbufp2/src/test/api4/eventsjson.rs rename to crates/daqbufp2/src/test/api4/eventsjson.rs diff --git a/daqbufp2/src/test/api4/pulseiddiff.rs b/crates/daqbufp2/src/test/api4/pulseiddiff.rs similarity index 100% rename from daqbufp2/src/test/api4/pulseiddiff.rs rename to crates/daqbufp2/src/test/api4/pulseiddiff.rs diff --git a/daqbufp2/src/test/archapp.rs b/crates/daqbufp2/src/test/archapp.rs similarity index 100% rename from daqbufp2/src/test/archapp.rs rename to crates/daqbufp2/src/test/archapp.rs diff --git a/daqbufp2/src/test/binnedjson.rs b/crates/daqbufp2/src/test/binnedjson.rs similarity index 100% rename from daqbufp2/src/test/binnedjson.rs rename to crates/daqbufp2/src/test/binnedjson.rs diff --git a/daqbufp2/src/test/binnedjson/channelarchiver.rs b/crates/daqbufp2/src/test/binnedjson/channelarchiver.rs similarity index 100% rename from daqbufp2/src/test/binnedjson/channelarchiver.rs rename to crates/daqbufp2/src/test/binnedjson/channelarchiver.rs diff --git a/daqbufp2/src/test/timeweightedjson.rs b/crates/daqbufp2/src/test/timeweightedjson.rs similarity index 100% rename from daqbufp2/src/test/timeweightedjson.rs rename to crates/daqbufp2/src/test/timeweightedjson.rs diff --git a/dbconn/Cargo.toml b/crates/dbconn/Cargo.toml similarity index 100% rename from dbconn/Cargo.toml rename to crates/dbconn/Cargo.toml diff --git a/dbconn/src/channelconfig.rs b/crates/dbconn/src/channelconfig.rs similarity index 100% rename from dbconn/src/channelconfig.rs rename to crates/dbconn/src/channelconfig.rs diff --git a/dbconn/src/dbconn.rs b/crates/dbconn/src/dbconn.rs similarity index 100% rename from dbconn/src/dbconn.rs rename to crates/dbconn/src/dbconn.rs diff --git a/dbconn/src/query.rs b/crates/dbconn/src/query.rs similarity index 100% rename from dbconn/src/query.rs rename to crates/dbconn/src/query.rs diff --git a/dbconn/src/scan.rs b/crates/dbconn/src/scan.rs similarity index 100% rename from dbconn/src/scan.rs rename to crates/dbconn/src/scan.rs diff --git a/dbconn/src/scan/updatechannelnames.rs b/crates/dbconn/src/scan/updatechannelnames.rs similarity index 100% rename from dbconn/src/scan/updatechannelnames.rs rename to crates/dbconn/src/scan/updatechannelnames.rs diff --git a/dbconn/src/search.rs b/crates/dbconn/src/search.rs similarity index 100% rename from dbconn/src/search.rs rename to crates/dbconn/src/search.rs diff --git a/disk/Cargo.toml b/crates/disk/Cargo.toml similarity index 100% rename from disk/Cargo.toml rename to crates/disk/Cargo.toml diff --git a/disk/src/agg/binnedt.rs b/crates/disk/src/agg/binnedt.rs similarity index 100% rename from disk/src/agg/binnedt.rs rename to crates/disk/src/agg/binnedt.rs diff --git a/disk/src/agg/scalarbinbatch.rs b/crates/disk/src/agg/scalarbinbatch.rs similarity index 100% rename from disk/src/agg/scalarbinbatch.rs rename to crates/disk/src/agg/scalarbinbatch.rs diff --git a/disk/src/agg/streams.rs b/crates/disk/src/agg/streams.rs similarity index 100% rename from disk/src/agg/streams.rs rename to crates/disk/src/agg/streams.rs diff --git a/disk/src/aggtest.rs b/crates/disk/src/aggtest.rs similarity index 100% rename from disk/src/aggtest.rs rename to crates/disk/src/aggtest.rs diff --git a/disk/src/binned/binnedfrompbv.rs b/crates/disk/src/binned/binnedfrompbv.rs similarity index 100% rename from disk/src/binned/binnedfrompbv.rs rename to crates/disk/src/binned/binnedfrompbv.rs diff --git a/disk/src/binned/dim1.rs b/crates/disk/src/binned/dim1.rs similarity index 100% rename from disk/src/binned/dim1.rs rename to crates/disk/src/binned/dim1.rs diff --git a/disk/src/binned/pbv.rs b/crates/disk/src/binned/pbv.rs similarity index 100% rename from disk/src/binned/pbv.rs rename to crates/disk/src/binned/pbv.rs diff --git a/disk/src/binned/prebinned.rs b/crates/disk/src/binned/prebinned.rs similarity index 100% rename from disk/src/binned/prebinned.rs rename to crates/disk/src/binned/prebinned.rs diff --git a/disk/src/binnedstream.rs b/crates/disk/src/binnedstream.rs similarity index 100% rename from disk/src/binnedstream.rs rename to crates/disk/src/binnedstream.rs diff --git a/disk/src/cache.rs b/crates/disk/src/cache.rs similarity index 100% rename from disk/src/cache.rs rename to crates/disk/src/cache.rs diff --git a/disk/src/channelconfig.rs b/crates/disk/src/channelconfig.rs similarity index 94% rename from disk/src/channelconfig.rs rename to crates/disk/src/channelconfig.rs index 99e5d9b..3220b21 100644 --- a/disk/src/channelconfig.rs +++ b/crates/disk/src/channelconfig.rs @@ -19,11 +19,11 @@ pub enum ConfigError { Error, } -impl fmt::Display for ConfigError { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - write!(fmt, "ConfigError::{self:?}") - } -} +// impl fmt::Display for ConfigError { +// fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { +// write!(fmt, "ConfigError::{self:?}") +// } +// } impl From for ConfigError { fn from(value: ConfigParseError) -> Self { diff --git a/disk/src/dataopen.rs b/crates/disk/src/dataopen.rs similarity index 100% rename from disk/src/dataopen.rs rename to crates/disk/src/dataopen.rs diff --git a/disk/src/decode.rs b/crates/disk/src/decode.rs similarity index 100% rename from disk/src/decode.rs rename to crates/disk/src/decode.rs diff --git a/disk/src/disk.rs b/crates/disk/src/disk.rs similarity index 99% rename from disk/src/disk.rs rename to crates/disk/src/disk.rs index 4dccc89..cb002a1 100644 --- a/disk/src/disk.rs +++ b/crates/disk/src/disk.rs @@ -17,6 +17,8 @@ pub mod read3; pub mod read4; pub mod streamlog; +pub use parse; + use bytes::Bytes; use bytes::BytesMut; use err::Error; diff --git a/disk/src/eventblobs.rs b/crates/disk/src/eventblobs.rs similarity index 100% rename from disk/src/eventblobs.rs rename to crates/disk/src/eventblobs.rs diff --git a/disk/src/eventchunker.rs b/crates/disk/src/eventchunker.rs similarity index 100% rename from disk/src/eventchunker.rs rename to crates/disk/src/eventchunker.rs diff --git a/disk/src/frame.rs b/crates/disk/src/frame.rs similarity index 100% rename from disk/src/frame.rs rename to crates/disk/src/frame.rs diff --git a/disk/src/frame/makeframe.rs b/crates/disk/src/frame/makeframe.rs similarity index 100% rename from disk/src/frame/makeframe.rs rename to crates/disk/src/frame/makeframe.rs diff --git a/disk/src/gen.rs b/crates/disk/src/gen.rs similarity index 100% rename from disk/src/gen.rs rename to crates/disk/src/gen.rs diff --git a/disk/src/index.rs b/crates/disk/src/index.rs similarity index 100% rename from disk/src/index.rs rename to crates/disk/src/index.rs diff --git a/disk/src/merge.rs b/crates/disk/src/merge.rs similarity index 100% rename from disk/src/merge.rs rename to crates/disk/src/merge.rs diff --git a/disk/src/merge/mergedblobsfromremotes.rs b/crates/disk/src/merge/mergedblobsfromremotes.rs similarity index 100% rename from disk/src/merge/mergedblobsfromremotes.rs rename to crates/disk/src/merge/mergedblobsfromremotes.rs diff --git a/disk/src/paths.rs b/crates/disk/src/paths.rs similarity index 100% rename from disk/src/paths.rs rename to crates/disk/src/paths.rs diff --git a/disk/src/raw.rs b/crates/disk/src/raw.rs similarity index 100% rename from disk/src/raw.rs rename to crates/disk/src/raw.rs diff --git a/disk/src/raw/conn.rs b/crates/disk/src/raw/conn.rs similarity index 100% rename from disk/src/raw/conn.rs rename to crates/disk/src/raw/conn.rs diff --git a/disk/src/raw/generated.rs b/crates/disk/src/raw/generated.rs similarity index 100% rename from disk/src/raw/generated.rs rename to crates/disk/src/raw/generated.rs diff --git a/disk/src/read3.rs b/crates/disk/src/read3.rs similarity index 100% rename from disk/src/read3.rs rename to crates/disk/src/read3.rs diff --git a/disk/src/read4.rs b/crates/disk/src/read4.rs similarity index 100% rename from disk/src/read4.rs rename to crates/disk/src/read4.rs diff --git a/disk/src/streamlog.rs b/crates/disk/src/streamlog.rs similarity index 100% rename from disk/src/streamlog.rs rename to crates/disk/src/streamlog.rs diff --git a/dq/Cargo.toml b/crates/dq/Cargo.toml similarity index 100% rename from dq/Cargo.toml rename to crates/dq/Cargo.toml diff --git a/dq/src/bin/daq-convert.rs b/crates/dq/src/bin/daq-convert.rs similarity index 100% rename from dq/src/bin/daq-convert.rs rename to crates/dq/src/bin/daq-convert.rs diff --git a/dq/src/bin/dq.rs b/crates/dq/src/bin/dq.rs similarity index 100% rename from dq/src/bin/dq.rs rename to crates/dq/src/bin/dq.rs diff --git a/dq/src/dq.rs b/crates/dq/src/dq.rs similarity index 100% rename from dq/src/dq.rs rename to crates/dq/src/dq.rs diff --git a/err/Cargo.toml b/crates/err/Cargo.toml similarity index 82% rename from err/Cargo.toml rename to crates/err/Cargo.toml index 2888361..0ab6c8f 100644 --- a/err/Cargo.toml +++ b/crates/err/Cargo.toml @@ -4,6 +4,9 @@ version = "0.0.3" authors = ["Dominik Werder "] edition = "2021" +[lib] +doctest = false + [dependencies] backtrace = "0.3" serde = { version = "1.0", features = ["derive"] } @@ -16,5 +19,6 @@ chrono = { version = "0.4", features = ["serde"] } url = "2.2" regex = "1.5" http = "0.2" -thiserror = "1.0" +#thiserror = "1.0" +thiserror = { path = "../../../thiserror" } anyhow = "1.0" diff --git a/err/src/lib.rs b/crates/err/src/lib.rs similarity index 90% rename from err/src/lib.rs rename to crates/err/src/lib.rs index 5143a36..dabaea5 100644 --- a/err/src/lib.rs +++ b/crates/err/src/lib.rs @@ -2,6 +2,7 @@ pub use anyhow; pub use thiserror; +pub use thiserror::Error as ThisError; pub mod bt { pub use backtrace::Backtrace; @@ -20,13 +21,13 @@ use std::sync::PoisonError; pub type Res2 = anyhow::Result; -#[derive(Debug, thiserror::Error)] +#[derive(Debug, ThisError)] pub enum ErrA { #[error("bad-A")] Bad, } -#[derive(Debug, thiserror::Error)] +#[derive(Debug, ThisError)] pub enum ErrB { #[error("worse-B")] Worse, @@ -474,3 +475,48 @@ pub fn todoval() -> T { eprintln!("TODO\n{bt:?}"); todo!("TODO todoval\n{bt:?}") } + +pub trait ToPublicError: std::error::Error { + fn to_public_error(&self) -> String; +} + +#[cfg(test)] +mod test { + use super::*; + + #[derive(Debug, ThisError, Serialize, Deserialize)] + enum SomeErrorEnumA { + BadCase, + WithStringContent(String), + #[error("bad: {0}")] + WithStringContentFmt(String), + } + + fn failing_a() -> Result<(), SomeErrorEnumA> { + Err(SomeErrorEnumA::BadCase) + } + + #[test] + fn error_handle_00() { + assert_eq!(format!("{}", SomeErrorEnumA::BadCase), "BadCase"); + } + + #[test] + fn error_handle_01() { + assert_eq!( + format!("{}", SomeErrorEnumA::WithStringContent(format!("inner"))), + "WithStringContent" + ); + } + + #[test] + fn error_handle_02() { + assert_eq!( + format!( + "{}", + SomeErrorEnumA::WithStringContentFmt(format!("inner failure \"quoted\"")) + ), + "bad: inner failure \"quoted\"" + ); + } +} diff --git a/h5out/Cargo.toml b/crates/h5out/Cargo.toml similarity index 100% rename from h5out/Cargo.toml rename to crates/h5out/Cargo.toml diff --git a/h5out/src/lib.rs b/crates/h5out/src/lib.rs similarity index 100% rename from h5out/src/lib.rs rename to crates/h5out/src/lib.rs diff --git a/httpclient/Cargo.toml b/crates/httpclient/Cargo.toml similarity index 100% rename from httpclient/Cargo.toml rename to crates/httpclient/Cargo.toml diff --git a/httpclient/src/httpclient.rs b/crates/httpclient/src/httpclient.rs similarity index 100% rename from httpclient/src/httpclient.rs rename to crates/httpclient/src/httpclient.rs diff --git a/httpclient/src/lib.rs b/crates/httpclient/src/lib.rs similarity index 100% rename from httpclient/src/lib.rs rename to crates/httpclient/src/lib.rs diff --git a/httpret/Cargo.toml b/crates/httpret/Cargo.toml similarity index 100% rename from httpret/Cargo.toml rename to crates/httpret/Cargo.toml diff --git a/httpret/src/api1.rs b/crates/httpret/src/api1.rs similarity index 100% rename from httpret/src/api1.rs rename to crates/httpret/src/api1.rs diff --git a/httpret/src/api4.rs b/crates/httpret/src/api4.rs similarity index 71% rename from httpret/src/api4.rs rename to crates/httpret/src/api4.rs index 6f9f3bf..342c73f 100644 --- a/httpret/src/api4.rs +++ b/crates/httpret/src/api4.rs @@ -1,4 +1,5 @@ pub mod binned; +pub mod databuffer_tools; pub mod events; pub mod search; pub mod status; diff --git a/httpret/src/api4/binned.rs b/crates/httpret/src/api4/binned.rs similarity index 100% rename from httpret/src/api4/binned.rs rename to crates/httpret/src/api4/binned.rs diff --git a/crates/httpret/src/api4/databuffer_tools.rs b/crates/httpret/src/api4/databuffer_tools.rs new file mode 100644 index 0000000..4ab9208 --- /dev/null +++ b/crates/httpret/src/api4/databuffer_tools.rs @@ -0,0 +1,110 @@ +use crate::bodystream::response; +use crate::bodystream::BodyStream; +use crate::response_err; +use bytes::Bytes; +use err::thiserror; +use err::ToPublicError; +use futures_util::Stream; +use http::Method; +use http::Request; +use http::Response; +use http::StatusCode; +use hyper::Body; +use netpod::log::*; +use netpod::NodeConfigCached; +use netpod::ACCEPT_ALL; +use netpod::APP_JSON; +use url::Url; + +#[derive(Debug, thiserror::Error)] +pub enum FindActiveError { + #[error("HttpBadAccept")] + HttpBadAccept, + #[error("HttpBadUrl")] + HttpBadUrl, + #[error("{0}")] + Error(Box), + #[error("{0}")] + UrlError(#[from] url::ParseError), + #[error("InternalError")] + InternalError, +} + +impl ToPublicError for FindActiveError { + fn to_public_error(&self) -> String { + match self { + FindActiveError::HttpBadAccept => format!("{self}"), + FindActiveError::HttpBadUrl => format!("{self}"), + FindActiveError::Error(e) => e.to_public_error(), + FindActiveError::UrlError(e) => format!("can not parse url: {e}"), + FindActiveError::InternalError => format!("{self}"), + } + } +} + +pub struct FindActiveHandler {} + +impl FindActiveHandler { + pub fn handler(req: &Request) -> Option { + if req.uri().path() == "/api/4/tools/databuffer/findActive" { + Some(Self {}) + } else { + None + } + } + + pub async fn handle(&self, req: Request, ncc: &NodeConfigCached) -> Result, FindActiveError> { + if req.method() != Method::GET { + Ok(response(StatusCode::NOT_ACCEPTABLE) + .body(Body::empty()) + .map_err(|_| FindActiveError::InternalError)?) + } else { + match Self::handle_req(req, ncc).await { + Ok(ret) => Ok(ret), + Err(e) => { + error!("{e}"); + let res = response_err(StatusCode::NOT_ACCEPTABLE, e.to_public_error()) + .map_err(|_| FindActiveError::InternalError)?; + Ok(res) + } + } + } + } + + async fn handle_req(req: Request, ncc: &NodeConfigCached) -> Result, FindActiveError> { + let accept_def = APP_JSON; + let accept = req + .headers() + .get(http::header::ACCEPT) + .map_or(accept_def, |k| k.to_str().unwrap_or(accept_def)); + let url = { + let s1 = format!("dummy:{}", req.uri()); + Url::parse(&s1)? + }; + if accept.contains(APP_JSON) || accept.contains(ACCEPT_ALL) { + type _A = netpod::BodyStream; + Ok(Response::builder() + .status(StatusCode::OK) + .body(BodyStream::wrapped(Box::pin(DummyStream::new()), "find_active".into())) + .map_err(|_| FindActiveError::InternalError)?) + } else { + Err(FindActiveError::HttpBadAccept) + } + } +} + +struct DummyStream {} + +impl DummyStream { + pub fn new() -> Self { + todo!() + } +} + +impl Stream for DummyStream { + type Item = Result; + + fn poll_next(self: std::pin::Pin<&mut Self>, cx: &mut std::task::Context) -> std::task::Poll> { + todo!() + } +} diff --git a/httpret/src/api4/events.rs b/crates/httpret/src/api4/events.rs similarity index 100% rename from httpret/src/api4/events.rs rename to crates/httpret/src/api4/events.rs diff --git a/httpret/src/api4/search.rs b/crates/httpret/src/api4/search.rs similarity index 100% rename from httpret/src/api4/search.rs rename to crates/httpret/src/api4/search.rs diff --git a/httpret/src/api4/status.rs b/crates/httpret/src/api4/status.rs similarity index 100% rename from httpret/src/api4/status.rs rename to crates/httpret/src/api4/status.rs diff --git a/httpret/src/bodystream.rs b/crates/httpret/src/bodystream.rs similarity index 100% rename from httpret/src/bodystream.rs rename to crates/httpret/src/bodystream.rs diff --git a/httpret/src/channel_status.rs b/crates/httpret/src/channel_status.rs similarity index 100% rename from httpret/src/channel_status.rs rename to crates/httpret/src/channel_status.rs diff --git a/httpret/src/channelconfig.rs b/crates/httpret/src/channelconfig.rs similarity index 100% rename from httpret/src/channelconfig.rs rename to crates/httpret/src/channelconfig.rs diff --git a/httpret/src/download.rs b/crates/httpret/src/download.rs similarity index 100% rename from httpret/src/download.rs rename to crates/httpret/src/download.rs diff --git a/httpret/src/err.rs b/crates/httpret/src/err.rs similarity index 100% rename from httpret/src/err.rs rename to crates/httpret/src/err.rs diff --git a/httpret/src/evinfo.rs b/crates/httpret/src/evinfo.rs similarity index 100% rename from httpret/src/evinfo.rs rename to crates/httpret/src/evinfo.rs diff --git a/httpret/src/gather.rs b/crates/httpret/src/gather.rs similarity index 100% rename from httpret/src/gather.rs rename to crates/httpret/src/gather.rs diff --git a/httpret/src/httpret.rs b/crates/httpret/src/httpret.rs similarity index 100% rename from httpret/src/httpret.rs rename to crates/httpret/src/httpret.rs diff --git a/httpret/src/prometheus.rs b/crates/httpret/src/prometheus.rs similarity index 100% rename from httpret/src/prometheus.rs rename to crates/httpret/src/prometheus.rs diff --git a/httpret/src/proxy.rs b/crates/httpret/src/proxy.rs similarity index 100% rename from httpret/src/proxy.rs rename to crates/httpret/src/proxy.rs diff --git a/httpret/src/proxy/api1.rs b/crates/httpret/src/proxy/api1.rs similarity index 100% rename from httpret/src/proxy/api1.rs rename to crates/httpret/src/proxy/api1.rs diff --git a/httpret/src/proxy/api1/reqstatus.rs b/crates/httpret/src/proxy/api1/reqstatus.rs similarity index 100% rename from httpret/src/proxy/api1/reqstatus.rs rename to crates/httpret/src/proxy/api1/reqstatus.rs diff --git a/httpret/src/proxy/api4.rs b/crates/httpret/src/proxy/api4.rs similarity index 100% rename from httpret/src/proxy/api4.rs rename to crates/httpret/src/proxy/api4.rs diff --git a/httpret/src/proxy/api4/caioclookup.rs b/crates/httpret/src/proxy/api4/caioclookup.rs similarity index 100% rename from httpret/src/proxy/api4/caioclookup.rs rename to crates/httpret/src/proxy/api4/caioclookup.rs diff --git a/httpret/src/pulsemap.rs b/crates/httpret/src/pulsemap.rs similarity index 100% rename from httpret/src/pulsemap.rs rename to crates/httpret/src/pulsemap.rs diff --git a/httpret/src/settings.rs b/crates/httpret/src/settings.rs similarity index 100% rename from httpret/src/settings.rs rename to crates/httpret/src/settings.rs diff --git a/httpret/static/documentation/api1.html b/crates/httpret/static/documentation/api1.html similarity index 100% rename from httpret/static/documentation/api1.html rename to crates/httpret/static/documentation/api1.html diff --git a/httpret/static/documentation/api4.html b/crates/httpret/static/documentation/api4.html similarity index 100% rename from httpret/static/documentation/api4.html rename to crates/httpret/static/documentation/api4.html diff --git a/httpret/static/documentation/script.js b/crates/httpret/static/documentation/script.js similarity index 100% rename from httpret/static/documentation/script.js rename to crates/httpret/static/documentation/script.js diff --git a/httpret/static/documentation/status-main.html b/crates/httpret/static/documentation/status-main.html similarity index 100% rename from httpret/static/documentation/status-main.html rename to crates/httpret/static/documentation/status-main.html diff --git a/httpret/static/documentation/style.css b/crates/httpret/static/documentation/style.css similarity index 100% rename from httpret/static/documentation/style.css rename to crates/httpret/static/documentation/style.css diff --git a/items_0/Cargo.toml b/crates/items_0/Cargo.toml similarity index 100% rename from items_0/Cargo.toml rename to crates/items_0/Cargo.toml diff --git a/items_0/src/collect_s.rs b/crates/items_0/src/collect_s.rs similarity index 100% rename from items_0/src/collect_s.rs rename to crates/items_0/src/collect_s.rs diff --git a/items_0/src/container.rs b/crates/items_0/src/container.rs similarity index 100% rename from items_0/src/container.rs rename to crates/items_0/src/container.rs diff --git a/items_0/src/framable.rs b/crates/items_0/src/framable.rs similarity index 100% rename from items_0/src/framable.rs rename to crates/items_0/src/framable.rs diff --git a/items_0/src/isodate.rs b/crates/items_0/src/isodate.rs similarity index 100% rename from items_0/src/isodate.rs rename to crates/items_0/src/isodate.rs diff --git a/items_0/src/items_0.rs b/crates/items_0/src/items_0.rs similarity index 100% rename from items_0/src/items_0.rs rename to crates/items_0/src/items_0.rs diff --git a/items_0/src/overlap.rs b/crates/items_0/src/overlap.rs similarity index 100% rename from items_0/src/overlap.rs rename to crates/items_0/src/overlap.rs diff --git a/items_0/src/scalar_ops.rs b/crates/items_0/src/scalar_ops.rs similarity index 100% rename from items_0/src/scalar_ops.rs rename to crates/items_0/src/scalar_ops.rs diff --git a/items_0/src/streamitem.rs b/crates/items_0/src/streamitem.rs similarity index 100% rename from items_0/src/streamitem.rs rename to crates/items_0/src/streamitem.rs diff --git a/items_0/src/subfr.rs b/crates/items_0/src/subfr.rs similarity index 100% rename from items_0/src/subfr.rs rename to crates/items_0/src/subfr.rs diff --git a/items_0/src/test.rs b/crates/items_0/src/test.rs similarity index 100% rename from items_0/src/test.rs rename to crates/items_0/src/test.rs diff --git a/items_0/src/timebin.rs b/crates/items_0/src/timebin.rs similarity index 100% rename from items_0/src/timebin.rs rename to crates/items_0/src/timebin.rs diff --git a/items_0/src/timebin/timebinimpl.rs b/crates/items_0/src/timebin/timebinimpl.rs similarity index 100% rename from items_0/src/timebin/timebinimpl.rs rename to crates/items_0/src/timebin/timebinimpl.rs diff --git a/items_0/src/transform.rs b/crates/items_0/src/transform.rs similarity index 100% rename from items_0/src/transform.rs rename to crates/items_0/src/transform.rs diff --git a/items_2/Cargo.toml b/crates/items_2/Cargo.toml similarity index 100% rename from items_2/Cargo.toml rename to crates/items_2/Cargo.toml diff --git a/items_2/src/binnedcollected.rs b/crates/items_2/src/binnedcollected.rs similarity index 100% rename from items_2/src/binnedcollected.rs rename to crates/items_2/src/binnedcollected.rs diff --git a/items_2/src/binsdim0.rs b/crates/items_2/src/binsdim0.rs similarity index 100% rename from items_2/src/binsdim0.rs rename to crates/items_2/src/binsdim0.rs diff --git a/items_2/src/binsxbindim0.rs b/crates/items_2/src/binsxbindim0.rs similarity index 100% rename from items_2/src/binsxbindim0.rs rename to crates/items_2/src/binsxbindim0.rs diff --git a/items_2/src/channelevents.rs b/crates/items_2/src/channelevents.rs similarity index 100% rename from items_2/src/channelevents.rs rename to crates/items_2/src/channelevents.rs diff --git a/items_2/src/empty.rs b/crates/items_2/src/empty.rs similarity index 100% rename from items_2/src/empty.rs rename to crates/items_2/src/empty.rs diff --git a/items_2/src/eventfull.rs b/crates/items_2/src/eventfull.rs similarity index 100% rename from items_2/src/eventfull.rs rename to crates/items_2/src/eventfull.rs diff --git a/items_2/src/eventsdim0.rs b/crates/items_2/src/eventsdim0.rs similarity index 100% rename from items_2/src/eventsdim0.rs rename to crates/items_2/src/eventsdim0.rs diff --git a/items_2/src/eventsdim1.rs b/crates/items_2/src/eventsdim1.rs similarity index 100% rename from items_2/src/eventsdim1.rs rename to crates/items_2/src/eventsdim1.rs diff --git a/items_2/src/eventsxbindim0.rs b/crates/items_2/src/eventsxbindim0.rs similarity index 100% rename from items_2/src/eventsxbindim0.rs rename to crates/items_2/src/eventsxbindim0.rs diff --git a/items_2/src/framable.rs b/crates/items_2/src/framable.rs similarity index 100% rename from items_2/src/framable.rs rename to crates/items_2/src/framable.rs diff --git a/items_2/src/frame.rs b/crates/items_2/src/frame.rs similarity index 100% rename from items_2/src/frame.rs rename to crates/items_2/src/frame.rs diff --git a/items_2/src/inmem.rs b/crates/items_2/src/inmem.rs similarity index 100% rename from items_2/src/inmem.rs rename to crates/items_2/src/inmem.rs diff --git a/items_2/src/items_2.rs b/crates/items_2/src/items_2.rs similarity index 100% rename from items_2/src/items_2.rs rename to crates/items_2/src/items_2.rs diff --git a/items_2/src/merger.rs b/crates/items_2/src/merger.rs similarity index 100% rename from items_2/src/merger.rs rename to crates/items_2/src/merger.rs diff --git a/items_2/src/streams.rs b/crates/items_2/src/streams.rs similarity index 100% rename from items_2/src/streams.rs rename to crates/items_2/src/streams.rs diff --git a/items_2/src/test.rs b/crates/items_2/src/test.rs similarity index 100% rename from items_2/src/test.rs rename to crates/items_2/src/test.rs diff --git a/items_2/src/test/eventsdim0.rs b/crates/items_2/src/test/eventsdim0.rs similarity index 100% rename from items_2/src/test/eventsdim0.rs rename to crates/items_2/src/test/eventsdim0.rs diff --git a/items_2/src/testgen.rs b/crates/items_2/src/testgen.rs similarity index 100% rename from items_2/src/testgen.rs rename to crates/items_2/src/testgen.rs diff --git a/items_2/src/timebin.rs b/crates/items_2/src/timebin.rs similarity index 100% rename from items_2/src/timebin.rs rename to crates/items_2/src/timebin.rs diff --git a/items_2/src/transform.rs b/crates/items_2/src/transform.rs similarity index 100% rename from items_2/src/transform.rs rename to crates/items_2/src/transform.rs diff --git a/items_proc/Cargo.toml b/crates/items_proc/Cargo.toml similarity index 100% rename from items_proc/Cargo.toml rename to crates/items_proc/Cargo.toml diff --git a/items_proc/src/items_proc.rs b/crates/items_proc/src/items_proc.rs similarity index 100% rename from items_proc/src/items_proc.rs rename to crates/items_proc/src/items_proc.rs diff --git a/netpod/Cargo.toml b/crates/netpod/Cargo.toml similarity index 100% rename from netpod/Cargo.toml rename to crates/netpod/Cargo.toml diff --git a/netpod/src/histo.rs b/crates/netpod/src/histo.rs similarity index 100% rename from netpod/src/histo.rs rename to crates/netpod/src/histo.rs diff --git a/netpod/src/netpod.rs b/crates/netpod/src/netpod.rs similarity index 100% rename from netpod/src/netpod.rs rename to crates/netpod/src/netpod.rs diff --git a/netpod/src/query.rs b/crates/netpod/src/query.rs similarity index 100% rename from netpod/src/query.rs rename to crates/netpod/src/query.rs diff --git a/netpod/src/query/api1.rs b/crates/netpod/src/query/api1.rs similarity index 100% rename from netpod/src/query/api1.rs rename to crates/netpod/src/query/api1.rs diff --git a/netpod/src/query/datetime.rs b/crates/netpod/src/query/datetime.rs similarity index 100% rename from netpod/src/query/datetime.rs rename to crates/netpod/src/query/datetime.rs diff --git a/netpod/src/query/prebinned.rs b/crates/netpod/src/query/prebinned.rs similarity index 100% rename from netpod/src/query/prebinned.rs rename to crates/netpod/src/query/prebinned.rs diff --git a/netpod/src/range.rs b/crates/netpod/src/range.rs similarity index 100% rename from netpod/src/range.rs rename to crates/netpod/src/range.rs diff --git a/netpod/src/range/binrange.rs b/crates/netpod/src/range/binrange.rs similarity index 100% rename from netpod/src/range/binrange.rs rename to crates/netpod/src/range/binrange.rs diff --git a/netpod/src/range/evrange.rs b/crates/netpod/src/range/evrange.rs similarity index 100% rename from netpod/src/range/evrange.rs rename to crates/netpod/src/range/evrange.rs diff --git a/netpod/src/status.rs b/crates/netpod/src/status.rs similarity index 100% rename from netpod/src/status.rs rename to crates/netpod/src/status.rs diff --git a/netpod/src/streamext.rs b/crates/netpod/src/streamext.rs similarity index 100% rename from netpod/src/streamext.rs rename to crates/netpod/src/streamext.rs diff --git a/nodenet/Cargo.toml b/crates/nodenet/Cargo.toml similarity index 100% rename from nodenet/Cargo.toml rename to crates/nodenet/Cargo.toml diff --git a/nodenet/src/channelconfig.rs b/crates/nodenet/src/channelconfig.rs similarity index 89% rename from nodenet/src/channelconfig.rs rename to crates/nodenet/src/channelconfig.rs index 8fa1672..9eff1a0 100644 --- a/nodenet/src/channelconfig.rs +++ b/crates/nodenet/src/channelconfig.rs @@ -5,6 +5,7 @@ use netpod::range::evrange::NanoRange; use netpod::timeunits::DAY; use netpod::AppendToUrl; use netpod::ByteOrder; +use netpod::ChConf; use netpod::ChannelConfigQuery; use netpod::ChannelConfigResponse; use netpod::ChannelTypeConfigGen; @@ -15,6 +16,7 @@ use netpod::SfChFetchInfo; use netpod::SfDbChannel; use netpod::Shape; use netpod::APP_JSON; +use serde::Serialize; const TEST_BACKEND: &str = "testbackend-00"; @@ -137,37 +139,31 @@ pub async fn channel_config( } } -pub async fn channel_configs(channel: SfDbChannel, ncc: &NodeConfigCached) -> Result, Error> { +#[derive(Debug, Serialize)] +pub enum ChannelConfigsGen { + Scylla(ChConf), + SfDatabuffer(disk::parse::channelconfig::ChannelConfigs), +} + +pub async fn channel_configs(channel: SfDbChannel, ncc: &NodeConfigCached) -> Result { if channel.backend() == TEST_BACKEND { - let x = vec![channel_config_test_backend(channel)?]; - Ok(x) + let ret = match channel_config_test_backend(channel)? { + ChannelTypeConfigGen::Scylla(x) => ChannelConfigsGen::Scylla(x), + ChannelTypeConfigGen::SfDatabuffer(x) => ChannelConfigsGen::SfDatabuffer(todo!()), + }; + Ok(ret) } else if ncc.node_config.cluster.scylla.is_some() { debug!("try to get ChConf for scylla type backend"); let ret = dbconn::channelconfig::chconf_from_scylla_type_backend(&channel, ncc) .await .map_err(Error::from)?; - Ok(vec![ChannelTypeConfigGen::Scylla(ret)]) + Ok(ChannelConfigsGen::Scylla(ret)) } else if ncc.node.sf_databuffer.is_some() { debug!("channel_config channel {channel:?}"); let configs = disk::channelconfig::channel_configs(channel.clone(), ncc) .await .map_err(|e| Error::from(e.to_string()))?; - let a = configs; - let mut configs = Vec::new(); - for config in a.entries { - let ret = SfChFetchInfo::new( - channel.backend(), - channel.name(), - config.ks as _, - config.bs, - config.byte_order, - config.scalar_type, - Shape::from_sf_databuffer_raw(&config.shape)?, - ); - let ret = ChannelTypeConfigGen::SfDatabuffer(ret); - configs.push(ret); - } - Ok(configs) + Ok(ChannelConfigsGen::SfDatabuffer(configs)) } else { return Err( Error::with_msg_no_trace(format!("no channel config for backend {}", channel.backend())) diff --git a/nodenet/src/configquorum.rs b/crates/nodenet/src/configquorum.rs similarity index 100% rename from nodenet/src/configquorum.rs rename to crates/nodenet/src/configquorum.rs diff --git a/nodenet/src/conn.rs b/crates/nodenet/src/conn.rs similarity index 100% rename from nodenet/src/conn.rs rename to crates/nodenet/src/conn.rs diff --git a/nodenet/src/conn/test.rs b/crates/nodenet/src/conn/test.rs similarity index 100% rename from nodenet/src/conn/test.rs rename to crates/nodenet/src/conn/test.rs diff --git a/nodenet/src/lib.rs b/crates/nodenet/src/lib.rs similarity index 100% rename from nodenet/src/lib.rs rename to crates/nodenet/src/lib.rs diff --git a/nodenet/src/scylla.rs b/crates/nodenet/src/scylla.rs similarity index 100% rename from nodenet/src/scylla.rs rename to crates/nodenet/src/scylla.rs diff --git a/parse/Cargo.toml b/crates/parse/Cargo.toml similarity index 95% rename from parse/Cargo.toml rename to crates/parse/Cargo.toml index f11065d..02fb862 100644 --- a/parse/Cargo.toml +++ b/crates/parse/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" [dependencies] serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" +humantime-serde = "1.1" tokio = { version = "1.28.2", features = ["fs"] } chrono = { version = "0.4.26", features = ["serde"] } bytes = "1.4" diff --git a/parse/src/api1_parse.rs b/crates/parse/src/api1_parse.rs similarity index 100% rename from parse/src/api1_parse.rs rename to crates/parse/src/api1_parse.rs diff --git a/parse/src/channelconfig.rs b/crates/parse/src/channelconfig.rs similarity index 88% rename from parse/src/channelconfig.rs rename to crates/parse/src/channelconfig.rs index 346bd63..7ce704e 100644 --- a/parse/src/channelconfig.rs +++ b/crates/parse/src/channelconfig.rs @@ -1,3 +1,5 @@ +use chrono::DateTime; +use chrono::Utc; use err::thiserror; use err::Error; use netpod::log::*; @@ -24,6 +26,8 @@ use num_traits::ToPrimitive; use serde::Deserialize; use serde::Serialize; use std::fmt; +use std::time::Duration; +use std::time::SystemTime; use tokio::io::ErrorKind; const TEST_BACKEND: &str = "testbackend-00"; @@ -96,6 +100,8 @@ impl CompressionMethod { #[derive(Clone, Debug, Serialize, Deserialize)] pub struct ConfigEntry { pub ts: TsNano, + #[serde(with = "humantime_serde")] + pub ts_human: SystemTime, pub pulse: i64, pub ks: i32, pub bs: DtNano, @@ -254,6 +260,7 @@ pub fn parse_entry(inp: &[u8]) -> NRes> { inp_e, Some(ConfigEntry { ts: TsNano::from_ns(ts as u64), + ts_human: SystemTime::UNIX_EPOCH + Duration::from_nanos(ts as u64), pulse, ks, bs, @@ -353,11 +360,13 @@ async fn read_local_config_test( ncc: &NodeConfigCached, ) -> Result { if channel.name() == "test-gen-i32-dim0-v00" { + let ts = 0; let ret = ChannelConfigs { format_version: 0, channel_name: channel.name().into(), entries: vec![ConfigEntry { - ts: TsNano::from_ns(0), + ts: TsNano::from_ns(ts), + ts_human: SystemTime::UNIX_EPOCH + Duration::from_nanos(ts as u64), pulse: 0, ks: 2, bs: DtNano::from_ns(DAY), @@ -383,11 +392,13 @@ async fn read_local_config_test( }; Ok(ret) } else if channel.name() == "test-gen-i32-dim0-v01" { + let ts = 0; let ret = ChannelConfigs { format_version: 0, channel_name: channel.name().into(), entries: vec![ConfigEntry { - ts: TsNano::from_ns(0), + ts: TsNano::from_ns(ts), + ts_human: SystemTime::UNIX_EPOCH + Duration::from_nanos(ts as u64), pulse: 0, ks: 2, bs: DtNano::from_ns(DAY), @@ -451,23 +462,41 @@ pub fn extract_matching_config_entry<'a>( range: &NanoRange, channel_config: &'a ChannelConfigs, ) -> Result, ConfigParseError> { + const DO_DEBUG: bool = false; + if DO_DEBUG { + debug!("extract_matching_config_entry range {range:?}"); + } let mut a: Vec<_> = channel_config.entries.iter().enumerate().map(|(i, x)| (i, x)).collect(); a.sort_unstable_by_key(|(_, x)| x.ts.ns()); + let a = a; + + if DO_DEBUG { + debug!("------------------------------------------------------------------"); + for x in &a { + debug!("SORTED {:3} {:?}", x.0, x.1.ks); + } + } let b: Vec<_> = a .into_iter() .rev() .map({ - let mut nx = None; + let mut last = None; move |(i, x)| { - let k = nx.clone(); - nx = Some(x.ts.clone()); + let k = last.clone(); + last = Some(x.ts.clone()); (i, x, k) } }) .collect(); - let mut c: Vec<_> = b + if DO_DEBUG { + debug!("------------------------------------------------------------------"); + for x in &b { + debug!("NEIGHB {:3} {:?} {:?}", x.0, x.1.ks, x.2); + } + } + let c: Vec<_> = b .into_iter() .rev() .map(|(i, e, tsn)| { @@ -487,25 +516,41 @@ pub fn extract_matching_config_entry<'a>( range.end() } }; - (i, TsNano(q - p), e) + (i, DtNano::from_ns(q - p), e) } else { - (i, TsNano(0), e) + (i, DtNano::from_ns(0), e) } } else { if e.ts.ns() < range.end() { if e.ts.ns() < range.beg() { - (i, TsNano(range.delta()), e) + (i, DtNano::from_ns(range.delta()), e) } else { - (i, TsNano(range.end() - e.ts.ns()), e) + (i, DtNano::from_ns(range.end() - e.ts.ns()), e) } } else { - (i, TsNano(0), e) + (i, DtNano::from_ns(0), e) } } }) .collect(); - c.sort_unstable_by_key(|x| u64::MAX - x.1.ns()); + if DO_DEBUG { + debug!("------------------------------------------------------------------"); + for (i, dt, e) in &c { + debug!("WEIGHT {:3} {:?} {:?} {:?}", i, dt, e.ks, e.ts); + } + } + + let mut c = c; + c.sort_unstable_by_key(|(_, dt, _)| u64::MAX - dt.ns()); + let c = c; + + if DO_DEBUG { + debug!("------------------------------------------------------------------"); + for (i, dt, e) in &c { + debug!("WEISOR {:3} {:?} {:?} {:?}", i, dt, e.ks, e.ts); + } + } if let Some(&(i, _, _)) = c.first() { Ok(MatchingConfigEntry::Single(&channel_config.entries[i])) diff --git a/parse/src/jsonconf.rs b/crates/parse/src/jsonconf.rs similarity index 100% rename from parse/src/jsonconf.rs rename to crates/parse/src/jsonconf.rs diff --git a/parse/src/lib.rs b/crates/parse/src/lib.rs similarity index 100% rename from parse/src/lib.rs rename to crates/parse/src/lib.rs diff --git a/query/Cargo.toml b/crates/query/Cargo.toml similarity index 100% rename from query/Cargo.toml rename to crates/query/Cargo.toml diff --git a/query/src/api4.rs b/crates/query/src/api4.rs similarity index 100% rename from query/src/api4.rs rename to crates/query/src/api4.rs diff --git a/query/src/api4/binned.rs b/crates/query/src/api4/binned.rs similarity index 100% rename from query/src/api4/binned.rs rename to crates/query/src/api4/binned.rs diff --git a/query/src/api4/events.rs b/crates/query/src/api4/events.rs similarity index 100% rename from query/src/api4/events.rs rename to crates/query/src/api4/events.rs diff --git a/query/src/lib.rs b/crates/query/src/lib.rs similarity index 100% rename from query/src/lib.rs rename to crates/query/src/lib.rs diff --git a/query/src/transform.rs b/crates/query/src/transform.rs similarity index 100% rename from query/src/transform.rs rename to crates/query/src/transform.rs diff --git a/scyllaconn/Cargo.toml b/crates/scyllaconn/Cargo.toml similarity index 100% rename from scyllaconn/Cargo.toml rename to crates/scyllaconn/Cargo.toml diff --git a/scyllaconn/src/bincache.rs b/crates/scyllaconn/src/bincache.rs similarity index 100% rename from scyllaconn/src/bincache.rs rename to crates/scyllaconn/src/bincache.rs diff --git a/scyllaconn/src/errconv.rs b/crates/scyllaconn/src/errconv.rs similarity index 100% rename from scyllaconn/src/errconv.rs rename to crates/scyllaconn/src/errconv.rs diff --git a/scyllaconn/src/events.rs b/crates/scyllaconn/src/events.rs similarity index 100% rename from scyllaconn/src/events.rs rename to crates/scyllaconn/src/events.rs diff --git a/scyllaconn/src/scyllaconn.rs b/crates/scyllaconn/src/scyllaconn.rs similarity index 100% rename from scyllaconn/src/scyllaconn.rs rename to crates/scyllaconn/src/scyllaconn.rs diff --git a/scyllaconn/src/status.rs b/crates/scyllaconn/src/status.rs similarity index 100% rename from scyllaconn/src/status.rs rename to crates/scyllaconn/src/status.rs diff --git a/streams/Cargo.toml b/crates/streams/Cargo.toml similarity index 100% rename from streams/Cargo.toml rename to crates/streams/Cargo.toml diff --git a/streams/src/boxed.rs b/crates/streams/src/boxed.rs similarity index 100% rename from streams/src/boxed.rs rename to crates/streams/src/boxed.rs diff --git a/streams/src/collect.rs b/crates/streams/src/collect.rs similarity index 100% rename from streams/src/collect.rs rename to crates/streams/src/collect.rs diff --git a/streams/src/dtflags.rs b/crates/streams/src/dtflags.rs similarity index 100% rename from streams/src/dtflags.rs rename to crates/streams/src/dtflags.rs diff --git a/streams/src/filechunkread.rs b/crates/streams/src/filechunkread.rs similarity index 100% rename from streams/src/filechunkread.rs rename to crates/streams/src/filechunkread.rs diff --git a/streams/src/frames.rs b/crates/streams/src/frames.rs similarity index 100% rename from streams/src/frames.rs rename to crates/streams/src/frames.rs diff --git a/streams/src/frames/eventsfromframes.rs b/crates/streams/src/frames/eventsfromframes.rs similarity index 100% rename from streams/src/frames/eventsfromframes.rs rename to crates/streams/src/frames/eventsfromframes.rs diff --git a/streams/src/frames/inmem.rs b/crates/streams/src/frames/inmem.rs similarity index 100% rename from streams/src/frames/inmem.rs rename to crates/streams/src/frames/inmem.rs diff --git a/streams/src/generators.rs b/crates/streams/src/generators.rs similarity index 100% rename from streams/src/generators.rs rename to crates/streams/src/generators.rs diff --git a/streams/src/itemclone.rs b/crates/streams/src/itemclone.rs similarity index 100% rename from streams/src/itemclone.rs rename to crates/streams/src/itemclone.rs diff --git a/streams/src/lib.rs b/crates/streams/src/lib.rs similarity index 100% rename from streams/src/lib.rs rename to crates/streams/src/lib.rs diff --git a/streams/src/needminbuffer.rs b/crates/streams/src/needminbuffer.rs similarity index 100% rename from streams/src/needminbuffer.rs rename to crates/streams/src/needminbuffer.rs diff --git a/streams/src/plaineventsjson.rs b/crates/streams/src/plaineventsjson.rs similarity index 100% rename from streams/src/plaineventsjson.rs rename to crates/streams/src/plaineventsjson.rs diff --git a/streams/src/rangefilter2.rs b/crates/streams/src/rangefilter2.rs similarity index 100% rename from streams/src/rangefilter2.rs rename to crates/streams/src/rangefilter2.rs diff --git a/streams/src/slidebuf.rs b/crates/streams/src/slidebuf.rs similarity index 100% rename from streams/src/slidebuf.rs rename to crates/streams/src/slidebuf.rs diff --git a/streams/src/tcprawclient.rs b/crates/streams/src/tcprawclient.rs similarity index 100% rename from streams/src/tcprawclient.rs rename to crates/streams/src/tcprawclient.rs diff --git a/streams/src/test.rs b/crates/streams/src/test.rs similarity index 100% rename from streams/src/test.rs rename to crates/streams/src/test.rs diff --git a/streams/src/test/collect.rs b/crates/streams/src/test/collect.rs similarity index 100% rename from streams/src/test/collect.rs rename to crates/streams/src/test/collect.rs diff --git a/streams/src/test/timebin.rs b/crates/streams/src/test/timebin.rs similarity index 100% rename from streams/src/test/timebin.rs rename to crates/streams/src/test/timebin.rs diff --git a/streams/src/timebin.rs b/crates/streams/src/timebin.rs similarity index 100% rename from streams/src/timebin.rs rename to crates/streams/src/timebin.rs diff --git a/streams/src/timebinnedjson.rs b/crates/streams/src/timebinnedjson.rs similarity index 100% rename from streams/src/timebinnedjson.rs rename to crates/streams/src/timebinnedjson.rs diff --git a/streams/src/transform.rs b/crates/streams/src/transform.rs similarity index 100% rename from streams/src/transform.rs rename to crates/streams/src/transform.rs diff --git a/taskrun/Cargo.toml b/crates/taskrun/Cargo.toml similarity index 100% rename from taskrun/Cargo.toml rename to crates/taskrun/Cargo.toml diff --git a/taskrun/src/taskrun.rs b/crates/taskrun/src/taskrun.rs similarity index 100% rename from taskrun/src/taskrun.rs rename to crates/taskrun/src/taskrun.rs