Merge pull request #1643, ChannelState branch prediction optimization.
diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
index 038adea..44dea94 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
@@ -52,7 +52,15 @@
@Override
public void run() {
- switch (state) {
+ if (state == ChannelState.RECEIVED) {
+ try {
+ handler.received(channel, message);
+ } catch (Exception e) {
+ logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel
+ + ", message is " + message, e);
+ }
+ } else {
+ switch (state) {
case CONNECTED:
try {
handler.connected(channel);
@@ -74,15 +82,6 @@
logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel
+ ", message is " + message, e);
}
- break;
- case RECEIVED:
- try {
- handler.received(channel, message);
- } catch (Exception e) {
- logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel
- + ", message is " + message, e);
- }
- break;
case CAUGHT:
try {
handler.caught(channel, exception);
@@ -93,7 +92,9 @@
break;
default:
logger.warn("unknown state: " + state + ", message is " + message);
+ }
}
+
}
/**