You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2016/10/31 17:35:14 UTC
svn commit: r1767344 - in /httpcomponents/httpcore/trunk:
httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/
httpcore5/src/main/java/org/apache/hc/core5/reactor/
httpcore5/src/main/java/org/apache/hc/core5/reactor/ssl/
Author: olegk
Date: Mon Oct 31 17:35:13 2016
New Revision: 1767344
URL: http://svn.apache.org/viewvc?rev=1767344&view=rev
Log:
Removed obsolete I/O session functionality
Removed:
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractIOEventHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/SessionBufferStatus.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/SocketAccessor.java
Modified:
httpcomponents/httpcore/trunk/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSession.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractIOReactor.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/BaseIOReactor.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSession.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSessionImpl.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/ssl/SSLIOSession.java
Modified: httpcomponents/httpcore/trunk/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSession.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSession.java?rev=1767344&r1=1767343&r2=1767344&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSession.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5-testing/src/main/java/org/apache/hc/core5/testing/nio/LoggingIOSession.java Mon Oct 31 17:35:13 2016
@@ -35,11 +35,10 @@ import java.nio.channels.SelectionKey;
import java.util.Deque;
import org.apache.commons.logging.Log;
-import org.apache.hc.core5.testing.classic.Wire;
import org.apache.hc.core5.reactor.Command;
import org.apache.hc.core5.reactor.IOEventHandler;
import org.apache.hc.core5.reactor.IOSession;
-import org.apache.hc.core5.reactor.SessionBufferStatus;
+import org.apache.hc.core5.testing.classic.Wire;
/**
* Decorator class intended to transparently extend an {@link IOSession}
@@ -175,42 +174,6 @@ public class LoggingIOSession implements
}
@Override
- public void setBufferStatus(final SessionBufferStatus status) {
- this.session.setBufferStatus(status);
- }
-
- @Override
- public boolean hasBufferedInput() {
- return this.session.hasBufferedInput();
- }
-
- @Override
- public boolean hasBufferedOutput() {
- return this.session.hasBufferedOutput();
- }
-
- @Override
- public Object getAttribute(final String name) {
- return this.session.getAttribute(name);
- }
-
- @Override
- public void setAttribute(final String name, final Object obj) {
- if (this.log.isDebugEnabled()) {
- this.log.debug(this.id + " " + this.session + ": Set attribute " + name);
- }
- this.session.setAttribute(name, obj);
- }
-
- @Override
- public Object removeAttribute(final String name) {
- if (this.log.isDebugEnabled()) {
- this.log.debug(this.id + " " + this.session + ": Remove attribute " + name);
- }
- return this.session.removeAttribute(name);
- }
-
- @Override
public IOEventHandler getHandler() {
return this.session.getHandler();
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractIOReactor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractIOReactor.java?rev=1767344&r1=1767343&r2=1767344&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractIOReactor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/AbstractIOReactor.java Mon Oct 31 17:35:13 2016
@@ -343,7 +343,6 @@ abstract class AbstractIOReactor impleme
try {
final SessionRequestImpl sessionRequest = pendingSession.sessionRequest;
if (sessionRequest != null) {
- session.setAttribute(IOSession.ATTACHMENT_KEY, sessionRequest.getAttachment());
sessionRequest.completed(session);
}
sessionCreated(session);
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/BaseIOReactor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/BaseIOReactor.java?rev=1767344&r1=1767343&r2=1767344&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/BaseIOReactor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/BaseIOReactor.java Mon Oct 31 17:35:13 2016
@@ -30,8 +30,6 @@ package org.apache.hc.core5.reactor;
import java.io.InterruptedIOException;
import java.nio.channels.CancelledKeyException;
import java.nio.channels.SelectionKey;
-import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
/**
@@ -43,7 +41,6 @@ import java.util.Set;
public class BaseIOReactor extends AbstractIOReactor {
private final long timeoutCheckInterval;
- private final Set<IOSession> bufferingSessions;
private final IOReactorExceptionHandler exceptionHandler;
private long lastTimeoutCheck;
@@ -59,7 +56,6 @@ public class BaseIOReactor extends Abstr
final IOReactorConfig reactorConfig,
final IOReactorExceptionHandler exceptionHandler) {
super(eventHandlerFactory, reactorConfig);
- this.bufferingSessions = new HashSet<>();
this.timeoutCheckInterval = reactorConfig.getSelectInterval();
this.exceptionHandler = exceptionHandler;
this.lastTimeoutCheck = System.currentTimeMillis();
@@ -122,19 +118,7 @@ public class BaseIOReactor extends Abstr
final IOSession session = getSession(key);
try {
final IOEventHandler eventHandler = ensureEventHandler(session);
- // Try to gently feed more data to the event dispatcher
- // if the session input buffer has not been fully exhausted
- // (the choice of 5 iterations is purely arbitrary)
- for (int i = 0; i < 5; i++) {
- eventHandler.inputReady(session);
- if (!session.hasBufferedInput()
- || (session.getEventMask() & SelectionKey.OP_READ) == 0) {
- break;
- }
- }
- if (session.hasBufferedInput()) {
- this.bufferingSessions.add(session);
- }
+ eventHandler.inputReady(session);
} catch (final CancelledKeyException ex) {
session.shutdown();
key.attach(null);
@@ -178,29 +162,6 @@ public class BaseIOReactor extends Abstr
}
}
}
- if (!this.bufferingSessions.isEmpty()) {
- for (final Iterator<IOSession> it = this.bufferingSessions.iterator(); it.hasNext(); ) {
- final IOSession session = it.next();
- if (!session.hasBufferedInput()) {
- it.remove();
- continue;
- }
- try {
- if ((session.getEventMask() & EventMask.READ) > 0) {
- final IOEventHandler eventHandler = ensureEventHandler(session);
- eventHandler.inputReady(session);
- if (!session.hasBufferedInput()) {
- it.remove();
- }
- }
- } catch (final CancelledKeyException ex) {
- it.remove();
- session.shutdown();
- } catch (final RuntimeException ex) {
- handleRuntimeException(ex);
- }
- }
- }
}
/**
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSession.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSession.java?rev=1767344&r1=1767343&r2=1767344&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSession.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSession.java Mon Oct 31 17:35:13 2016
@@ -181,76 +181,4 @@ public interface IOSession {
*/
void setSocketTimeout(int timeout);
- /**
- * Quite often I/O sessions need to maintain internal I/O buffers in order
- * to transform input / output data prior to returning it to the consumer or
- * writing it to the underlying channel. Memory management in HttpCore NIO
- * is based on the fundamental principle that the data consumer can read
- * only as much input data as it can process without having to allocate more
- * memory. That means, quite often some input data may remain unread in one
- * of the internal or external session buffers. The I/O reactor can query
- * the status of these session buffers, and make sure the consumer gets
- * notified correctly as more data gets stored in one of the session
- * buffers, thus allowing the consumer to read the remaining data once it
- * is able to process it
- * <p>
- * I/O sessions can be made aware of the status of external session buffers
- * using the {@link SessionBufferStatus} interface.
- */
- void setBufferStatus(SessionBufferStatus status);
-
- /**
- * Determines if the input buffer associated with the session contains data.
- *
- * @return {@code true} if the session input buffer contains data,
- * {@code false} otherwise.
- */
- boolean hasBufferedInput();
-
- /**
- * Determines if the output buffer associated with the session contains
- * data.
- *
- * @return {@code true} if the session output buffer contains data,
- * {@code false} otherwise.
- */
- boolean hasBufferedOutput();
-
- /**
- * This method can be used to associate a particular object with the
- * session by the given attribute name.
- * <p>
- * I/O sessions are not bound to an execution thread, therefore one cannot
- * use the context of the thread to store a session's state. All details
- * about a particular session must be stored within the session itself.
- *
- * @param name name of the attribute.
- * @param obj value of the attribute.
- */
- void setAttribute(String name, Object obj);
-
- /**
- * Returns the value of the attribute with the given name. The value can be
- * {@code null} if not set.
- * <p>
- * The value of the session attachment object can be obtained using
- * {@link #ATTACHMENT_KEY} name.
- *
- * @see #setAttribute(String, Object)
- *
- * @param name name of the attribute.
- * @return value of the attribute.
- */
- Object getAttribute(String name);
-
- /**
- * Removes attribute with the given name.
- *
- * @see #setAttribute(String, Object)
- *
- * @param name name of the attribute to be removed.
- * @return value of the removed attribute.
- */
- Object removeAttribute(String name);
-
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSessionImpl.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSessionImpl.java?rev=1767344&r1=1767343&r2=1767344&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSessionImpl.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/IOSessionImpl.java Mon Oct 31 17:35:13 2016
@@ -29,7 +29,6 @@ package org.apache.hc.core5.reactor;
import java.io.IOException;
import java.net.InetSocketAddress;
-import java.net.Socket;
import java.net.SocketAddress;
import java.nio.channels.ByteChannel;
import java.nio.channels.SelectionKey;
@@ -51,7 +50,7 @@ import org.apache.hc.core5.util.Args;
* @since 4.0
*/
@Contract(threading = ThreadingBehavior.SAFE)
-class IOSessionImpl implements IOSession, SocketAccessor {
+class IOSessionImpl implements IOSession {
private final SelectionKey key;
private final SocketChannel channel;
@@ -64,7 +63,6 @@ class IOSessionImpl implements IOSession
private final Deque<Command> commandQueue;
private volatile IOEventHandler eventHandler;
- private volatile SessionBufferStatus bufferStatus;
private volatile int socketTimeout;
private volatile long lastReadTime;
@@ -228,42 +226,6 @@ class IOSessionImpl implements IOSession
close();
}
- @Override
- public boolean hasBufferedInput() {
- final SessionBufferStatus buffStatus = this.bufferStatus;
- return buffStatus != null && buffStatus.hasBufferedInput();
- }
-
- @Override
- public boolean hasBufferedOutput() {
- final SessionBufferStatus buffStatus = this.bufferStatus;
- return buffStatus != null && buffStatus.hasBufferedOutput();
- }
-
- @Override
- public void setBufferStatus(final SessionBufferStatus bufferStatus) {
- this.bufferStatus = bufferStatus;
- }
-
- @Override
- public Object getAttribute(final String name) {
- return this.attributes.get(name);
- }
-
- @Override
- public Object removeAttribute(final String name) {
- return this.attributes.remove(name);
- }
-
- @Override
- public void setAttribute(final String name, final Object obj) {
- if (obj == null) {
- this.attributes.remove(name);
- } else {
- this.attributes.put(name, obj);
- }
- }
-
public long getStartedTime() {
return this.startedTime;
}
@@ -320,11 +282,6 @@ class IOSessionImpl implements IOSession
}
@Override
- public Socket getSocket() {
- return this.channel.socket();
- }
-
- @Override
public String toString() {
final StringBuilder buffer = new StringBuilder();
final SocketAddress remoteAddress = getRemoteAddress();
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/ssl/SSLIOSession.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/ssl/SSLIOSession.java?rev=1767344&r1=1767343&r2=1767344&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/ssl/SSLIOSession.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/reactor/ssl/SSLIOSession.java Mon Oct 31 17:35:13 2016
@@ -28,7 +28,6 @@
package org.apache.hc.core5.reactor.ssl;
import java.io.IOException;
-import java.net.Socket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
@@ -52,8 +51,6 @@ import org.apache.hc.core5.reactor.Comma
import org.apache.hc.core5.reactor.EventMask;
import org.apache.hc.core5.reactor.IOEventHandler;
import org.apache.hc.core5.reactor.IOSession;
-import org.apache.hc.core5.reactor.SessionBufferStatus;
-import org.apache.hc.core5.reactor.SocketAccessor;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.Asserts;
@@ -75,7 +72,7 @@ import org.apache.hc.core5.util.Asserts;
* @since 4.2
*/
@Contract(threading = ThreadingBehavior.SAFE_CONDITIONAL)
-public class SSLIOSession implements IOSession, SessionBufferStatus, SocketAccessor {
+public class SSLIOSession implements IOSession {
/**
* Name of the context attribute key, which can be used to obtain the
@@ -95,7 +92,6 @@ public class SSLIOSession implements IOS
private final SSLSetupHandler handler;
private int appEventMask;
- private SessionBufferStatus appBufferStatus;
private boolean endOfStream;
private volatile SSLMode sslMode;
@@ -150,9 +146,6 @@ public class SSLIOSession implements IOS
this.channel = new InternalByteChannel();
this.handler = handler;
- // Override the status buffer interface
- this.session.setBufferStatus(this);
-
if (this.sslMode == SSLMode.CLIENT && host != null) {
this.sslEngine = sslContext.createSSLEngine(host.getHostName(), host.getPort());
} else {
@@ -502,9 +495,7 @@ public class SSLIOSession implements IOS
} while (this.sslEngine.getHandshakeStatus() == HandshakeStatus.NEED_TASK);
// Some decrypted data is available or at the end of stream
return (this.appEventMask & SelectionKey.OP_READ) > 0
- && (this.inPlain.hasData()
- || (this.appBufferStatus != null && this.appBufferStatus.hasBufferedInput())
- || (this.endOfStream && this.status == ACTIVE));
+ && (this.inPlain.hasData() || (this.endOfStream && this.status == ACTIVE));
}
/**
@@ -706,40 +697,6 @@ public class SSLIOSession implements IOS
}
@Override
- public synchronized boolean hasBufferedInput() {
- return (this.appBufferStatus != null && this.appBufferStatus.hasBufferedInput())
- || this.inEncrypted.hasData()
- || this.inPlain.hasData();
- }
-
- @Override
- public synchronized boolean hasBufferedOutput() {
- return (this.appBufferStatus != null && this.appBufferStatus.hasBufferedOutput())
- || this.outEncrypted.hasData()
- || this.outPlain.hasData();
- }
-
- @Override
- public synchronized void setBufferStatus(final SessionBufferStatus status) {
- this.appBufferStatus = status;
- }
-
- @Override
- public Object getAttribute(final String name) {
- return this.session.getAttribute(name);
- }
-
- @Override
- public Object removeAttribute(final String name) {
- return this.session.removeAttribute(name);
- }
-
- @Override
- public void setAttribute(final String name, final Object obj) {
- this.session.setAttribute(name, obj);
- }
-
- @Override
public IOEventHandler getHandler() {
return this.session.getHandler();
}
@@ -799,14 +756,6 @@ public class SSLIOSession implements IOS
return buffer.toString();
}
- @Override
- public Socket getSocket(){
- if (this.session instanceof SocketAccessor){
- return ((SocketAccessor) this.session).getSocket();
- }
- return null;
- }
-
private class InternalByteChannel implements ByteChannel {
@Override