public class org.apache.activemq.broker.scheduler.SchedulerBroker extends org.apache.activemq.broker.BrokerFilter implements org.apache.activemq.broker.scheduler.JobListener
{
private static final org.slf4j.Logger LOG;
private static final org.apache.activemq.util.IdGenerator ID_GENERATOR;
private static final org.apache.activemq.util.LongSequenceGenerator longGenerator;
private static final int MAX_REPEAT_ALLOWED;
private final org.apache.activemq.util.LongSequenceGenerator messageIdGenerator;
private final java.util.concurrent.atomic.AtomicBoolean started;
private final org.apache.activemq.wireformat.WireFormat wireFormat;
private final org.apache.activemq.broker.ConnectionContext context;
private final org.apache.activemq.command.ProducerId producerId;
private final org.apache.activemq.usage.SystemUsage systemUsage;
private final org.apache.activemq.broker.scheduler.JobSchedulerStore store;
private org.apache.activemq.broker.scheduler.JobScheduler scheduler;
private int maxRepeatAllowed;
public void <init>(org.apache.activemq.broker.BrokerService, org.apache.activemq.broker.Broker, org.apache.activemq.broker.scheduler.JobSchedulerStore) throws java.lang.Exception
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
org.apache.activemq.security.SecurityContext v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.broker.ConnectionContext v, v, v, v;
org.apache.activemq.broker.scheduler.JobSchedulerStore v;
int v;
org.apache.activemq.usage.SystemUsage v;
java.lang.String v;
org.apache.activemq.broker.BrokerService v;
org.apache.activemq.wireformat.WireFormat v;
org.apache.activemq.broker.scheduler.SchedulerBroker$1 v;
org.apache.activemq.command.ProducerId v, v;
org.apache.activemq.openwire.OpenWireFormat v;
org.apache.activemq.util.LongSequenceGenerator v;
org.apache.activemq.util.IdGenerator v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v := @parameter: org.apache.activemq.broker.BrokerService;
v := @parameter: org.apache.activemq.broker.Broker;
v := @parameter: org.apache.activemq.broker.scheduler.JobSchedulerStore;
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void <init>(org.apache.activemq.broker.Broker)>(v);
v = new org.apache.activemq.util.LongSequenceGenerator;
specialinvoke v.<org.apache.activemq.util.LongSequenceGenerator: void <init>()>();
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.LongSequenceGenerator messageIdGenerator> = v;
v = new java.util.concurrent.atomic.AtomicBoolean;
specialinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void <init>()>();
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: java.util.concurrent.atomic.AtomicBoolean started> = v;
v = new org.apache.activemq.openwire.OpenWireFormat;
specialinvoke v.<org.apache.activemq.openwire.OpenWireFormat: void <init>()>();
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.wireformat.WireFormat wireFormat> = v;
v = new org.apache.activemq.broker.ConnectionContext;
specialinvoke v.<org.apache.activemq.broker.ConnectionContext: void <init>()>();
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.ConnectionContext context> = v;
v = new org.apache.activemq.command.ProducerId;
specialinvoke v.<org.apache.activemq.command.ProducerId: void <init>()>();
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.command.ProducerId producerId> = v;
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: int maxRepeatAllowed> = 1000;
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobSchedulerStore store> = v;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.command.ProducerId producerId>;
v = <org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.IdGenerator ID_GENERATOR>;
v = virtualinvoke v.<org.apache.activemq.util.IdGenerator: java.lang.String generateId()>();
virtualinvoke v.<org.apache.activemq.command.ProducerId: void setConnectionId(java.lang.String)>(v);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.ConnectionContext context>;
v = <org.apache.activemq.security.SecurityContext: org.apache.activemq.security.SecurityContext BROKER_SECURITY_CONTEXT>;
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setSecurityContext(org.apache.activemq.security.SecurityContext)>(v);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.ConnectionContext context>;
v = new org.apache.activemq.broker.scheduler.SchedulerBroker$1;
specialinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker$1: void <init>(org.apache.activemq.broker.scheduler.SchedulerBroker)>(v);
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setConnection(org.apache.activemq.broker.Connection)>(v);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.ConnectionContext context>;
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setBroker(org.apache.activemq.broker.Broker)>(v);
v = virtualinvoke v.<org.apache.activemq.broker.BrokerService: org.apache.activemq.usage.SystemUsage getSystemUsage()>();
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.usage.SystemUsage systemUsage> = v;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = virtualinvoke v.<org.apache.activemq.broker.BrokerService: int getStoreOpenWireVersion()>();
interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: void setVersion(int)>(v);
return;
}
public synchronized org.apache.activemq.broker.scheduler.JobScheduler getJobScheduler() throws java.lang.Exception
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
org.apache.activemq.broker.scheduler.JobSchedulerFacade v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v = new org.apache.activemq.broker.scheduler.JobSchedulerFacade;
specialinvoke v.<org.apache.activemq.broker.scheduler.JobSchedulerFacade: void <init>(org.apache.activemq.broker.scheduler.SchedulerBroker)>(v);
return v;
}
public void start() throws java.lang.Exception
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
java.util.concurrent.atomic.AtomicBoolean v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: java.util.concurrent.atomic.AtomicBoolean started>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: void set(boolean)>(1);
virtualinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler getInternalScheduler()>();
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void start()>();
return;
}
public void stop() throws java.lang.Exception
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
org.apache.activemq.broker.scheduler.JobSchedulerStore v, v;
java.util.concurrent.atomic.AtomicBoolean v;
boolean v;
org.apache.activemq.broker.scheduler.JobScheduler v, v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean compareAndSet(boolean,boolean)>(1, 0);
if v == 0 goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobSchedulerStore store>;
if v == null goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobSchedulerStore store>;
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobSchedulerStore: void stop()>();
label:
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler>;
if v == null goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler>;
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void removeListener(org.apache.activemq.broker.scheduler.JobListener)>(v);
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler> = null;
label:
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void stop()>();
return;
}
public void send(org.apache.activemq.broker.ProducerBrokerExchange, org.apache.activemq.command.Message) throws java.lang.Exception
{
org.apache.activemq.broker.ConnectionContext v, v, v;
org.apache.activemq.command.Message v;
byte v;
java.lang.Long v;
org.apache.activemq.usage.SystemUsage v, v;
org.apache.activemq.broker.ProducerBrokerExchange v;
java.lang.Object[] v;
long v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.broker.scheduler.JobScheduler v;
java.lang.String v, v, v;
java.io.IOException v;
org.apache.activemq.command.ProducerId v;
org.apache.activemq.broker.scheduler.SchedulerBroker v;
boolean v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.command.ActiveMQDestination v, v;
java.util.List v, v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.usage.JobSchedulerUsage v, v;
int v, v;
org.apache.activemq.broker.scheduler.SchedulerBroker$2 v;
org.slf4j.Logger v;
java.util.Iterator v, v;
java.lang.Object v, v, v, v, v, v, v, v, v, v, v, v, v;
org.apache.activemq.transaction.Transaction v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v := @parameter: org.apache.activemq.broker.ProducerBrokerExchange;
v := @parameter: org.apache.activemq.command.Message;
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("scheduledJobId");
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULED_CRON");
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULED_PERIOD");
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULED_DELAY");
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ActiveMQDestination getDestination()>();
v = virtualinvoke v.<org.apache.activemq.command.ActiveMQDestination: java.lang.String getPhysicalName()>();
v = "ActiveMQ.Scheduler.Management";
v = virtualinvoke v.<java.lang.String: int length()>();
v = virtualinvoke v.<java.lang.String: boolean regionMatches(boolean,int,java.lang.String,int,int)>(1, 0, "ActiveMQ.Scheduler.Management", 0, v);
if v != 1 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler getInternalScheduler()>();
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ActiveMQDestination getReplyTo()>();
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULER_ACTION");
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("ACTION_START_TIME");
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("ACTION_END_TIME");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("BROWSE");
if v == 0 goto label;
if v == null goto label;
if v == null goto label;
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: java.util.List getAllJobs(long,long)>(v, v);
v = interfaceinvoke v.<java.util.List: 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()>();
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
virtualinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker: void sendScheduledJob(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.scheduler.Job,org.apache.activemq.command.ActiveMQDestination)>(v, v, v);
goto label;
label:
v = interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: java.util.List getAllJobs()>();
v = interfaceinvoke v.<java.util.List: 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()>();
v = virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: org.apache.activemq.broker.ConnectionContext getConnectionContext()>();
virtualinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker: void sendScheduledJob(org.apache.activemq.broker.ConnectionContext,org.apache.activemq.broker.scheduler.Job,org.apache.activemq.command.ActiveMQDestination)>(v, v, v);
goto label;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("REMOVE");
if v == 0 goto label;
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void remove(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("REMOVEALL");
if v == 0 goto label;
if v == null goto label;
if v == null goto label;
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void removeAllJobs(long,long)>(v, v);
goto label;
label:
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void removeAllJobs()>();
goto label;
label:
if v != null goto label;
if v != null goto label;
if v == null goto label;
label:
if v != null goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.usage.SystemUsage systemUsage>;
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.JobSchedulerUsage getJobSchedulerUsage()>();
if v == null goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.usage.SystemUsage systemUsage>;
v = virtualinvoke v.<org.apache.activemq.usage.SystemUsage: org.apache.activemq.usage.JobSchedulerUsage getJobSchedulerUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.JobSchedulerUsage: boolean isFull()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.usage.JobSchedulerUsage: int getPercentUsage()>();
v = virtualinvoke v.<org.apache.activemq.usage.JobSchedulerUsage: long getLimit()>();
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ProducerId getProducerId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,long,org.apache.activemq.command.ProducerId)>(v, v, 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[])>("Job Scheduler Store is Full (\u0001% of \u). Stopping producer (\u) to prevent flooding of the job scheduler store. See http://activemq.apache.org/producer-flow-control.html for more info");
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v;
label:
v = virtualinvoke v.<org.apache.activemq.usage.JobSchedulerUsage: boolean waitForSpace(long)>(1000L);
if v != 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: java.util.concurrent.atomic.AtomicBoolean getStopping()>();
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Connection closed, send aborted.");
throw v;
label:
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = v cmp v;
if v < 0 goto label;
v = <org.apache.activemq.broker.scheduler.SchedulerBroker: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v[1] = v;
v = v - v;
v = v / 1000L;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object[])>("{}: {} (blocking for: {}s)", v);
v = v + 30000L;
goto label;
label:
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: boolean isInTransaction()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: org.apache.activemq.transaction.Transaction getTransaction()>();
v = new org.apache.activemq.broker.scheduler.SchedulerBroker$2;
specialinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker$2: void <init>(org.apache.activemq.broker.scheduler.SchedulerBroker,org.apache.activemq.command.Message,java.lang.Object,java.lang.Object,java.lang.Object)>(v, v, v, v, v);
virtualinvoke v.<org.apache.activemq.transaction.Transaction: void addSynchronization(org.apache.activemq.transaction.Synchronization)>(v);
goto label;
label:
specialinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker: void doSchedule(org.apache.activemq.command.Message,java.lang.Object,java.lang.Object,java.lang.Object)>(v, v, v, v);
goto label;
label:
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void send(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message)>(v, v);
label:
return;
}
private void doSchedule(org.apache.activemq.command.Message, java.lang.Object, java.lang.Object, java.lang.Object) throws java.lang.Exception
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
byte[] v;
long v, v, v;
org.apache.activemq.broker.scheduler.JobScheduler v;
org.apache.activemq.command.Message v, v;
int v, v, v, v;
java.lang.String v, v;
org.apache.activemq.util.ByteSequence v, v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.wireformat.WireFormat v;
org.apache.activemq.command.ProducerId v;
org.apache.activemq.util.LongSequenceGenerator v;
javax.jms.MessageFormatException v;
java.lang.Object v, v, v, v, v, v, v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v := @parameter: org.apache.activemq.command.Message;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.Object;
v = 0L;
v = 0L;
v = 0;
v = "";
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.Message copy()>();
virtualinvoke v.<org.apache.activemq.command.Message: void setTransactionId(org.apache.activemq.command.TransactionId)>(null);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: org.apache.activemq.util.ByteSequence marshal(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
label:
if v == null goto label;
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
label:
if v == null goto label;
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Long;");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
label:
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULED_REPEAT");
if v == null goto label;
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Integer;");
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: int maxRepeatAllowed>;
if v <= v goto label;
v = new javax.jms.MessageFormatException;
specialinvoke v.<javax.jms.MessageFormatException: void <init>(java.lang.String)>("The scheduled repeat value is too large");
throw v;
label:
v = new org.apache.activemq.command.MessageId;
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: org.apache.activemq.command.ProducerId getProducerId()>();
v = <org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.LongSequenceGenerator longGenerator>;
v = virtualinvoke v.<org.apache.activemq.util.LongSequenceGenerator: long getNextSequenceId()>();
specialinvoke v.<org.apache.activemq.command.MessageId: void <init>(org.apache.activemq.command.ProducerId,long)>(v, v);
v = virtualinvoke v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler getInternalScheduler()>();
v = virtualinvoke v.<org.apache.activemq.command.MessageId: java.lang.String toString()>();
v = new org.apache.activemq.util.ByteSequence;
v = v.<org.apache.activemq.util.ByteSequence: byte[] data>;
v = v.<org.apache.activemq.util.ByteSequence: int offset>;
v = v.<org.apache.activemq.util.ByteSequence: int length>;
specialinvoke v.<org.apache.activemq.util.ByteSequence: void <init>(byte[],int,int)>(v, v, v);
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void schedule(java.lang.String,org.apache.activemq.util.ByteSequence,java.lang.String,long,long,int)>(v, v, v, v, v, v);
return;
}
public void scheduledJob(java.lang.String, org.apache.activemq.util.ByteSequence)
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
byte[] v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.state.ProducerState v;
byte v, v, v, v, v, v;
java.lang.Long v, v;
org.apache.activemq.util.ByteSequence v, v;
org.apache.activemq.command.MessageId v, v;
org.apache.activemq.wireformat.WireFormat v, v;
java.lang.Exception v;
org.apache.activemq.util.LongSequenceGenerator v;
javax.jms.MessageFormatException v;
org.apache.activemq.broker.ProducerBrokerExchange v;
java.lang.Object[] v;
long v, v, v, v, v, v, v, v;
int v, v, v, v, v;
java.lang.String v, v, v;
org.slf4j.Logger v, v;
org.apache.activemq.command.ProducerId v;
org.apache.activemq.command.ProducerInfo v;
java.lang.Object v, v, v, v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v := @parameter: java.lang.String;
v := @parameter: org.apache.activemq.util.ByteSequence;
v = new org.apache.activemq.util.ByteSequence;
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: byte[] getData()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getOffset()>();
v = virtualinvoke v.<org.apache.activemq.util.ByteSequence: int getLength()>();
specialinvoke v.<org.apache.activemq.util.ByteSequence: void <init>(byte[],int,int)>(v, v, v);
label:
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: java.lang.Object unmarshal(org.apache.activemq.util.ByteSequence)>(v);
virtualinvoke v.<org.apache.activemq.command.Message: void setOriginalTransactionId(org.apache.activemq.command.TransactionId)>(null);
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULED_REPEAT");
v = virtualinvoke v.<org.apache.activemq.command.Message: java.lang.Object getProperty(java.lang.String)>("AMQ_SCHEDULED_CRON");
if v == null goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
goto label;
label:
v = null;
label:
v = v;
v = 0;
if v == null goto label;
v = staticinvoke <org.apache.activemq.util.TypeConversionSupport: java.lang.Object convert(java.lang.Object,java.lang.Class)>(v, class "Ljava/lang/Integer;");
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: int maxRepeatAllowed>;
if v <= v goto label;
v = new javax.jms.MessageFormatException;
specialinvoke v.<javax.jms.MessageFormatException: void <init>(java.lang.String)>("The scheduled repeat value is too large");
throw v;
label:
if v != 0 goto label;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
label:
v = new org.apache.activemq.command.MessageId;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.command.ProducerId producerId>;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.LongSequenceGenerator messageIdGenerator>;
v = virtualinvoke v.<org.apache.activemq.util.LongSequenceGenerator: long getNextSequenceId()>();
specialinvoke v.<org.apache.activemq.command.MessageId: void <init>(org.apache.activemq.command.ProducerId,long)>(v, v);
virtualinvoke v.<org.apache.activemq.command.Message: void setMessageId(org.apache.activemq.command.MessageId)>(v);
label:
virtualinvoke v.<org.apache.activemq.command.Message: void setProperty(java.lang.String,java.lang.Object)>("scheduledJobId", v);
virtualinvoke v.<org.apache.activemq.command.Message: void removeProperty(java.lang.String)>("AMQ_SCHEDULED_PERIOD");
virtualinvoke v.<org.apache.activemq.command.Message: void removeProperty(java.lang.String)>("AMQ_SCHEDULED_DELAY");
virtualinvoke v.<org.apache.activemq.command.Message: void removeProperty(java.lang.String)>("AMQ_SCHEDULED_REPEAT");
virtualinvoke v.<org.apache.activemq.command.Message: void removeProperty(java.lang.String)>("AMQ_SCHEDULED_CRON");
v = virtualinvoke v.<org.apache.activemq.command.Message: long getTimestamp()>();
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: long getExpiration()>();
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<org.apache.activemq.command.Message: long getExpiration()>();
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = 0L;
v = virtualinvoke v.<org.apache.activemq.command.Message: long getTimestamp()>();
v = v cmp 0L;
if v <= 0 goto label;
v = v - v;
label:
v = v + v;
v = v cmp v;
if v <= 0 goto label;
v = v cmp 0L;
if v <= 0 goto label;
v = v cmp 0L;
if v <= 0 goto label;
virtualinvoke v.<org.apache.activemq.command.Message: void setExpiration(long)>(v);
label:
virtualinvoke v.<org.apache.activemq.command.Message: void setTimestamp(long)>(v);
v = <org.apache.activemq.broker.scheduler.SchedulerBroker: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.MessageId getMessageId()>();
v[0] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[1] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object[])>("Set message {} timestamp from {} to {}", v);
label:
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.wireformat.WireFormat wireFormat>;
virtualinvoke v.<org.apache.activemq.command.Message: void beforeMarshall(org.apache.activemq.wireformat.WireFormat)>(v);
v = new org.apache.activemq.broker.ProducerBrokerExchange;
specialinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void <init>()>();
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.ConnectionContext context>;
virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void setConnectionContext(org.apache.activemq.broker.ConnectionContext)>(v);
virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void setMutable(boolean)>(1);
v = new org.apache.activemq.state.ProducerState;
v = new org.apache.activemq.command.ProducerInfo;
specialinvoke v.<org.apache.activemq.command.ProducerInfo: void <init>()>();
specialinvoke v.<org.apache.activemq.state.ProducerState: void <init>(org.apache.activemq.command.ProducerInfo)>(v);
virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void setProducerState(org.apache.activemq.state.ProducerState)>(v);
specialinvoke v.<org.apache.activemq.broker.BrokerFilter: void send(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.scheduler.SchedulerBroker: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to send scheduled message {}", v, v);
label:
return;
catch java.lang.Exception from label to label with label;
}
protected synchronized org.apache.activemq.broker.scheduler.JobScheduler getInternalScheduler() throws java.lang.Exception
{
org.apache.activemq.broker.scheduler.SchedulerBroker v;
java.util.concurrent.atomic.AtomicBoolean v;
org.apache.activemq.broker.scheduler.JobScheduler v, v, v, v, v;
org.apache.activemq.broker.scheduler.JobSchedulerStore v, v;
boolean v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: java.util.concurrent.atomic.AtomicBoolean started>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicBoolean: boolean get()>();
if v == 0 goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler>;
if v != null goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobSchedulerStore store>;
if v == null goto label;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobSchedulerStore store>;
v = interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobSchedulerStore: org.apache.activemq.broker.scheduler.JobScheduler getJobScheduler(java.lang.String)>("JMS");
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler> = v;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler>;
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void addListener(org.apache.activemq.broker.scheduler.JobListener)>(v);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler>;
interfaceinvoke v.<org.apache.activemq.broker.scheduler.JobScheduler: void startDispatching()>();
label:
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.scheduler.JobScheduler scheduler>;
return v;
label:
return null;
}
protected void sendScheduledJob(org.apache.activemq.broker.ConnectionContext, org.apache.activemq.broker.scheduler.Job, org.apache.activemq.command.ActiveMQDestination) throws java.lang.Exception
{
java.lang.Throwable v;
org.apache.activemq.broker.scheduler.SchedulerBroker v;
byte[] v;
long v;
org.apache.activemq.broker.Broker v;
org.apache.activemq.broker.ConnectionContext v;
org.apache.activemq.state.ProducerState v;
java.lang.String v, v;
org.apache.activemq.broker.scheduler.Job v;
org.apache.activemq.util.ByteSequence v;
boolean v;
org.slf4j.Logger v;
org.apache.activemq.command.MessageId v;
org.apache.activemq.wireformat.WireFormat v;
java.lang.Exception v;
org.apache.activemq.command.ActiveMQDestination v, v;
org.apache.activemq.command.ProducerId v, v;
org.apache.activemq.util.LongSequenceGenerator v;
org.apache.activemq.command.ProducerInfo v;
java.lang.Object v;
org.apache.activemq.broker.ProducerBrokerExchange v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v := @parameter: org.apache.activemq.broker.ConnectionContext;
v := @parameter: org.apache.activemq.broker.scheduler.Job;
v := @parameter: org.apache.activemq.command.ActiveMQDestination;
v = new org.apache.activemq.util.ByteSequence;
v = interfaceinvoke v.<org.apache.activemq.broker.scheduler.Job: byte[] getPayload()>();
specialinvoke v.<org.apache.activemq.util.ByteSequence: void <init>(byte[])>(v);
label:
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.wireformat.WireFormat wireFormat>;
v = interfaceinvoke v.<org.apache.activemq.wireformat.WireFormat: java.lang.Object unmarshal(org.apache.activemq.util.ByteSequence)>(v);
virtualinvoke v.<org.apache.activemq.command.Message: void setOriginalTransactionId(org.apache.activemq.command.TransactionId)>(null);
virtualinvoke v.<org.apache.activemq.command.Message: void setPersistent(boolean)>(0);
virtualinvoke v.<org.apache.activemq.command.Message: void setType(java.lang.String)>("Advisory");
v = new org.apache.activemq.command.MessageId;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.command.ProducerId producerId>;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.LongSequenceGenerator messageIdGenerator>;
v = virtualinvoke v.<org.apache.activemq.util.LongSequenceGenerator: long getNextSequenceId()>();
specialinvoke v.<org.apache.activemq.command.MessageId: void <init>(org.apache.activemq.command.ProducerId,long)>(v, v);
virtualinvoke v.<org.apache.activemq.command.Message: void setMessageId(org.apache.activemq.command.MessageId)>(v);
v = virtualinvoke v.<org.apache.activemq.command.Message: org.apache.activemq.command.ActiveMQDestination getDestination()>();
virtualinvoke v.<org.apache.activemq.command.Message: void setOriginalDestination(org.apache.activemq.command.ActiveMQDestination)>(v);
virtualinvoke v.<org.apache.activemq.command.Message: void setDestination(org.apache.activemq.command.ActiveMQDestination)>(v);
virtualinvoke v.<org.apache.activemq.command.Message: void setResponseRequired(boolean)>(0);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.command.ProducerId producerId>;
virtualinvoke v.<org.apache.activemq.command.Message: void setProducerId(org.apache.activemq.command.ProducerId)>(v);
v = interfaceinvoke v.<org.apache.activemq.broker.scheduler.Job: java.lang.String getJobId()>();
virtualinvoke v.<org.apache.activemq.command.Message: void setProperty(java.lang.String,java.lang.Object)>("scheduledJobId", v);
v = virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: boolean isProducerFlowControl()>();
v = new org.apache.activemq.broker.ProducerBrokerExchange;
specialinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void <init>()>();
virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void setConnectionContext(org.apache.activemq.broker.ConnectionContext)>(v);
virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void setMutable(boolean)>(1);
v = new org.apache.activemq.state.ProducerState;
v = new org.apache.activemq.command.ProducerInfo;
specialinvoke v.<org.apache.activemq.command.ProducerInfo: void <init>()>();
specialinvoke v.<org.apache.activemq.state.ProducerState: void <init>(org.apache.activemq.command.ProducerInfo)>(v);
virtualinvoke v.<org.apache.activemq.broker.ProducerBrokerExchange: void setProducerState(org.apache.activemq.state.ProducerState)>(v);
label:
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setProducerFlowControl(boolean)>(0);
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.broker.Broker next>;
interfaceinvoke v.<org.apache.activemq.broker.Broker: void send(org.apache.activemq.broker.ProducerBrokerExchange,org.apache.activemq.command.Message)>(v, v);
label:
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setProducerFlowControl(boolean)>(v);
goto label;
label:
v := @caughtexception;
virtualinvoke v.<org.apache.activemq.broker.ConnectionContext: void setProducerFlowControl(boolean)>(v);
throw v;
label:
v := @caughtexception;
v = <org.apache.activemq.broker.scheduler.SchedulerBroker: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.apache.activemq.broker.scheduler.Job: java.lang.String getJobId()>();
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Failed to send scheduled message {}", v, v);
label:
return;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception from label to label with label;
}
public int getMaxRepeatAllowed()
{
int v;
org.apache.activemq.broker.scheduler.SchedulerBroker v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v = v.<org.apache.activemq.broker.scheduler.SchedulerBroker: int maxRepeatAllowed>;
return v;
}
public void setMaxRepeatAllowed(int)
{
int v;
org.apache.activemq.broker.scheduler.SchedulerBroker v;
v := @this: org.apache.activemq.broker.scheduler.SchedulerBroker;
v := @parameter: int;
v.<org.apache.activemq.broker.scheduler.SchedulerBroker: int maxRepeatAllowed> = v;
return;
}
static void <clinit>()
{
org.apache.activemq.util.IdGenerator v;
org.slf4j.Logger v;
org.apache.activemq.util.LongSequenceGenerator v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/activemq/broker/scheduler/SchedulerBroker;");
<org.apache.activemq.broker.scheduler.SchedulerBroker: org.slf4j.Logger LOG> = v;
v = new org.apache.activemq.util.IdGenerator;
specialinvoke v.<org.apache.activemq.util.IdGenerator: void <init>()>();
<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.IdGenerator ID_GENERATOR> = v;
v = new org.apache.activemq.util.LongSequenceGenerator;
specialinvoke v.<org.apache.activemq.util.LongSequenceGenerator: void <init>()>();
<org.apache.activemq.broker.scheduler.SchedulerBroker: org.apache.activemq.util.LongSequenceGenerator longGenerator> = v;
return;
}
}