package com.thimbleware.jmemcached.protocol.text; import java.nio.charset.Charset; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.group.DefaultChannelGroup; import com.thimbleware.jmemcached.Cache; import com.thimbleware.jmemcached.protocol.MemcachedCommandHandler; import com.thimbleware.jmemcached.protocol.SessionStatus; /** */ public final class MemcachedPipelineFactory implements ChannelPipelineFactory { public static final Charset USASCII = Charset.forName("US-ASCII"); private Cache cache; private String version; private boolean verbose; private int idleTime; private int frameSize; private DefaultChannelGroup channelGroup; private final MemcachedResponseEncoder memcachedResponseEncoder = new MemcachedResponseEncoder(); private final MemcachedCommandHandler memcachedCommandHandler; public MemcachedPipelineFactory(Cache cache, String version, boolean verbose, int idleTime, int frameSize, DefaultChannelGroup channelGroup) { this.cache = cache; this.version = version; this.verbose = verbose; this.idleTime = idleTime; this.frameSize = frameSize; this.channelGroup = channelGroup; memcachedCommandHandler = new MemcachedCommandHandler(this.cache, this.version, this.verbose, this.idleTime, this.channelGroup); } public final ChannelPipeline getPipeline() throws Exception { SessionStatus status = new SessionStatus().ready(); return Channels.pipeline(new MemcachedFrameDecoder(status, frameSize), new MemcachedCommandDecoder(status), memcachedCommandHandler, memcachedResponseEncoder); } }