net.spy.memcached
Class DefaultConnectionFactory

java.lang.Object
  extended by net.spy.SpyObject
      extended by net.spy.memcached.DefaultConnectionFactory
All Implemented Interfaces:
ConnectionFactory
Direct Known Subclasses:
BinaryConnectionFactory, KetamaConnectionFactory

public class DefaultConnectionFactory
extends net.spy.SpyObject
implements ConnectionFactory

Default implementation of ConnectionFactory.

This implementation creates connections where each server worker queue is implemented using an ArrayBlockingQueue. The read queue is automatically configured to be 10% larger than the specified op queue. The write queue is and input queues are the same size.


Field Summary
static int DEFAULT_OP_QUEUE_LEN
          Maximum length of the operation queue returned by this connection factory.
static long DEFAULT_OPERATION_TIMEOUT
          Default operation timeout in milliseconds.
static int DEFAULT_READ_BUFFER_SIZE
          The read buffer size for each server connection from this factory.
 
Constructor Summary
DefaultConnectionFactory()
          Create a DefaultConnectionFactory with the default parameters.
DefaultConnectionFactory(int qLen, int bufSize)
          Create a DefaultConnectionFactory with the given maximum operation queue length, and the given read buffer size.
DefaultConnectionFactory(int qLen, int bufSize, HashAlgorithm hash)
          Construct a DefaultConnectionFactory with the given parameters.
 
Method Summary
 MemcachedConnection createConnection(java.util.List<java.net.InetSocketAddress> addrs)
          Create a MemcachedConnection for the given SocketAddresses.
 NodeLocator createLocator(java.util.List<MemcachedNode> nodes)
          Create a NodeLocator instance for the given list of nodes.
 MemcachedNode createMemcachedNode(java.net.SocketAddress sa, java.nio.channels.SocketChannel c, int bufSize)
          Create a new memcached node.
 java.util.concurrent.BlockingQueue<Operation> createOperationQueue()
          Create a BlockingQueue for operations for a connection.
 java.util.concurrent.BlockingQueue<Operation> createReadOperationQueue()
          Create a BlockingQueue for the operations currently expecting to read responses from memcached.
 java.util.concurrent.BlockingQueue<Operation> createWriteOperationQueue()
          Create a BlockingQueue for the operations currently expecting to write requests to memcached.
 HashAlgorithm getHashAlg()
          Get the hash algorithm set at construct time.
 OperationFactory getOperationFactory()
          Get the operation factory for connections built by this connection factory.
 long getOperationTimeout()
          Get the operation timeout used by this connection.
 int getOpQueueLen()
          Get the op queue length set at construct time.
 int getReadBufSize()
          Get the read buffer size set at construct time.
 boolean isDaemon()
          If true, the IO thread should be a daemon thread.
 
Methods inherited from class net.spy.SpyObject
getLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_OP_QUEUE_LEN

public static final int DEFAULT_OP_QUEUE_LEN
Maximum length of the operation queue returned by this connection factory.

See Also:
Constant Field Values

DEFAULT_READ_BUFFER_SIZE

public static final int DEFAULT_READ_BUFFER_SIZE
The read buffer size for each server connection from this factory.

See Also:
Constant Field Values

DEFAULT_OPERATION_TIMEOUT

public static final long DEFAULT_OPERATION_TIMEOUT
Default operation timeout in milliseconds.

See Also:
Constant Field Values
Constructor Detail

DefaultConnectionFactory

public DefaultConnectionFactory(int qLen,
                                int bufSize,
                                HashAlgorithm hash)
Construct a DefaultConnectionFactory with the given parameters.

Parameters:
hashAlgorithm - the algorithm to use for hashing
bufSize - the buffer size
qLen - the queue length.

DefaultConnectionFactory

public DefaultConnectionFactory(int qLen,
                                int bufSize)
Create a DefaultConnectionFactory with the given maximum operation queue length, and the given read buffer size.


DefaultConnectionFactory

public DefaultConnectionFactory()
Create a DefaultConnectionFactory with the default parameters.

Method Detail

createMemcachedNode

public MemcachedNode createMemcachedNode(java.net.SocketAddress sa,
                                         java.nio.channels.SocketChannel c,
                                         int bufSize)
Description copied from interface: ConnectionFactory
Create a new memcached node.

Specified by:
createMemcachedNode in interface ConnectionFactory

createConnection

public MemcachedConnection createConnection(java.util.List<java.net.InetSocketAddress> addrs)
                                     throws java.io.IOException
Description copied from interface: ConnectionFactory
Create a MemcachedConnection for the given SocketAddresses.

Specified by:
createConnection in interface ConnectionFactory
Parameters:
addrs - the addresses of the memcached servers
Returns:
a new MemcachedConnection connected to those addresses
Throws:
java.io.IOException - for problems initializing the memcached connections

createOperationQueue

public java.util.concurrent.BlockingQueue<Operation> createOperationQueue()
Description copied from interface: ConnectionFactory
Create a BlockingQueue for operations for a connection.

Specified by:
createOperationQueue in interface ConnectionFactory

createReadOperationQueue

public java.util.concurrent.BlockingQueue<Operation> createReadOperationQueue()
Description copied from interface: ConnectionFactory
Create a BlockingQueue for the operations currently expecting to read responses from memcached.

Specified by:
createReadOperationQueue in interface ConnectionFactory

createWriteOperationQueue

public java.util.concurrent.BlockingQueue<Operation> createWriteOperationQueue()
Description copied from interface: ConnectionFactory
Create a BlockingQueue for the operations currently expecting to write requests to memcached.

Specified by:
createWriteOperationQueue in interface ConnectionFactory

createLocator

public NodeLocator createLocator(java.util.List<MemcachedNode> nodes)
Description copied from interface: ConnectionFactory
Create a NodeLocator instance for the given list of nodes.

Specified by:
createLocator in interface ConnectionFactory

getOpQueueLen

public int getOpQueueLen()
Get the op queue length set at construct time.


getReadBufSize

public int getReadBufSize()
Get the read buffer size set at construct time.


getHashAlg

public HashAlgorithm getHashAlg()
Get the hash algorithm set at construct time.


getOperationFactory

public OperationFactory getOperationFactory()
Description copied from interface: ConnectionFactory
Get the operation factory for connections built by this connection factory.

Specified by:
getOperationFactory in interface ConnectionFactory

getOperationTimeout

public long getOperationTimeout()
Description copied from interface: ConnectionFactory
Get the operation timeout used by this connection.

Specified by:
getOperationTimeout in interface ConnectionFactory

isDaemon

public boolean isDaemon()
Description copied from interface: ConnectionFactory
If true, the IO thread should be a daemon thread.

Specified by:
isDaemon in interface ConnectionFactory