public class org.apache.activemq.leveldb.SuspendCallSupport extends java.lang.Object
{
private final java.util.concurrent.locks.ReentrantReadWriteLock lock;
private java.util.concurrent.CountDownLatch resumeLatch;
private java.util.concurrent.CountDownLatch resumedLatch;
private volatile java.util.concurrent.atomic.AtomicInteger threads;
public java.util.concurrent.locks.ReentrantReadWriteLock lock()
{
org.apache.activemq.leveldb.SuspendCallSupport v;
java.util.concurrent.locks.ReentrantReadWriteLock v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v = v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.locks.ReentrantReadWriteLock lock>;
return v;
}
public java.util.concurrent.CountDownLatch resumeLatch()
{
java.util.concurrent.CountDownLatch v;
org.apache.activemq.leveldb.SuspendCallSupport v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v = v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumeLatch>;
return v;
}
public void resumeLatch_$eq(java.util.concurrent.CountDownLatch)
{
java.util.concurrent.CountDownLatch v;
org.apache.activemq.leveldb.SuspendCallSupport v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v := @parameter: java.util.concurrent.CountDownLatch;
v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumeLatch> = v;
return;
}
public java.util.concurrent.CountDownLatch resumedLatch()
{
java.util.concurrent.CountDownLatch v;
org.apache.activemq.leveldb.SuspendCallSupport v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v = v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumedLatch>;
return v;
}
public void resumedLatch_$eq(java.util.concurrent.CountDownLatch)
{
java.util.concurrent.CountDownLatch v;
org.apache.activemq.leveldb.SuspendCallSupport v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v := @parameter: java.util.concurrent.CountDownLatch;
v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumedLatch> = v;
return;
}
public java.util.concurrent.atomic.AtomicInteger threads()
{
org.apache.activemq.leveldb.SuspendCallSupport v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v = v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.atomic.AtomicInteger threads>;
return v;
}
public void threads_$eq(java.util.concurrent.atomic.AtomicInteger)
{
org.apache.activemq.leveldb.SuspendCallSupport v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v := @parameter: java.util.concurrent.atomic.AtomicInteger;
v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.atomic.AtomicInteger threads> = v;
return;
}
public synchronized void suspend()
{
java.util.concurrent.CountDownLatch v, v, v;
org.apache.activemq.leveldb.SuspendCallSupport v;
org.apache.activemq.leveldb.SuspendCallSupport$$anon$2 v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: void resumeLatch_$eq(java.util.concurrent.CountDownLatch)>(v);
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: void resumedLatch_$eq(java.util.concurrent.CountDownLatch)>(v);
v = new org.apache.activemq.leveldb.SuspendCallSupport$$anon$2;
specialinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport$$anon$2: void <init>(org.apache.activemq.leveldb.SuspendCallSupport,java.util.concurrent.CountDownLatch)>(v, v);
virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport$$anon$2: void start()>();
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
return;
}
public synchronized void resume()
{
java.util.concurrent.CountDownLatch v, v, v;
org.apache.activemq.leveldb.SuspendCallSupport v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumedLatch()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumeLatch()>();
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.CountDownLatch resumedLatch()>();
virtualinvoke v.<java.util.concurrent.CountDownLatch: void await()>();
virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: void resumeLatch_$eq(java.util.concurrent.CountDownLatch)>(null);
virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: void resumedLatch_$eq(java.util.concurrent.CountDownLatch)>(null);
label:
return;
}
public java.lang.Object call(scala.Function)
{
java.lang.Throwable v;
org.apache.activemq.leveldb.SuspendCallSupport v;
scala.Function v;
java.util.concurrent.locks.ReentrantReadWriteLock v, v, v;
java.util.concurrent.atomic.AtomicInteger v, v, v;
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock v, v, v;
java.lang.Object v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
v := @parameter: scala.Function;
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.atomic.AtomicInteger threads()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int incrementAndGet()>();
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.locks.ReentrantReadWriteLock lock()>();
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void lock()>();
label:
v = interfaceinvoke v.<scala.Function0: java.lang.Object apply()>();
label:
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.atomic.AtomicInteger threads()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.locks.ReentrantReadWriteLock lock()>();
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
return v;
label:
v := @caughtexception;
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.atomic.AtomicInteger threads()>();
virtualinvoke v.<java.util.concurrent.atomic.AtomicInteger: int decrementAndGet()>();
v = virtualinvoke v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.locks.ReentrantReadWriteLock lock()>();
v = virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()>();
virtualinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock: void unlock()>();
throw v;
catch java.lang.Throwable from label to label with label;
}
public void <init>()
{
org.apache.activemq.leveldb.SuspendCallSupport v;
java.util.concurrent.locks.ReentrantReadWriteLock v;
java.util.concurrent.atomic.AtomicInteger v;
v := @this: org.apache.activemq.leveldb.SuspendCallSupport;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.concurrent.locks.ReentrantReadWriteLock;
specialinvoke v.<java.util.concurrent.locks.ReentrantReadWriteLock: void <init>()>();
v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.locks.ReentrantReadWriteLock lock> = v;
v = new java.util.concurrent.atomic.AtomicInteger;
specialinvoke v.<java.util.concurrent.atomic.AtomicInteger: void <init>()>();
v.<org.apache.activemq.leveldb.SuspendCallSupport: java.util.concurrent.atomic.AtomicInteger threads> = v;
return;
}
}