/*
* (C) 2007-2012 Alibaba Group Holding Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Authors:
* wuhua <wq163@163.com> , boyan <killme2008@gmail.com>
*/
package com.taobao.metamorphosis.server;
import javax.transaction.xa.XAException;
import com.taobao.gecko.core.command.ResponseCommand;
import com.taobao.metamorphosis.network.GetCommand;
import com.taobao.metamorphosis.network.OffsetCommand;
import com.taobao.metamorphosis.network.PutCommand;
import com.taobao.metamorphosis.network.QuitCommand;
import com.taobao.metamorphosis.network.StatsCommand;
import com.taobao.metamorphosis.network.VersionCommand;
import com.taobao.metamorphosis.server.exception.MetamorphosisException;
import com.taobao.metamorphosis.server.network.PutCallback;
import com.taobao.metamorphosis.server.network.SessionContext;
import com.taobao.metamorphosis.server.transaction.Transaction;
import com.taobao.metamorphosis.transaction.TransactionId;
import com.taobao.metamorphosis.transaction.XATransactionId;
/**
* Processor������ʵ�֣��ɼ̳в��Զ���ʵ��
*
* @author boyan
*
*/
public class CommandProcessorFilter implements CommandProcessor {
private final CommandProcessor next;
public CommandProcessorFilter(final CommandProcessor next) {
super();
this.next = next;
}
public CommandProcessor getNext() {
return this.next;
}
@Override
public void init() {
this.next.init();
}
@Override
public void dispose() {
this.next.dispose();
}
@Override
public void processPutCommand(final PutCommand request, final SessionContext sessionContext, final PutCallback cb)
throws Exception {
this.next.processPutCommand(request, sessionContext, cb);
}
@Override
public ResponseCommand processGetCommand(final GetCommand request, final SessionContext ctx) {
return this.next.processGetCommand(request, ctx);
}
@Override
public ResponseCommand processOffsetCommand(final OffsetCommand request, final SessionContext ctx) {
return this.next.processOffsetCommand(request, ctx);
}
@Override
public void processQuitCommand(final QuitCommand request, final SessionContext ctx) {
this.next.processQuitCommand(request, ctx);
}
@Override
public ResponseCommand processVesionCommand(final VersionCommand request, final SessionContext ctx) {
return this.next.processVesionCommand(request, ctx);
}
@Override
public ResponseCommand processStatCommand(final StatsCommand request, final SessionContext ctx) {
return this.next.processStatCommand(request, ctx);
}
@Override
public void removeTransaction(final XATransactionId xid) {
this.next.removeTransaction(xid);
}
@Override
public Transaction getTransaction(final SessionContext context, final TransactionId xid)
throws MetamorphosisException, XAException {
return this.next.getTransaction(context, xid);
}
@Override
public void forgetTransaction(final SessionContext context, final TransactionId xid) throws Exception {
this.next.forgetTransaction(context, xid);
}
@Override
public void rollbackTransaction(final SessionContext context, final TransactionId xid) throws Exception {
this.next.rollbackTransaction(context, xid);
}
@Override
public void commitTransaction(final SessionContext context, final TransactionId xid, final boolean onePhase)
throws Exception {
this.next.commitTransaction(context, xid, onePhase);
}
@Override
public int prepareTransaction(final SessionContext context, final TransactionId xid) throws Exception {
return this.next.prepareTransaction(context, xid);
}
@Override
public void beginTransaction(final SessionContext context, final TransactionId xid, final int seconds)
throws Exception {
this.next.beginTransaction(context, xid, seconds);
}
@Override
public TransactionId[] getPreparedTransactions(final SessionContext context, final String uniqueQualifier)
throws Exception {
return this.next.getPreparedTransactions(context, uniqueQualifier);
}
@Override
public ResponseCommand processGetCommand(final GetCommand request, final SessionContext ctx, final boolean zeroCopy) {
return this.next.processGetCommand(request, ctx, zeroCopy);
}
}