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 class
Optimizer.BinaryGetQCollector
private static class
Optimizer.BinarySetQCollector
(package private) static interface
Optimizer.CommandCollector
(package private) static class
Optimizer.KeyStringCollector
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.ThreadLocal<Optimizer.BinaryGetQCollector>
BIN_GET_CMD_COLLECTOR_THREAD_LOCAL
private static java.lang.ThreadLocal<Optimizer.BinarySetQCollector>
BIN_SET_CMD_COLLECTOR_THREAD_LOCAL
static int
DEFAULT_MERGE_FACTOR
private static org.slf4j.Logger
log
private static int
MARGIN
private int
mergeFactor
private boolean
optimiezeGet
private boolean
optimiezeMergeBuffer
private boolean
optimiezeSet
private Protocol
protocol
private static java.lang.ThreadLocal<Optimizer.KeyStringCollector>
TEXT_GET_CMD_COLLECTOR_THREAD_LOCAL
private java.lang.ThreadLocal<java.util.List<Command>>
threadLocal
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private Optimizer.CommandCollector
createGetCommandCollector()
java.util.List<Command>
getLocalList()
int
getMergeFactor()
boolean
isOptimizeGet()
boolean
isOptimizeMergeBuffer()
private Command
mergeBuffer(Command firstCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
private Command
mergeGetCommands(Command currentCmd, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, CommandType expectedCommandType)
private Command
mergeSetCommands(Command currentCmd, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, CommandType expectedCommandType, int sendBufferSize)
private Command
newMergedCommand(java.util.Map<java.lang.Object,Command> mergeCommands, int mergeCount, Optimizer.CommandCollector commandCollector, CommandType commandType)
Command
optimiezeGet(java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, Command optimiezeCommand)
Merge get operation to multi-get operationCommand
optimiezeMergeBuffer(Command optimiezeCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
merge buffers to fit socket's send buffer sizeCommand
optimiezeSet(java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, Command optimiezeCommand, int sendBufferSize)
Command
optimize(Command currentCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
void
setBufferAllocator(BufferAllocator bufferAllocator)
void
setMergeFactor(int mergeFactor)
void
setOptimizeGet(boolean optimiezeGet)
void
setOptimizeMergeBuffer(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:
setBufferAllocator
in interfaceMemcachedOptimizer
-
getMergeFactor
public int getMergeFactor()
- Specified by:
getMergeFactor
in interfaceOptimizerMBean
-
setMergeFactor
public void setMergeFactor(int mergeFactor)
- Specified by:
setMergeFactor
in interfaceOptimizerMBean
-
isOptimizeGet
public boolean isOptimizeGet()
- Specified by:
isOptimizeGet
in interfaceOptimizerMBean
-
setOptimizeGet
public void setOptimizeGet(boolean optimiezeGet)
- Specified by:
setOptimizeGet
in interfaceOptimizerMBean
-
isOptimizeMergeBuffer
public boolean isOptimizeMergeBuffer()
- Specified by:
isOptimizeMergeBuffer
in interfaceOptimizerMBean
-
setOptimizeMergeBuffer
public void setOptimizeMergeBuffer(boolean optimiezeMergeBuffer)
- Specified by:
setOptimizeMergeBuffer
in interfaceOptimizerMBean
-
optimize
public Command optimize(Command currentCommand, java.util.Queue writeQueue, java.util.Queue<Command> executingCmds, int sendBufferSize)
- Specified by:
optimize
in 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)
-
-