/**
*
*/
package io.nettythrift.core;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
/**
* @author HouKx
*/
public abstract class ThriftMessageWrapper {
private ThriftMessageWrapper successor;
public ThriftMessageWrapper() {
}
public ThriftMessageWrapper(ThriftMessageWrapper successor) {
this.successor = successor;
}
public ThriftMessageWrapper getSuccessor() {
return successor;
}
public void setSuccessor(ThriftMessageWrapper successor) {
this.successor = successor;
}
public void beforeMessageWrite(ChannelHandlerContext ctx, ThriftMessage msg) {
}
public Object wrapMessage(ChannelHandlerContext ctx, ThriftMessage msg) {
Object resp = wrapMessageInner(ctx, msg);
if (successor != null) {
resp = successor.wrapMessage(ctx, msg);
}
return resp;
}
protected Object wrapMessageInner(ChannelHandlerContext ctx, ThriftMessage msg) {
return msg.getContent();
}
public void writeMessage(ChannelHandlerContext ctx, Object wrappedMsg) {
if (successor == null) {
writeMessageInner(ctx, wrappedMsg);
} else {
successor.writeMessage(ctx, wrappedMsg);
}
}
protected void writeMessageInner(ChannelHandlerContext ctx, Object wrappedMsg) {
ctx.writeAndFlush(wrappedMsg).addListener(ChannelFutureListener.CLOSE_ON_FAILURE);
}
}