final class org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask extends java.lang.Object implements java.lang.Runnable
{
private final org.apache.camel.util.concurrent.AtomicExchange result;
private final org.apache.camel.Exchange original;
private final java.util.concurrent.atomic.AtomicInteger total;
private final java.util.concurrent.CompletionService completion;
private final java.util.concurrent.atomic.AtomicBoolean running;
private final java.util.concurrent.CountDownLatch aggregationOnTheFlyDone;
private final java.util.concurrent.atomic.AtomicBoolean allTasksSubmitted;
private final org.apache.camel.util.concurrent.AtomicException executionException;
final org.apache.camel.processor.MulticastProcessor this$0;
private void <init>(org.apache.camel.processor.MulticastProcessor, org.apache.camel.util.concurrent.AtomicExchange, org.apache.camel.Exchange, java.util.concurrent.atomic.AtomicInteger, java.util.concurrent.CompletionService, java.util.concurrent.atomic.AtomicBoolean, java.util.concurrent.CountDownLatch, java.util.concurrent.atomic.AtomicBoolean, org.apache.camel.util.concurrent.AtomicException)
{
org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask v;
org.apache.camel.util.concurrent.AtomicExchange v;
java.util.concurrent.atomic.AtomicBoolean v, v;
org.apache.camel.Exchange v;
java.util.concurrent.CompletionService v;
java.util.concurrent.CountDownLatch v;
org.apache.camel.processor.MulticastProcessor v;
org.apache.camel.util.concurrent.AtomicException v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask;
v := @parameter: org.apache.camel.processor.MulticastProcessor;
v := @parameter: org.apache.camel.util.concurrent.AtomicExchange;
v := @parameter: org.apache.camel.Exchange;
v := @parameter: java.util.concurrent.atomic.AtomicInteger;
v := @parameter: java.util.concurrent.CompletionService;
v := @parameter: java.util.concurrent.atomic.AtomicBoolean;
v := @parameter: java.util.concurrent.CountDownLatch;
v := @parameter: java.util.concurrent.atomic.AtomicBoolean;
v := @parameter: org.apache.camel.util.concurrent.AtomicException;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0> = v;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicExchange result> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicInteger total> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CompletionService completion> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicBoolean running> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CountDownLatch aggregationOnTheFlyDone> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicBoolean allTasksSubmitted> = v;
v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicException executionException> = v;
return;
}
public void run()
{
java.lang.Throwable v, v;
org.apache.camel.Exchange v, v, v, v, v, v, v;
org.apache.camel.util.concurrent.AtomicException v, v;
java.lang.String v, v, v, v, v, v, v;
boolean v;
org.apache.camel.RuntimeCamelException v;
org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask v;
org.slf4j.Logger v, v, v, v, v, v, v;
java.util.concurrent.CountDownLatch v, v, v;
v := @this: org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask;
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Aggregate on the fly task started for exchangeId: {}", v);
label:
specialinvoke v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: void aggregateOnTheFly()>();
label:
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Signaling we are done aggregating on the fly for exchangeId: {}", v);
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Aggregate on the fly task done for exchangeId: {}", v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CountDownLatch aggregationOnTheFlyDone>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
goto label;
label:
v := @caughtexception;
v = v instanceof java.lang.Exception;
if v == 0 goto label;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicException executionException>;
virtualinvoke v.<org.apache.camel.util.concurrent.AtomicException: void set(java.lang.Object)>(v);
goto label;
label:
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicException executionException>;
v = staticinvoke <org.apache.camel.util.ObjectHelper: org.apache.camel.RuntimeCamelException wrapRuntimeCamelException(java.lang.Throwable)>(v);
virtualinvoke v.<org.apache.camel.util.concurrent.AtomicException: void set(java.lang.Object)>(v);
label:
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Signaling we are done aggregating on the fly for exchangeId: {}", v);
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Aggregate on the fly task done for exchangeId: {}", v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CountDownLatch aggregationOnTheFlyDone>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
goto label;
label:
v := @caughtexception;
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Signaling we are done aggregating on the fly for exchangeId: {}", v);
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Aggregate on the fly task done for exchangeId: {}", v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CountDownLatch aggregationOnTheFlyDone>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void aggregateOnTheFly() throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
{
java.lang.Integer v;
java.util.concurrent.Future v;
byte v, v;
java.lang.Long v, v;
org.apache.camel.util.concurrent.AtomicExchange v, v, v;
long v, v, v, v, v;
org.apache.camel.processor.MulticastProcessor$ParallelAggregateTask v;
java.lang.String v;
java.util.concurrent.CompletionService v, v, v, v;
org.apache.camel.processor.MulticastProcessor v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.atomic.AtomicInteger v, v, v;
boolean v, v, v, v, v, v, v, v, v;
org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask v;
org.apache.camel.processor.MulticastProcessor$ParallelAggregateTimeoutTask v;
java.util.concurrent.atomic.AtomicBoolean v, v, v;
org.apache.camel.Exchange v;
int v, v;
java.util.concurrent.ExecutorService v, v;
org.slf4j.Logger v, v, v, v, v, v, v;
org.apache.camel.util.StopWatch v;
java.util.concurrent.TimeUnit v, v;
java.lang.Object v;
v := @this: org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v = 0;
v = new org.apache.camel.util.StopWatch;
specialinvoke v.<org.apache.camel.util.StopWatch: void <init>()>();
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
label:
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicBoolean allTasksSubmitted>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int intValue()>();
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicInteger total>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int get()>();
if v < v goto label;
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Done aggregating {} exchanges on the fly.", v);
goto label;
label:
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CompletionService completion>;
v = interfaceinvoke v.<java.util.concurrent.CompletionService: java.util.concurrent.Future poll()>();
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Polled completion task #{} after timeout to grab already completed tasks: {}", v, v);
goto label;
label:
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: long timeout>;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: long timeout>;
v = virtualinvoke v.<org.apache.camel.util.StopWatch: long taken()>();
v = v - v;
v = v cmp 0L;
if v >= 0 goto label;
v = 0L;
label:
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object,java.lang.Object)>("Polling completion task #{} using timeout {} millis.", v, v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CompletionService completion>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = interfaceinvoke v.<java.util.concurrent.CompletionService: java.util.concurrent.Future poll(long,java.util.concurrent.TimeUnit)>(v, v);
goto label;
label:
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Polling completion task #{}", v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CompletionService completion>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = interfaceinvoke v.<java.util.concurrent.CompletionService: java.util.concurrent.Future poll(long,java.util.concurrent.TimeUnit)>(1L, v);
if v == null goto label;
label:
if v != null goto label;
v = new org.apache.camel.processor.MulticastProcessor$ParallelAggregateTimeoutTask;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.Exchange original>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicExchange result>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.CompletionService completion>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicInteger total>;
specialinvoke v.<org.apache.camel.processor.MulticastProcessor$ParallelAggregateTimeoutTask: void <init>(org.apache.camel.processor.MulticastProcessor,org.apache.camel.Exchange,org.apache.camel.util.concurrent.AtomicExchange,java.util.concurrent.CompletionService,java.util.concurrent.atomic.AtomicInteger,java.util.concurrent.atomic.AtomicInteger,java.util.concurrent.atomic.AtomicBoolean)>(v, v, v, v, v, v, v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: boolean parallelAggregate>;
if v == 0 goto label;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: java.util.concurrent.ExecutorService aggregateExecutorService>;
interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.concurrent.Future submit(java.lang.Runnable)>(v);
goto label;
label:
virtualinvoke v.<org.apache.camel.processor.MulticastProcessor$ParallelAggregateTimeoutTask: void run()>();
goto label;
label:
v = interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get()>();
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = virtualinvoke v.<org.apache.camel.processor.MulticastProcessor: java.lang.Integer getExchangeIndex(org.apache.camel.Exchange)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Integer)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Parallel processing failed for number \u0001");
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = staticinvoke <org.apache.camel.processor.PipelineHelper: boolean continueProcessing(org.apache.camel.Exchange,java.lang.String,org.slf4j.Logger)>(v, v, v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: boolean stopOnException>;
if v == 0 goto label;
if v != 0 goto label;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicExchange result>;
virtualinvoke v.<org.apache.camel.util.concurrent.AtomicExchange: void set(java.lang.Object)>(v);
v = 1;
goto label;
label:
v = new org.apache.camel.processor.MulticastProcessor$ParallelAggregateTask;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.util.concurrent.AtomicExchange result>;
specialinvoke v.<org.apache.camel.processor.MulticastProcessor$ParallelAggregateTask: void <init>(org.apache.camel.processor.MulticastProcessor,org.apache.camel.util.concurrent.AtomicExchange,org.apache.camel.Exchange,java.util.concurrent.atomic.AtomicInteger)>(v, v, v, v);
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: boolean parallelAggregate>;
if v == 0 goto label;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: java.util.concurrent.ExecutorService aggregateExecutorService>;
interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.concurrent.Future submit(java.lang.Runnable)>(v);
goto label;
label:
virtualinvoke v.<org.apache.camel.processor.MulticastProcessor$ParallelAggregateTask: void run()>();
goto label;
label:
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
if v == 0 goto label;
label:
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: org.apache.camel.processor.MulticastProcessor this$0>;
v = v.<org.apache.camel.processor.MulticastProcessor: long timeout>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Cancelling tasks due timeout after {} millis.", v);
label:
if v == 0 goto label;
v = <org.apache.camel.processor.MulticastProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("Cancelling tasks due stopOnException.");
label:
v = v.<org.apache.camel.processor.MulticastProcessor$AggregateOnTheFlyTask: java.util.concurrent.atomic.AtomicBoolean running>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
label:
return;
}
}