Transpiled version (3318L) is out of date.
1 | static <A> Producer<A> moveProducerToNewThread(Producer<A> producer, CloseablesHolder ch, int bufferSize default 65536) {
|
2 | if (producer == null) null; |
3 | SimpleCircularBuffer<A> buffer = new(bufferSize); |
4 | new Flag done; |
5 | new Var<Throwable> error; |
6 | ch.add(() -> done.raise()); |
7 | startThread(r {
|
8 | try {
|
9 | A a; |
10 | while ping (!done.isUp() && (a = producer.next()) != null) {
|
11 | ifdef moveProducerToNewThread_debug |
12 | print("original producer returned: " + a);
|
13 | endifdef |
14 | while (buffer.isFull() && !done.isUp()) sleep(1); |
15 | buffer.add(a); |
16 | } |
17 | } catch e {
|
18 | error.set(e); |
19 | } finally {
|
20 | done.raise(); |
21 | } |
22 | }); |
23 | |
24 | ret () -> {
|
25 | while true {
|
26 | bool isDone = done.isUp(); |
27 | A a = buffer.popFirst(); |
28 | if (a != null) ret a; |
29 | if (isDone) |
30 | null; |
31 | else |
32 | sleep(1); |
33 | } |
34 | }; |
35 | } |
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1031007 |
| Snippet name: | moveProducerToNewThread |
| Eternal ID of this version: | #1031007/6 |
| Text MD5: | 6a88618f5a0301b324d8026b27d51495 |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-04-19 18:02:52 |
| Source code size: | 905 bytes / 35 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 337 / 458 |
| Version history: | 5 change(s) |
| Referenced in: | [show references] |