wrote journal collector

This commit is contained in:
Jay
2026-05-09 18:16:48 -04:00
parent e909e140a8
commit f96e872e4b
3 changed files with 309 additions and 44 deletions
+34
View File
@@ -0,0 +1,34 @@
package prism
func bufferedPipe[T any](input <-chan T, output chan<- T) {
var buffer []T
for {
var outOrNil chan<- T
var next T
// toggle send channel
if len(buffer) > 0 {
outOrNil = output
next = buffer[0]
} else if input == nil {
// input closed
return
}
select {
case item, ok := <-input:
if !ok {
// input is closed, set input nil
input = nil
continue
}
buffer = append(buffer, item)
case outOrNil <- next:
// discard element, set to zero to free memory
var zero T
buffer[0] = zero
buffer = buffer[1:]
}
}
}