Streaming OsidList plumbing. OsidLists are I/O streams, not in-memory Collections — these implementations buffer, compose, merge, and pipe those streams across virtual threads, decoupling the producer that fills a list from the consumer that drains it.
An OsidList
is a forward-only, single-consumer stream of typed domain objects.
The flumen package supplies five cross-cutting streaming OsidList
patterns — each implemented for
every OsidObjectList
across all OSID domains — that move work off the consumer thread
and keep results flowing up the stack instead of buffering them
into a Java Collection.
Wraps an underlying list and drains it on a virtual thread into a bounded, lock-free queue, decoupling the producer from the consumer.
Pattern →A concurrent producer/consumer list — one side pushes elements and signals completion, a single consumer pulls them elsewhere.
Pattern →Chains N lists end to end, draining each completely before advancing to the next. Sources may be added while the consumer reads.
Pattern →Merges N independently-buffered lists into a single stream, returning elements in arrival order as each source produces them.
Pattern →Executes a prepared statement and streams the result set rows into OsidObjects, built by a generator and buffered on a virtual thread.
Pattern →Assembles one OsidObject from the several adjacent rows sharing a key — CTE, joined one-to-many, or localizable text — buffered on a virtual thread.
Pattern →