package com.easyooo.framework.support.transaction; import java.util.Collection; /** * 发送缓冲器实现,委托依赖实际的发送器 * * @author Killer */ public class SimpleBufferedSender<T> implements RemoteSenderOrderly<T>{ private RemoteSender<T> delegate; private Object transactionSynchObjKey = new Object(); public SimpleBufferedSender(RemoteSender<T> delegate){ this.delegate = delegate; } @SuppressWarnings("unchecked") public boolean send(T msg) throws Exception { if (!TransactionResourceManager.hasResource(transactionSynchObjKey)) { TransactionResourceManager.bindResource(transactionSynchObjKey, new SimpleBufferedTransactionResource<T>(delegate)); } SimpleBufferedTransactionResource<T> buffer = (SimpleBufferedTransactionResource<T>) TransactionResourceManager .getResource(transactionSynchObjKey); buffer.send(msg); return true; } public Collection<T> getOriginalBufferList(){ if (TransactionResourceManager.hasResource(transactionSynchObjKey)) { SimpleBufferedTransactionResource<T> buffer = TransactionResourceManager .getResource(transactionSynchObjKey); return buffer.getOriginalBufferList(); } return null; } @Override public String getProviderInfo() { return delegate.getProviderInfo(); } }