All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.spy.memcached.ConnectionFactory Maven / Gradle / Ivy

Go to download

Amazon ElastiCache Cluster Client is an enhanced Java library to connect to ElastiCache clusters. This client library has been built upon Spymemcached and is released under the Amazon Software License.

There is a newer version: 1.2.2
Show newest version
/**
 * Copyright (C) 2006-2009 Dustin Sallings
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALING
 * IN THE SOFTWARE.
 * 
 * 
 * Portions Copyright (C) 2012-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Amazon Software License (the "License"). You may not use this 
 * file except in compliance with the License. A copy of the License is located at
 *  http://aws.amazon.com/asl/
 * or in the "license" file accompanying this file. This file is distributed on 
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or
 * implied. See the License for the specific language governing permissions and 
 * limitations under the License.
 */

package net.spy.memcached;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.channels.SocketChannel;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.BlockingQueue;

import net.spy.memcached.auth.AuthDescriptor;
import net.spy.memcached.ops.Operation;
import net.spy.memcached.transcoders.Transcoder;

/**
 * Factory for creating instances of MemcachedConnection. This is used to
 * provide more fine-grained configuration of connections.
 */
public interface ConnectionFactory {

  /**
   * Create a MemcachedConnection for the given SocketAddresses.
   *
   * @param addrs the addresses of the memcached servers
   * @return a new MemcachedConnection connected to those addresses
   * @throws IOException for problems initializing the memcached connections
   */
  MemcachedConnection createConnection(List addrs)
    throws IOException;

  /**
   * Create a new memcached node.
   */
  MemcachedNode createMemcachedNode(SocketAddress sa, SocketChannel c,
      int bufSize);

  /**
   * Create a BlockingQueue for operations for a connection.
   */
  BlockingQueue createOperationQueue();

  /**
   * Create a BlockingQueue for the operations currently expecting to read
   * responses from memcached.
   */
  BlockingQueue createReadOperationQueue();

  /**
   * Create a BlockingQueue for the operations currently expecting to write
   * requests to memcached.
   */
  BlockingQueue createWriteOperationQueue();

  /**
   * Get the maximum amount of time (in milliseconds) a client is willing to
   * wait to add a new item to a queue.
   */
  long getOpQueueMaxBlockTime();

  /**
   * Create a NodeLocator instance for the given list of nodes.
   */
  NodeLocator createLocator(List nodes);

  /**
   * Get the operation factory for connections built by this connection factory.
   */
  OperationFactory getOperationFactory();

  /**
   * The mode in which the client is operating.
   * @return the clientMode.
   */
  ClientMode getClientMode();
  
  /**
   * The interval used for periodic polling of configuration. 
   * @return the interval in milliseconds
   */
  long getDynamicModePollingInterval();
  
  /**
   * Get the operation timeout used by this connection.
   */
  long getOperationTimeout();

  /**
   * If true, the IO thread should be a daemon thread.
   */
  boolean isDaemon();

  /**
   * If true, the nagle algorithm will be used on connected sockets.
   *
   * 

* See {@link java.net.Socket#setTcpNoDelay(boolean)} for more information. *

*/ boolean useNagleAlgorithm(); /** * Observers that should be established at the time of connection * instantiation. * * These observers will see the first connection established. */ Collection getInitialObservers(); /** * Get the default failure mode for the underlying connection. */ FailureMode getFailureMode(); /** * Get the default transcoder to be used in connections created by this * factory. */ Transcoder getDefaultTranscoder(); /** * If true, low-level optimization is in effect. */ boolean shouldOptimize(); /* * Get the read buffer size set at construct time. */ int getReadBufSize(); /** * Get the hash algorithm to be used. */ HashAlgorithm getHashAlg(); /** * Maximum number of milliseconds to wait between reconnect attempts. */ long getMaxReconnectDelay(); /** * Authenticate connections using the given auth descriptor. * * @return null if no authentication should take place */ AuthDescriptor getAuthDescriptor(); /** * Maximum number of timeout exception for shutdown connection. */ int getTimeoutExceptionThreshold(); }