You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2011/08/20 17:44:06 UTC
svn commit: r1159886 - in /mina/branches/3.0/core/src:
main/java/org/apache/mina/api/ main/java/org/apache/mina/filter/logging/
main/java/org/apache/mina/filterchain/ test/java/org/apache/mina/filterchain/
Author: jvermillard
Date: Sat Aug 20 15:44:05 2011
New Revision: 1159886
URL: http://svn.apache.org/viewvc?rev=1159886&view=rev
Log:
simplification of filter chain, the current index on the chain is sorted in the filterchain. so concurrent running will need a filterchain copy.
Modified:
mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilter.java
mina/branches/3.0/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java
mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/ReadFilterChainController.java
mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/WriteFilterChainController.java
mina/branches/3.0/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java
Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilter.java?rev=1159886&r1=1159885&r2=1159886&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilter.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/api/IoFilter.java Sat Aug 20 15:44:05 2011
@@ -68,7 +68,7 @@ public interface IoFilter {
* @param session {@link IoSession} associated with the invocation
* @param message the incoming message to process
*/
- void messageReceived(IoSession session, Object message, ReadFilterChainController controller, int currentPosition);
+ void messageReceived(IoSession session, Object message, ReadFilterChainController controller);
/**
* Invoked when a message is under writing. The filter is supposed to apply the needed transformation.
@@ -76,5 +76,5 @@ public interface IoFilter {
* @param session {@link IoSession} associated with the invocation
* @param message the message to process before writing
*/
- void messageWriting(IoSession session, Object message, WriteFilterChainController controller, int currentPosition);
+ void messageWriting(IoSession session, Object message, WriteFilterChainController controller);
}
\ No newline at end of file
Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java?rev=1159886&r1=1159885&r2=1159886&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/filter/logging/LoggingFilter.java Sat Aug 20 15:44:05 2011
@@ -170,17 +170,15 @@ public class LoggingFilter implements Io
}
@Override
- public void messageReceived(IoSession session, Object message, ReadFilterChainController controller,
- int currentPosition) {
+ public void messageReceived(IoSession session, Object message, ReadFilterChainController controller) {
log(messageReceivedLevel, "RECEIVED: {}", message);
- controller.callReadNextFilter(session, currentPosition, message);
+ controller.callReadNextFilter(session, message);
}
@Override
- public void messageWriting(IoSession session, Object message, WriteFilterChainController controller,
- int currentPosition) {
+ public void messageWriting(IoSession session, Object message, WriteFilterChainController controller) {
log(messageWritingLevel, "WRITTING: {}", message);
- controller.callWriteNextFilter(session, currentPosition, message);
+ controller.callWriteNextFilter(session, message);
}
//=========================
Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java?rev=1159886&r1=1159885&r2=1159886&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterChain.java Sat Aug 20 15:44:05 2011
@@ -83,57 +83,62 @@ public class DefaultIoFilterChain implem
}
}
+ private int readChainPosition;
+
@Override
public void processMessageReceived(IoSession session, Object message) {
LOG.debug("processing message '{}' received event ", message);
if (chain.isEmpty()) {
LOG.debug("Nothing to do, the chain is empty");
} else {
+ readChainPosition = 0;
// we call the first filter, it's supposed to call the next ones using the filter chain controller
- chain.get(0).messageReceived(session, message, this, 0);
+ chain.get(readChainPosition).messageReceived(session, message, this);
}
}
+ private int writeChainPosition;
+
@Override
public void processMessageWriting(IoSession session, Object message) {
LOG.debug("processing message '{}' writing event ", message);
if (chain.isEmpty()) {
LOG.debug("Nothing to do, the chain is empty");
} else {
+ writeChainPosition = chain.size() - 1;
// we call the first filter, it's supposed to call the next ones using the filter chain controller
- chain.get(0).messageWriting(session, message, this, 0);
+ chain.get(writeChainPosition).messageWriting(session, message, this);
}
}
@Override
- public String toString() {
- StringBuilder bldr = new StringBuilder("IoFilterChain {");
- int index = 0;
- for (IoFilter filter : chain) {
- bldr.append(index).append(":").append(filter).append(", ");
- }
- return bldr.append("}").toString();
- }
-
- @Override
- public void callWriteNextFilter(IoSession session, int currentPosition, Object message) {
- currentPosition--;
- if (currentPosition < 0 || chain.size() == 0) {
+ public void callWriteNextFilter(IoSession session, Object message) {
+ writeChainPosition--;
+ if (writeChainPosition < 0 || chain.size() == 0) {
// end of chain processing
session.enqueueWriteRequest(message);
} else {
- chain.get(currentPosition).messageWriting(session, message, this, currentPosition);
+ chain.get(writeChainPosition).messageWriting(session, message, this);
}
}
@Override
- public void callReadNextFilter(IoSession session, int currentPosition, Object message) {
- currentPosition++;
- if (currentPosition >= chain.size()) {
+ public void callReadNextFilter(IoSession session, Object message) {
+ readChainPosition++;
+ if (readChainPosition >= chain.size()) {
// end of chain processing
} else {
- chain.get(currentPosition).messageReceived(session, message, this, currentPosition);
+ chain.get(readChainPosition).messageReceived(session, message, this);
}
}
+ @Override
+ public String toString() {
+ StringBuilder bldr = new StringBuilder("IoFilterChain {");
+ int index = 0;
+ for (IoFilter filter : chain) {
+ bldr.append(index).append(":").append(filter).append(", ");
+ }
+ return bldr.append("}").toString();
+ }
}
\ No newline at end of file
Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/ReadFilterChainController.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/ReadFilterChainController.java?rev=1159886&r1=1159885&r2=1159886&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/ReadFilterChainController.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/ReadFilterChainController.java Sat Aug 20 15:44:05 2011
@@ -29,5 +29,5 @@ import org.apache.mina.api.IoSession;
*/
public interface ReadFilterChainController {
- void callReadNextFilter(IoSession session, int currentPosition, Object message);
+ void callReadNextFilter(IoSession session, Object message);
}
Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/WriteFilterChainController.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/WriteFilterChainController.java?rev=1159886&r1=1159885&r2=1159886&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/WriteFilterChainController.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/filterchain/WriteFilterChainController.java Sat Aug 20 15:44:05 2011
@@ -28,5 +28,5 @@ import org.apache.mina.api.IoSession;
*
*/
public interface WriteFilterChainController {
- void callWriteNextFilter(IoSession session, int currentPosition, Object message);
+ void callWriteNextFilter(IoSession session, Object message);
}
Modified: mina/branches/3.0/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java?rev=1159886&r1=1159885&r2=1159886&view=diff
==============================================================================
--- mina/branches/3.0/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java (original)
+++ mina/branches/3.0/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java Sat Aug 20 15:44:05 2011
@@ -54,15 +54,13 @@ public class DefaultIoFilterChainTest {
}
@Override
- public void messageReceived(IoSession session, Object message, ReadFilterChainController controller,
- int currentPosition) {
- controller.callReadNextFilter(session, currentPosition, message);
+ public void messageReceived(IoSession session, Object message, ReadFilterChainController controller) {
+ controller.callReadNextFilter(session, message);
}
@Override
- public void messageWriting(IoSession session, Object message, WriteFilterChainController controller,
- int currentPosition) {
- controller.callWriteNextFilter(session, currentPosition, message);
+ public void messageWriting(IoSession session, Object message, WriteFilterChainController controller) {
+ controller.callWriteNextFilter(session, message);
}
}