package org.zstack.core.db; import org.springframework.transaction.support.TransactionSynchronization; import org.zstack.core.db.TransactionalCallback.Operation; import org.zstack.core.thread.AsyncThread; public class TransactionSynchronizationAsyncImpl implements TransactionSynchronization { private final Class<?>[] clazzs; private final TransactionalCallback callback; private final Operation op; TransactionSynchronizationAsyncImpl(TransactionalCallback cb, Operation op, Class<?>...clazzs) { this.clazzs = clazzs; this.callback = cb; this.op = op; } @Override @AsyncThread public void suspend() { callback.suspend(clazzs); } @Override @AsyncThread public void resume() { callback.resume(clazzs); } @Override @AsyncThread public void flush() { callback.flush(clazzs); } @Override @AsyncThread public void beforeCommit(boolean readOnly) { callback.beforeCommit(op, readOnly, clazzs); } @Override @AsyncThread public void beforeCompletion() { callback.beforeCompletion(op, clazzs); } @Override @AsyncThread public void afterCommit() { callback.afterCommit(op, clazzs); } @Override @AsyncThread public void afterCompletion(int status) { callback.afterCompletion(op, status, clazzs); } }