Brord icon

pipeline

Brord | PRO | 06/07/19 01:17:17 AM UTC | 0 ⭐ | 479 👁️ | Never ⏰ | []
text |

1.87 KB

|

None

|

0 👍

/

0 👎

    public void start(){
        addStage("broadcast", broadcastStageQueue, broadcastStage);
    }
     private <T> void addStage(String name,  BlockingQueue<ProcessingContext<T>> queue, ProcessingStage stage) {
        stagesThreadPool.submit(new Thread(() -> {
            try {
                while (!shutdown.get()) {
                    ProcessingContext ctx = queue.take();
                    ctx = stage.process(ctx);
                    switch (ctx.getNextStage()) {
                        case REPLY:
                            replyStageQueue.put(ctx);
                            break;
                        case HASHING:
                            hashAndValidate(ctx);
                            break;
                        case RECEIVED:
                            receivedStageQueue.put(ctx);
                            break;
                        case MULTIPLE:
                            ImmutablePair<ProcessingContext<ReplyPayload>,
                                    ProcessingContext<
                                            ReceivedPayload>> payload = (ImmutablePair<ProcessingContext<ReplyPayload>,
                                                    ProcessingContext<ReceivedPayload>>) ctx.getPayload();
                            replyStageQueue.put(payload.getLeft());
                            receivedStageQueue.put(payload.getRight());
                            break;
                        case BROADCAST:
                                broadcastStageQueue.put(ctx);
                                break;
                        case ABORT:
                            break;
                    }
                }
            } catch (InterruptedException e) {
             } finally {
                log.info("{} stage shutdown", name);
            }
        }, name + "-stage"));
    }

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎