class org.apache.camel.processor.BatchProcessor$BatchSender extends java.lang.Thread
{
private java.util.Queue queue;
private java.util.concurrent.locks.Lock queueLock;
private final java.util.concurrent.atomic.AtomicBoolean exchangeEnqueued;
private final java.util.Queue completionPredicateMatched;
private java.util.concurrent.locks.Condition exchangeEnqueuedCondition;
final org.apache.camel.processor.BatchProcessor this$0;
void <init>(org.apache.camel.processor.BatchProcessor)
{
org.apache.camel.processor.BatchProcessor$BatchSender v;
org.apache.camel.CamelContext v;
java.util.concurrent.locks.ReentrantLock v;
java.util.concurrent.atomic.AtomicBoolean v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.Lock v;
org.apache.camel.processor.BatchProcessor v;
org.apache.camel.spi.ExecutorServiceManager v;
java.lang.String v;
java.util.LinkedList v;
java.util.concurrent.ConcurrentLinkedQueue v;
v := @this: org.apache.camel.processor.BatchProcessor$BatchSender;
v := @parameter: org.apache.camel.processor.BatchProcessor;
v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0> = v;
v = v.<org.apache.camel.processor.BatchProcessor: org.apache.camel.CamelContext camelContext>;
v = interfaceinvoke v.<org.apache.camel.CamelContext: org.apache.camel.spi.ExecutorServiceManager getExecutorServiceManager()>();
v = interfaceinvoke v.<org.apache.camel.spi.ExecutorServiceManager: java.lang.String resolveThreadName(java.lang.String)>("Batch Sender");
specialinvoke v.<java.lang.Thread: void <init>(java.lang.String)>(v);
v = new java.util.concurrent.locks.ReentrantLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantLock: void <init>()>();
v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.atomic.AtomicBoolean exchangeEnqueued> = v;
v = new java.util.concurrent.ConcurrentLinkedQueue;
specialinvoke v.<java.util.concurrent.ConcurrentLinkedQueue: void <init>()>();
v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue completionPredicateMatched> = v;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
v = interfaceinvoke v.<java.util.concurrent.locks.Lock: java.util.concurrent.locks.Condition newCondition()>();
v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Condition exchangeEnqueuedCondition> = v;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue queue> = v;
return;
}
public void run()
{
java.lang.Long v;
boolean v, v, v, v, v, v, v;
java.util.Collection v, v;
org.apache.camel.spi.ExceptionHandler v;
java.util.Queue v, v, v;
java.lang.Throwable v, v, v;
java.util.concurrent.atomic.AtomicBoolean v, v, v;
long v, v;
int v, v, v;
org.apache.camel.processor.BatchProcessor$BatchSender v;
org.slf4j.Logger v, v, v, v;
java.util.concurrent.TimeUnit v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.Lock v, v, v, v, v, v;
java.lang.InterruptedException v;
org.apache.camel.processor.BatchProcessor v, v, v, v, v, v, v, v, v, v;
java.lang.Object v;
v := @this: org.apache.camel.processor.BatchProcessor$BatchSender;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void lock()>();
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.atomic.AtomicBoolean exchangeEnqueued>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: long batchTimeout>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Waiting for new exchange to arrive or batchTimeout to occur after {} ms.", v);
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Condition exchangeEnqueuedCondition>;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: long batchTimeout>;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: boolean await(long,java.util.concurrent.TimeUnit)>(v, v);
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue completionPredicateMatched>;
v = interfaceinvoke v.<java.util.Queue: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue completionPredicateMatched>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
label:
if v != null goto label;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.atomic.AtomicBoolean exchangeEnqueued>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v != 0 goto label;
label:
if v == null goto label;
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Collecting exchanges to be aggregated triggered by completion predicate");
goto label;
label:
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Collecting exchanges to be aggregated triggered by batch timeout");
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: java.util.Collection collection>;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: int batchSize>;
specialinvoke v.<org.apache.camel.processor.BatchProcessor$BatchSender: void drainQueueTo(java.util.Collection,int,java.lang.String)>(v, v, v);
goto label;
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.atomic.AtomicBoolean exchangeEnqueued>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(0);
v = 0;
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue queue>;
v = interfaceinvoke v.<java.util.Queue: int size()>();
v = specialinvoke v.<org.apache.camel.processor.BatchProcessor: boolean isInBatchCompleted(int)>(v);
if v == 0 goto label;
v = 1;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: java.util.Collection collection>;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: int batchSize>;
specialinvoke v.<org.apache.camel.processor.BatchProcessor$BatchSender: void drainQueueTo(java.util.Collection,int,java.lang.String)>(v, v, v);
goto label;
label:
if v == 0 goto label;
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String)>("Collecting exchanges to be aggregated triggered by new exchanges received");
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = specialinvoke v.<org.apache.camel.processor.BatchProcessor: boolean isOutBatchCompleted()>();
if v == 0 goto label;
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
label:
specialinvoke v.<org.apache.camel.processor.BatchProcessor$BatchSender: void sendExchanges()>();
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = virtualinvoke v.<org.apache.camel.processor.BatchProcessor: org.apache.camel.spi.ExceptionHandler getExceptionHandler()>();
interfaceinvoke v.<org.apache.camel.spi.ExceptionHandler: void handleException(java.lang.Throwable)>(v);
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void lock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void lock()>();
throw v;
label:
v := @caughtexception;
goto label;
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = virtualinvoke v.<org.apache.camel.processor.BatchProcessor: boolean isRunAllowed()>();
if v != 0 goto label;
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void drainQueueTo(java.util.Collection, int, java.lang.String)
{
java.lang.Throwable v;
org.apache.camel.processor.BatchProcessor$BatchSender v;
java.util.Collection v;
org.apache.camel.spi.ExceptionHandler v;
java.lang.Exception v;
int v, v;
org.apache.camel.processor.BatchProcessor v;
java.lang.Object v;
java.lang.String v, v;
java.util.Queue v;
boolean v;
v := @this: org.apache.camel.processor.BatchProcessor$BatchSender;
v := @parameter: java.util.Collection;
v := @parameter: int;
v := @parameter: java.lang.String;
v = 0;
label:
if v >= v goto label;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue queue>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
label:
interfaceinvoke v.<java.util.Collection: boolean add(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<org.apache.camel.Exchange: void setException(java.lang.Throwable)>(v);
goto label;
label:
v := @caughtexception;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = virtualinvoke v.<org.apache.camel.processor.BatchProcessor: org.apache.camel.spi.ExceptionHandler getExceptionHandler()>();
interfaceinvoke v.<org.apache.camel.spi.ExceptionHandler: void handleException(java.lang.Throwable)>(v);
label:
if v == null goto label;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
v = v + 1;
goto label;
label:
return;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void cancel()
{
org.apache.camel.processor.BatchProcessor$BatchSender v;
v := @this: org.apache.camel.processor.BatchProcessor$BatchSender;
virtualinvoke v.<org.apache.camel.processor.BatchProcessor$BatchSender: void interrupt()>();
return;
}
public void enqueueExchange(org.apache.camel.Exchange)
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.camel.Exchange v;
org.apache.camel.Predicate v, v;
java.lang.String v;
boolean v;
org.apache.camel.processor.BatchProcessor$BatchSender v;
org.slf4j.Logger v, v;
java.util.concurrent.locks.Condition v;
java.util.concurrent.locks.Lock v, v, v;
org.apache.camel.processor.BatchProcessor v, v;
java.util.Queue v, v;
v := @this: org.apache.camel.processor.BatchProcessor$BatchSender;
v := @parameter: org.apache.camel.Exchange;
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Received exchange to be batched: {}", v);
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void lock()>();
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: org.apache.camel.Predicate completionPredicate>;
if v == null goto label;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: org.apache.camel.Predicate completionPredicate>;
v = interfaceinvoke v.<org.apache.camel.Predicate: boolean matches(org.apache.camel.Exchange)>(v);
if v == 0 goto label;
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void trace(java.lang.String,java.lang.Object)>("Exchange matched completion predicate: {}", v);
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue completionPredicateMatched>;
v = interfaceinvoke v.<org.apache.camel.Exchange: java.lang.String getExchangeId()>();
interfaceinvoke v.<java.util.Queue: boolean add(java.lang.Object)>(v);
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.Queue queue>;
interfaceinvoke v.<java.util.Queue: boolean add(java.lang.Object)>(v);
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.atomic.AtomicBoolean exchangeEnqueued>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Condition exchangeEnqueuedCondition>;
interfaceinvoke v.<java.util.concurrent.locks.Condition: void signal()>();
label:
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
goto label;
label:
v := @caughtexception;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: java.util.concurrent.locks.Lock queueLock>;
interfaceinvoke v.<java.util.concurrent.locks.Lock: void unlock()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private void sendExchanges() throws java.lang.Exception
{
java.lang.Throwable v;
org.apache.camel.processor.BatchProcessor$BatchSender v;
org.slf4j.Logger v;
java.util.Iterator v;
java.util.Collection v;
org.apache.camel.spi.ExceptionHandler v;
org.apache.camel.processor.BatchProcessor v, v, v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: org.apache.camel.processor.BatchProcessor$BatchSender;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = v.<org.apache.camel.processor.BatchProcessor: java.util.Collection collection>;
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<java.util.Iterator: void remove()>();
label:
v = <org.apache.camel.processor.BatchProcessor: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Sending aggregated exchange: {}", v);
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
virtualinvoke v.<org.apache.camel.processor.BatchProcessor: void processExchange(org.apache.camel.Exchange)>(v);
label:
goto label;
label:
v := @caughtexception;
v = v.<org.apache.camel.processor.BatchProcessor$BatchSender: org.apache.camel.processor.BatchProcessor this$0>;
v = virtualinvoke v.<org.apache.camel.processor.BatchProcessor: org.apache.camel.spi.ExceptionHandler getExceptionHandler()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.camel.Exchange)>(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[])>("Error processing aggregated exchange: \u0001");
interfaceinvoke v.<org.apache.camel.spi.ExceptionHandler: void handleException(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
return;
catch java.lang.Throwable from label to label with label;
}
}