Libraryless. Click here for Pure Java version (5015L/28K).
sclass SourceTriggeredStream<A> extends Meta { DoneFlag ended = new(true); volatile A lastElement; new AtomicLong elementCount; event newElement(A a) { lastElement = a; inc(elementCount); } void onNewElement(Runnable r) { onNewElement(runnableToIVF1(r)); } A get() { ret lastElement; } long elementCount() { ret elementCount!; } void end { ended.raise(); } bool ended() { ret ended.isUp(); } void catchError(Runnable r) { main catchError(ended, r); } // on new element, call consumer in same thread void directlyFeedInto(Consumer<A> consumer) { if (consumer != null) onNewElement(a -> consumer.accept(a)); } }
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, ekrmjmnbrukm, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1033671 |
Snippet name: | SourceTriggeredStream - a stream of objects that come in at irregular times |
Eternal ID of this version: | #1033671/16 |
Text MD5: | f3ca9c6b871be04ad30efaeb429d73c2 |
Transpilation MD5: | 533bae006213bc36a0eafffc077b14d6 |
Author: | stefan |
Category: | javax / streams |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-12-28 21:29:07 |
Source code size: | 703 bytes / 28 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 187 / 346 |
Version history: | 15 change(s) |
Referenced in: | [show references] |