package org.rzo.yajsw.srvmgr.hub;
import static org.jboss.netty.channel.Channels.pipeline;
import org.rzo.netty.ahessian.rpc.message.HessianRPCCallDecoder;
import org.rzo.netty.ahessian.rpc.message.HessianRPCReplyEncoder;
import org.rzo.netty.ahessian.rpc.message.OutputProducer;
import org.rzo.netty.ahessian.rpc.server.HessianRPCServiceHandler;
import org.rzo.netty.ahessian.auth.EncryptedAuthToken;
import org.rzo.netty.ahessian.auth.ServerAuthFilter;
import org.rzo.netty.ahessian.io.InputStreamDecoder;
import org.rzo.netty.ahessian.io.OutputStreamEncoder;
import org.rzo.netty.ahessian.io.PushInputStreamConsumer;
import org.rzo.netty.ahessian.log.OutLogger;
import java.util.concurrent.Executor;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.handler.ipfilter.IpFilterRuleHandler;
import org.jboss.netty.handler.ipfilter.IpFilterRuleList;
import org.rzo.netty.ahessian.rpc.server.HessianSkeleton;
public class RPCServerPipelineFactory implements ChannelPipelineFactory
{
Executor _executor;
HessianRPCServiceHandler _handler;
String _acl = null;
RPCServerPipelineFactory(Executor executor, HessianRPCServiceHandler handler, String acl)
{
_executor = executor;
_handler = handler;
_acl = acl;
}
public ChannelPipeline getPipeline() throws Exception
{
ChannelPipeline pipeline = pipeline(); // Note the static import.
if (_acl != null)
{
pipeline.addFirst("firewall", new IpFilterRuleHandler(new IpFilterRuleList(_acl)));
}
pipeline.addLast("logger",new OutLogger("server"));
pipeline.addLast("inputStream", new InputStreamDecoder());
pipeline.addLast("outputStream", new OutputStreamEncoder());
pipeline.addLast("callDecoder", new PushInputStreamConsumer(new HessianRPCCallDecoder(), _executor));
pipeline.addLast("replyEncoder", new HessianRPCReplyEncoder());
pipeline.addLast("outputProducer", new OutputProducer(_executor));
pipeline.addLast("hessianRPCServer", _handler);
//bootstrap.getPipeline().addLast("logger4",new OutLogger("4"));
return pipeline;
}
}