net.spy.memcached.ConnectionFactory Maven / Gradle / Ivy
The newest version!
/*
* arcus-java-client : Arcus Java client
* Copyright 2010-2014 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 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.Map;
import java.util.concurrent.BlockingQueue;
import net.spy.memcached.auth.AuthDescriptor;
import net.spy.memcached.ops.APIType;
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 name client name
* @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(String name, List addrs)
throws IOException;
/**
* Create a new memcached node.
*/
MemcachedNode createMemcachedNode(String name,
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();
/**
* 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