/*
* Copyright 2009 Red Hat, Inc.
* Red Hat 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 org.jboss.netty.channel;
import java.util.Map;
import java.util.Map.Entry;
import org.jboss.netty.buffer.ChannelBufferFactory;
import org.jboss.netty.buffer.HeapChannelBufferFactory;
import org.jboss.netty.channel.ChannelConfig;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.socket.SocketChannelConfig;
import org.jboss.netty.handler.timeout.WriteTimeoutHandler;
import org.jboss.netty.util.internal.ConversionUtil;
/**
* The default {@link SocketChannelConfig} implementation.
*
* @author The Netty Project (netty-dev@lists.jboss.org)
* @author Trustin Lee (tlee@redhat.com)
*
* @version $Rev: 1685 $, $Date: 2009-08-28 03:15:49 -0400 (Fri, 28 Aug 2009) $
*
*/
public class DefaultChannelConfig implements ChannelConfig {
private volatile ChannelBufferFactory bufferFactory = HeapChannelBufferFactory.getInstance( );
private volatile int connectTimeoutMillis = 5000;
/**
* Creates a new instance.
*/
public DefaultChannelConfig( ) {
super( );
}
public void setOptions( Map<String, Object> options ) {
for ( Entry<String, Object> e : options.entrySet( ) ) {
setOption( e.getKey( ), e.getValue( ) );
}
}
public boolean setOption( String key, Object value ) {
if( key == null ){
return false;
} else if ( key.equals( "pipelineFactory" ) ) {
setPipelineFactory( ( ChannelPipelineFactory ) value );
} else if ( key.equals( "connectTimeoutMillis" ) ) {
setConnectTimeoutMillis( ConversionUtil.toInt( value ) );
} else if ( key.equals( "bufferFactory" ) ) {
setBufferFactory( ( ChannelBufferFactory ) value );
} else {
return false;
}
return true;
}
public int getConnectTimeoutMillis( ) {
return connectTimeoutMillis;
}
public ChannelBufferFactory getBufferFactory( ) {
return bufferFactory;
}
public void setBufferFactory( ChannelBufferFactory bufferFactory ) {
if ( bufferFactory == null ) {
throw new NullPointerException( "bufferFactory" );
}
this.bufferFactory = bufferFactory;
}
public ChannelPipelineFactory getPipelineFactory( ) {
return null;
}
/**
* @deprecated Use {@link WriteTimeoutHandler} instead.
*/
@Deprecated
public int getWriteTimeoutMillis( ) {
return 0;
}
public void setConnectTimeoutMillis( int connectTimeoutMillis ) {
if ( connectTimeoutMillis < 0 ) {
throw new IllegalArgumentException( "connectTimeoutMillis: " + connectTimeoutMillis );
}
this.connectTimeoutMillis = connectTimeoutMillis;
}
public void setPipelineFactory( ChannelPipelineFactory pipelineFactory ) {}
/**
* @deprecated Use {@link WriteTimeoutHandler} instead.
*/
@Deprecated
public void setWriteTimeoutMillis( int writeTimeoutMillis ) {}
}