/* * Copyright 2010 Ning, Inc. * * Ning licenses this file to you 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 com.ning.http.client.providers.netty; import com.ning.http.client.AsyncHttpProviderConfig; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** * This class can be used to pass Netty's internal configuration options. See Netty documentation for more information. */ public class NettyAsyncHttpProviderConfig implements AsyncHttpProviderConfig<String, Object> { /** * Use Netty's blocking IO stategy. */ public final static String USE_BLOCKING_IO = "useBlockingIO"; /** * Use direct {@link java.nio.ByteBuffer} */ public final static String USE_DIRECT_BYTEBUFFER = "bufferFactory"; /** * Execute the connect operation asynchronously. */ public final static String EXECUTE_ASYNC_CONNECT = "asyncConnect"; /** * Allow nested request from any {@link com.ning.http.client.AsyncHandler} */ public final static String DISABLE_NESTED_REQUEST = "disableNestedRequest"; /** * Allow configuring the Netty's boss executor service. */ public final static String BOSS_EXECUTOR_SERVICE = "bossExecutorService"; /** * See {@link java.net.Socket#setReuseAddress(boolean)} */ public final static String REUSE_ADDRESS = "reuseAddress"; private final ConcurrentHashMap<String, Object> properties = new ConcurrentHashMap<String, Object>(); public NettyAsyncHttpProviderConfig() { properties.put(REUSE_ADDRESS, "false"); } /** * Add a property that will be used when the AsyncHttpClient initialize its {@link com.ning.http.client.AsyncHttpProvider} * * @param name the name of the property * @param value the value of the property * @return this instance of AsyncHttpProviderConfig */ public NettyAsyncHttpProviderConfig addProperty(String name, Object value) { properties.put(name, value); return this; } /** * Return the value associated with the property's name * * @param name * @return this instance of AsyncHttpProviderConfig */ public Object getProperty(String name) { return properties.get(name); } /** * Remove the value associated with the property's name * * @param name * @return true if removed */ public Object removeProperty(String name) { return properties.remove(name); } /** * Return the curent entry set. * * @return a the curent entry set. */ public Set<Map.Entry<String, Object>> propertiesSet() { return properties.entrySet(); } }