Package net.rubyeye.xmemcached.impl
Class Optimizer
- java.lang.Object
-
- net.rubyeye.xmemcached.impl.Optimizer
-
- All Implemented Interfaces:
OptimizerMBean,MemcachedOptimizer
public class Optimizer extends java.lang.Object implements OptimizerMBean, MemcachedOptimizer
Memcached command optimizer,merge single-get comands to multi-get command, merge ByteBuffers to fit the socket's sendBufferSize etc.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classOptimizer.BinaryGetQCollectorprivate static classOptimizer.BinarySetQCollector(package private) static interfaceOptimizer.CommandCollector(package private) static classOptimizer.KeyStringCollector
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.ThreadLocal<Optimizer.BinaryGetQCollector>BIN_GET_CMD_COLLECTOR_THREAD_LOCALprivate static java.lang.ThreadLocal<Optimizer.BinarySetQCollector>BIN_SET_CMD_COLLECTOR_THREAD_LOCALstatic intDEFAULT_MERGE_FACTORprivate static org.slf4j.Loggerlogprivate static intMARGINprivate intmergeFactorprivate booleanoptimiezeGetprivate booleanoptimiezeMergeBufferprivate booleanoptimiezeSetprivate Protocolprotocolprivate static java.lang.ThreadLocal<Optimizer.KeyStringCollector>TEXT_GET_CMD_COLLECTOR_THREAD_LOCALprivate java.lang.ThreadLocal<java.util.List<Command>>threadLocal
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private Optimizer.CommandCollectorcreateGetCommandCollector()java.util.List<Command>getLocalList()intgetMergeFactor()booleanisOptimizeGet()booleanisOptimizeMergeBuffer()private CommandmergeBuffer(Command firstCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)private CommandmergeGetCommands(Command currentCmd, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, CommandType expectedCommandType)private CommandmergeSetCommands(Command currentCmd, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, CommandType expectedCommandType, int sendBufferSize)private CommandnewMergedCommand(java.util.Map<java.lang.Object,Command> mergeCommands, int mergeCount, Optimizer.CommandCollector commandCollector, CommandType commandType)CommandoptimiezeGet(java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, Command optimiezeCommand)Merge get operation to multi-get operationCommandoptimiezeMergeBuffer(Command optimiezeCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)merge buffers to fit socket's send buffer sizeCommandoptimiezeSet(java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, Command optimiezeCommand, int sendBufferSize)Commandoptimize(Command currentCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)voidsetBufferAllocator(BufferAllocator bufferAllocator)voidsetMergeFactor(int mergeFactor)voidsetOptimizeGet(boolean optimiezeGet)voidsetOptimizeMergeBuffer(boolean optimiezeMergeBuffer)
-
-
-
Field Detail
-
MARGIN
private static final int MARGIN
- See Also:
- Constant Field Values
-
DEFAULT_MERGE_FACTOR
public static final int DEFAULT_MERGE_FACTOR
- See Also:
- Constant Field Values
-
mergeFactor
private int mergeFactor
-
optimiezeGet
private boolean optimiezeGet
-
optimiezeSet
private final boolean optimiezeSet
- See Also:
- Constant Field Values
-
optimiezeMergeBuffer
private boolean optimiezeMergeBuffer
-
log
private static final org.slf4j.Logger log
-
protocol
private Protocol protocol
-
threadLocal
private final java.lang.ThreadLocal<java.util.List<Command>> threadLocal
-
BIN_SET_CMD_COLLECTOR_THREAD_LOCAL
private static final java.lang.ThreadLocal<Optimizer.BinarySetQCollector> BIN_SET_CMD_COLLECTOR_THREAD_LOCAL
-
TEXT_GET_CMD_COLLECTOR_THREAD_LOCAL
private static java.lang.ThreadLocal<Optimizer.KeyStringCollector> TEXT_GET_CMD_COLLECTOR_THREAD_LOCAL
-
BIN_GET_CMD_COLLECTOR_THREAD_LOCAL
private static java.lang.ThreadLocal<Optimizer.BinaryGetQCollector> BIN_GET_CMD_COLLECTOR_THREAD_LOCAL
-
-
Constructor Detail
-
Optimizer
public Optimizer(Protocol protocol)
-
-
Method Detail
-
setBufferAllocator
public void setBufferAllocator(BufferAllocator bufferAllocator)
- Specified by:
setBufferAllocatorin interfaceMemcachedOptimizer
-
getMergeFactor
public int getMergeFactor()
- Specified by:
getMergeFactorin interfaceOptimizerMBean
-
setMergeFactor
public void setMergeFactor(int mergeFactor)
- Specified by:
setMergeFactorin interfaceOptimizerMBean
-
isOptimizeGet
public boolean isOptimizeGet()
- Specified by:
isOptimizeGetin interfaceOptimizerMBean
-
setOptimizeGet
public void setOptimizeGet(boolean optimiezeGet)
- Specified by:
setOptimizeGetin interfaceOptimizerMBean
-
isOptimizeMergeBuffer
public boolean isOptimizeMergeBuffer()
- Specified by:
isOptimizeMergeBufferin interfaceOptimizerMBean
-
setOptimizeMergeBuffer
public void setOptimizeMergeBuffer(boolean optimiezeMergeBuffer)
- Specified by:
setOptimizeMergeBufferin interfaceOptimizerMBean
-
optimize
public Command optimize(Command currentCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
- Specified by:
optimizein interfaceMemcachedOptimizer
-
optimiezeMergeBuffer
public final Command optimiezeMergeBuffer(Command optimiezeCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
merge buffers to fit socket's send buffer size- Parameters:
currentCommand-- Returns:
- Throws:
java.lang.InterruptedException
-
optimiezeGet
public final Command optimiezeGet(java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, Command optimiezeCommand)
Merge get operation to multi-get operation- Parameters:
currentCmd-mergeCommands-- Returns:
- Throws:
java.lang.InterruptedException
-
optimiezeSet
public final Command optimiezeSet(java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, Command optimiezeCommand, int sendBufferSize)
-
mergeBuffer
private final Command mergeBuffer(Command firstCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
-
getLocalList
public final java.util.List<Command> getLocalList()
-
mergeGetCommands
private final Command mergeGetCommands(Command currentCmd, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, CommandType expectedCommandType)
-
mergeSetCommands
private final Command mergeSetCommands(Command currentCmd, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, CommandType expectedCommandType, int sendBufferSize)
-
createGetCommandCollector
private Optimizer.CommandCollector createGetCommandCollector()
-
newMergedCommand
private Command newMergedCommand(java.util.Map<java.lang.Object,Command> mergeCommands, int mergeCount, Optimizer.CommandCollector commandCollector, CommandType commandType)
-
-