You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by sebb <se...@gmail.com> on 2013/02/10 01:32:43 UTC
Re: svn commit: r1444386 - in /httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor:
AbstractMultiworkerIOReactor.java DefaultListeningIOReactor.java IOReactorConfig.java
On 9 February 2013 16:08, <ol...@apache.org> wrote:
> Author: olegk
> Date: Sat Feb 9 16:08:28 2013
> New Revision: 1444386
>
> URL: http://svn.apache.org/r1444386
> Log:
> Added sndBufSize / rcvBufSize parameters to IOReactorConfig
>
> Modified:
> httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
> httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java
> httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java
>
> Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
> URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java?rev=1444386&r1=1444385&r2=1444386&view=diff
> ==============================================================================
> --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java (original)
> +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java Sat Feb 9 16:08:28 2013
> @@ -498,8 +498,17 @@ public abstract class AbstractMultiworke
> */
> protected void prepareSocket(final Socket socket) throws IOException {
> socket.setTcpNoDelay(this.config.isTcpNoDelay());
> - socket.setSoTimeout(this.config.getSoTimeout());
> socket.setKeepAlive(this.config.isSoKeepalive());
> + socket.setReuseAddress(this.config.isSoReuseAddress());
> + if (this.config.getSoTimeout() > 0) {
> + socket.setSoTimeout(this.config.getSoTimeout());
> + }
> + if (this.config.getSndBufSize() > 0) {
> + socket.setSendBufferSize(this.config.getSndBufSize());
> + }
> + if (this.config.getRcvBufSize() > 0) {
> + socket.setReceiveBufferSize(this.config.getRcvBufSize());
> + }
> final int linger = this.config.getSoLinger();
> if (linger >= 0) {
> socket.setSoLinger(linger > 0, linger);
>
> Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java
> URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java?rev=1444386&r1=1444385&r2=1444386&view=diff
> ==============================================================================
> --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java (original)
> +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java Sat Feb 9 16:08:28 2013
> @@ -28,6 +28,7 @@
> package org.apache.http.impl.nio.reactor;
>
> import java.io.IOException;
> +import java.net.ServerSocket;
> import java.net.SocketAddress;
> import java.nio.channels.CancelledKeyException;
> import java.nio.channels.SelectionKey;
> @@ -231,8 +232,10 @@ public class DefaultListeningIOReactor e
> throw new IOReactorException("Failure opening server socket", ex);
> }
> try {
> + final ServerSocket socket = serverChannel.socket();
> + socket.setReuseAddress(this.config.isSoReuseAddress());
> serverChannel.configureBlocking(false);
> - serverChannel.socket().bind(address);
> + socket.bind(address);
> } catch (final IOException ex) {
> closeChannel(serverChannel);
> request.failed(ex);
>
> Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java
> URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java?rev=1444386&r1=1444385&r2=1444386&view=diff
> ==============================================================================
> --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java (original)
> +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/reactor/IOReactorConfig.java Sat Feb 9 16:08:28 2013
> @@ -56,6 +56,8 @@ public final class IOReactorConfig imple
> private boolean soKeepAlive;
> private boolean tcpNoDelay;
> private int connectTimeout;
> + private int sndBufSize;
> + private int rcvBufSize;
>
> @Deprecated
> public IOReactorConfig() {
> @@ -70,6 +72,8 @@ public final class IOReactorConfig imple
> this.soKeepAlive = false;
> this.tcpNoDelay = true;
> this.connectTimeout = 0;
> + this.sndBufSize = 0;
> + this.rcvBufSize = 0;
> }
>
> IOReactorConfig(
> @@ -82,7 +86,9 @@ public final class IOReactorConfig imple
> final int soLinger,
> final boolean soKeepAlive,
> final boolean tcpNoDelay,
> - final int connectTimeout) {
> + final int connectTimeout,
> + final int sndBufSize,
> + final int rcvBufSize) {
> super();
> this.selectInterval = selectInterval;
> this.shutdownGracePeriod = shutdownGracePeriod;
> @@ -94,6 +100,8 @@ public final class IOReactorConfig imple
> this.soKeepAlive = soKeepAlive;
> this.tcpNoDelay = tcpNoDelay;
> this.connectTimeout = connectTimeout;
> + this.sndBufSize = sndBufSize;
> + this.rcvBufSize = rcvBufSize;
> }
>
> /**
> @@ -261,6 +269,52 @@ public final class IOReactorConfig imple
> this.connectTimeout = connectTimeout;
> }
>
> + /**
> + * Determines the default value of the {@link SocketOptions#SO_SNDBUF} parameter
> + * for newly created sockets.
> + * <p/>
> + * Default: <code>0</code> (system default)
> + *
> + * @see SocketOptions#SO_SNDBUF
> + */
> + public int getSndBufSize() {
> + return sndBufSize;
> + }
> +
> + /**
> + * Defines the default value of the {@link SocketOptions#SO_SNDBUF} parameter
> + * for newly created sockets.
> + *
The Javadoc should mention that the param is ignored unless > 0.
> + * @see SocketOptions#SO_SNDBUF
> + */
> + @Deprecated
Huh? Why add a deprecated method?
If it is really deprecated from birth, should include @deprecated
Javadoc tag with details of replacement.
> + public void setSndBufSize(final int sndBufSize) {
> + this.sndBufSize = sndBufSize;
> + }
> +
> + /**
> + * Determines the default value of the {@link SocketOptions#SO_RCVBUF} parameter
> + * for newly created sockets.
> + * <p/>
> + * Default: <code>0</code> (system default)
> + *
> + * @see SocketOptions#SO_RCVBUF
> + */
> + public int getRcvBufSize() {
> + return rcvBufSize;
> + }
> +
> + /**
> + * Defines the default value of the {@link SocketOptions#SO_RCVBUF} parameter
> + * for newly created sockets.
> + *
> + * @see SocketOptions#SO_RCVBUF
> + */
> + @Deprecated
Same comments apply here.
> + public void setRcvBufSize(final int rcvBufSize) {
> + this.rcvBufSize = rcvBufSize;
> + }
> +
> @Override
> protected IOReactorConfig clone() throws CloneNotSupportedException {
> return (IOReactorConfig) super.clone();
> @@ -297,6 +351,8 @@ public final class IOReactorConfig imple
> private boolean soKeepAlive;
> private boolean tcpNoDelay;
> private int connectTimeout;
> + private int sndBufSize;
> + private int rcvBufSize;
>
> Builder() {
> this.selectInterval = 1000;
> @@ -309,6 +365,8 @@ public final class IOReactorConfig imple
> this.soKeepAlive = false;
> this.tcpNoDelay = true;
> this.connectTimeout = 0;
> + this.sndBufSize = 0;
> + this.rcvBufSize = 0;
> }
>
> public Builder setSelectInterval(final long selectInterval) {
> @@ -361,10 +419,21 @@ public final class IOReactorConfig imple
> return this;
> }
>
> + public Builder setSndBufSize(final int sndBufSize) {
> + this.sndBufSize = sndBufSize;
> + return this;
> + }
> +
> + public Builder setRcvBufSize(final int rcvBufSize) {
> + this.rcvBufSize = rcvBufSize;
> + return this;
> + }
> +
> public IOReactorConfig build() {
> return new IOReactorConfig(
> selectInterval, shutdownGracePeriod, interestOpQueued, ioThreadCount,
> - soTimeout, soReuseAddress, soLinger, soKeepAlive, tcpNoDelay, connectTimeout);
> + soTimeout, soReuseAddress, soLinger, soKeepAlive, tcpNoDelay,
> + connectTimeout, sndBufSize, rcvBufSize);
> }
>
> }
> @@ -381,7 +450,10 @@ public final class IOReactorConfig imple
> .append(", soLinger=").append(this.soLinger)
> .append(", soKeepAlive=").append(this.soKeepAlive)
> .append(", tcpNoDelay=").append(this.tcpNoDelay)
> - .append(", connectTimeout=").append(this.connectTimeout).append("]");
> + .append(", connectTimeout=").append(this.connectTimeout)
> + .append(", sndBufSize=").append(this.sndBufSize)
> + .append(", rcvBufSize=").append(this.rcvBufSize)
> + .append("]");
> return builder.toString();
> }
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org
Re: svn commit: r1444386
Posted by sebb <se...@gmail.com>.
On 10 February 2013 10:20, Oleg Kalnichevski <ol...@apache.org> wrote:
> ...
>> The Javadoc should mention that the param is ignored unless > 0.
>> > + * @see SocketOptions#SO_SNDBUF
>> > + */
>> > + @Deprecated
>>
>> Huh? Why add a deprecated method?
>> If it is really deprecated from birth, should include @deprecated
>> Javadoc tag with details of replacement.
>>
>
> This class started out as a classic mutable java bean with setters and
> getters. In 4.3 setters got deprecated in favor of a builder, which
> should allow us to make the class fully immutable in the future. I added
> those setters for consistency sake.
OK, I see
> Added @deprecated javadoc tags in trunk.
>
> http://svn.apache.org/viewvc?view=revision&revision=r1444523
Thanks, that looks good.
> Oleg
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
> For additional commands, e-mail: dev-help@hc.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org
Re: svn commit: r1444386
Posted by Oleg Kalnichevski <ol...@apache.org>.
...
> The Javadoc should mention that the param is ignored unless > 0.
> > + * @see SocketOptions#SO_SNDBUF
> > + */
> > + @Deprecated
>
> Huh? Why add a deprecated method?
> If it is really deprecated from birth, should include @deprecated
> Javadoc tag with details of replacement.
>
This class started out as a classic mutable java bean with setters and
getters. In 4.3 setters got deprecated in favor of a builder, which
should allow us to make the class fully immutable in the future. I added
those setters for consistency sake.
Added @deprecated javadoc tags in trunk.
http://svn.apache.org/viewvc?view=revision&revision=r1444523
Oleg
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org