You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2008/03/16 17:18:49 UTC
svn commit: r637605 - in /mina/trunk:
core/src/main/java/org/apache/mina/transport/socket/
core/src/main/java/org/apache/mina/transport/socket/nio/
core/src/test/java/org/apache/mina/filter/logging/
transport-apr/src/main/java/org/apache/mina/transport...
Author: trustin
Date: Sun Mar 16 09:18:47 2008
New Revision: 637605
URL: http://svn.apache.org/viewvc?rev=637605&view=rev
Log:
* Fixed a problem that Socket.setReceiveBufferSize() is called unnecessarily if ServerSocket.setReceiveBufferSize() is already called with the default value - DefaultSocketSessionConfig keeps track of the change of the default receiveBufferSize to solve this problem.
* Made MdcInjectionFilterTest to dispose connectors
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DefaultSocketSessionConfig.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java
mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DefaultSocketSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DefaultSocketSessionConfig.java?rev=637605&r1=637604&r2=637605&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DefaultSocketSessionConfig.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DefaultSocketSessionConfig.java Sun Mar 16 09:18:47 2008
@@ -206,9 +206,12 @@
return SET_TRAFFIC_CLASS_AVAILABLE;
}
- private final boolean defaultReuseAddress;
+ private SocketService parent;
+ private boolean defaultReuseAddress;
+ private int defaultReceiveBufferSize = DEFAULT_RECEIVE_BUFFER_SIZE;
+
private boolean reuseAddress;
- private int receiveBufferSize = DEFAULT_RECEIVE_BUFFER_SIZE;
+ private int receiveBufferSize = defaultReceiveBufferSize;
private int sendBufferSize = DEFAULT_SEND_BUFFER_SIZE;
private int trafficClass = DEFAULT_TRAFFIC_CLASS;
private boolean keepAlive = DEFAULT_KEEP_ALIVE;
@@ -219,8 +222,12 @@
/**
* Creates a new instance.
*/
- public DefaultSocketSessionConfig(boolean server) {
- if (server) {
+ public DefaultSocketSessionConfig() {
+ }
+
+ public void init(SocketService parent) {
+ this.parent = parent;
+ if (parent instanceof SocketAcceptor) {
defaultReuseAddress = true;
} else {
defaultReuseAddress = DEFAULT_REUSE_ADDRESS;
@@ -242,6 +249,18 @@
public void setReceiveBufferSize(int receiveBufferSize) {
this.receiveBufferSize = receiveBufferSize;
+
+ // The acceptor configures the SO_RCVBUF value of the
+ // server socket when it is activated. Consequently,
+ // a newly accepted session doesn't need to update its
+ // SO_RCVBUF parameter. Therefore, we need to update
+ // the default receive buffer size if the acceptor is
+ // not bound yet to avoid a unnecessary system call
+ // when the acceptor is activated and new sessions are
+ // created.
+ if (!parent.isActive() && parent instanceof SocketAcceptor) {
+ defaultReceiveBufferSize = receiveBufferSize;
+ }
}
public int getSendBufferSize() {
@@ -304,7 +323,7 @@
@Override
protected boolean isReceiveBufferSizeChanged() {
- return receiveBufferSize != DEFAULT_RECEIVE_BUFFER_SIZE;
+ return receiveBufferSize != defaultReceiveBufferSize;
}
@Override
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java?rev=637605&r1=637604&r2=637605&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java Sun Mar 16 09:18:47 2008
@@ -57,19 +57,23 @@
* Create an acceptor with a single processing thread using a NewThreadExecutor
*/
public NioSocketAcceptor() {
- super(new DefaultSocketSessionConfig(true), NioProcessor.class);
+ super(new DefaultSocketSessionConfig(), NioProcessor.class);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public NioSocketAcceptor(int processorCount) {
- super(new DefaultSocketSessionConfig(true), NioProcessor.class, processorCount);
+ super(new DefaultSocketSessionConfig(), NioProcessor.class, processorCount);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public NioSocketAcceptor(IoProcessor<NioSession> processor) {
- super(new DefaultSocketSessionConfig(true), processor);
+ super(new DefaultSocketSessionConfig(), processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public NioSocketAcceptor(Executor executor, IoProcessor<NioSession> processor) {
- super(new DefaultSocketSessionConfig(true), executor, processor);
+ super(new DefaultSocketSessionConfig(), executor, processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
@Override
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java?rev=637605&r1=637604&r2=637605&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java Sun Mar 16 09:18:47 2008
@@ -49,19 +49,23 @@
private volatile Selector selector;
public NioSocketConnector() {
- super(new DefaultSocketSessionConfig(false), NioProcessor.class);
+ super(new DefaultSocketSessionConfig(), NioProcessor.class);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public NioSocketConnector(int processorCount) {
- super(new DefaultSocketSessionConfig(false), NioProcessor.class, processorCount);
+ super(new DefaultSocketSessionConfig(), NioProcessor.class, processorCount);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public NioSocketConnector(IoProcessor<NioSession> processor) {
- super(new DefaultSocketSessionConfig(false), processor);
+ super(new DefaultSocketSessionConfig(), processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public NioSocketConnector(Executor executor, IoProcessor<NioSession> processor) {
- super(new DefaultSocketSessionConfig(false), executor, processor);
+ super(new DefaultSocketSessionConfig(), executor, processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
@Override
Modified: mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java?rev=637605&r1=637604&r2=637605&view=diff
==============================================================================
--- mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java (original)
+++ mina/trunk/core/src/test/java/org/apache/mina/filter/logging/MdcInjectionFilterTest.java Sun Mar 16 09:18:47 2008
@@ -171,6 +171,8 @@
simpleIoHandler.messageSentLatch.await();
simpleIoHandler.sessionIdleLatch.await();
simpleIoHandler.sessionClosedLatch.await();
+ connector.dispose();
+
// make a copy to prevent ConcurrentModificationException
List<LoggingEvent> events = new ArrayList<LoggingEvent>(appender.events);
// verify that all logging events have correct MDC
@@ -204,6 +206,7 @@
simpleIoHandler.messageSentLatch.await();
simpleIoHandler.sessionIdleLatch.await();
simpleIoHandler.sessionClosedLatch.await();
+ connector.dispose();
// make a copy to prevent ConcurrentModificationException
List<LoggingEvent> events = new ArrayList<LoggingEvent>(appender.events);
Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java?rev=637605&r1=637604&r2=637605&view=diff
==============================================================================
--- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java (original)
+++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketAcceptor.java Sun Mar 16 09:18:47 2008
@@ -39,20 +39,24 @@
new CircularQueue<Long>(POLLSET_SIZE);
public AprSocketAcceptor() {
- super(new DefaultSocketSessionConfig(true), AprIoProcessor.class);
+ super(new DefaultSocketSessionConfig(), AprIoProcessor.class);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public AprSocketAcceptor(int processorCount) {
- super(new DefaultSocketSessionConfig(true), AprIoProcessor.class, processorCount);
+ super(new DefaultSocketSessionConfig(), AprIoProcessor.class, processorCount);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public AprSocketAcceptor(IoProcessor<AprSession> processor) {
- super(new DefaultSocketSessionConfig(true), processor);
+ super(new DefaultSocketSessionConfig(), processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public AprSocketAcceptor(Executor executor,
IoProcessor<AprSession> processor) {
- super(new DefaultSocketSessionConfig(true), executor, processor);
+ super(new DefaultSocketSessionConfig(), executor, processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
@Override
Modified: mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java?rev=637605&r1=637604&r2=637605&view=diff
==============================================================================
--- mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java (original)
+++ mina/trunk/transport-apr/src/main/java/org/apache/mina/transport/socket/apr/AprSocketConnector.java Sun Mar 16 09:18:47 2008
@@ -68,19 +68,23 @@
private volatile ByteBuffer dummyBuffer;
public AprSocketConnector() {
- super(new DefaultSocketSessionConfig(false), AprIoProcessor.class);
+ super(new DefaultSocketSessionConfig(), AprIoProcessor.class);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public AprSocketConnector(int processorCount) {
- super(new DefaultSocketSessionConfig(false), AprIoProcessor.class, processorCount);
+ super(new DefaultSocketSessionConfig(), AprIoProcessor.class, processorCount);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public AprSocketConnector(IoProcessor<AprSession> processor) {
- super(new DefaultSocketSessionConfig(false), processor);
+ super(new DefaultSocketSessionConfig(), processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
public AprSocketConnector(Executor executor, IoProcessor<AprSession> processor) {
- super(new DefaultSocketSessionConfig(false), executor, processor);
+ super(new DefaultSocketSessionConfig(), executor, processor);
+ ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
}
@Override