You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2011/02/04 17:14:47 UTC

svn commit: r1067208 - in /qpid/trunk/qpid/java: broker/src/main/java/org/apache/qpid/server/transport/ common/ common/src/main/java/org/apache/qpid/transport/

Author: robbie
Date: Fri Feb  4 16:14:46 2011
New Revision: 1067208

URL: http://svn.apache.org/viewvc?rev=1067208&view=rev
Log:
QPID-3021: ensure the connection actor is used for connection control events regardless of a particular sessions existence

Modified:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
    qpid/trunk/qpid/java/common/Composite.tpl
    qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolError.java
    qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolEvent.java
    qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolHeader.java

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java?rev=1067208&r1=1067207&r2=1067208&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java Fri Feb  4 16:14:46 2011
@@ -149,15 +149,23 @@ public class ServerConnection extends Co
     @Override
     public void received(ProtocolEvent event)
     {
-        ServerSession channel = (ServerSession) getSession(event.getChannel());
-        LogActor channelActor = null;
-
-        if (channel != null)
+        if (event.isConnectionControl())
+        {
+            CurrentActor.set(_actor);
+        }
+        else
         {
-            channelActor = channel.getLogActor();
+            ServerSession channel = (ServerSession) getSession(event.getChannel());
+            LogActor channelActor = null;
+
+            if (channel != null)
+            {
+                channelActor = channel.getLogActor();
+            }
+
+            CurrentActor.set(channelActor == null ? _actor : channelActor);
         }
 
-        CurrentActor.set(channelActor == null ? _actor : channelActor);
         try
         {
             super.received(event);

Modified: qpid/trunk/qpid/java/common/Composite.tpl
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/Composite.tpl?rev=1067208&r1=1067207&r2=1067208&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/Composite.tpl (original)
+++ qpid/trunk/qpid/java/common/Composite.tpl Fri Feb  4 16:14:46 2011
@@ -44,6 +44,8 @@ cls = klass(type)["@name"]
 
 segments = type["segments"]
 
+connectioncontrol="false"
+
 if type.name in ("control", "command"):
   base = "Method"
   size = 0
@@ -54,6 +56,7 @@ if type.name in ("control", "command"):
     payload = "false"
   if type.name == "control" and cls == "connection":
     track = "Frame.L1"
+    connectioncontrol="true"
   elif cls == "session" and type["@name"] in ("attach", "attached", "detach", "detached"):
     track = "Frame.L2"
   elif type.name == "command":
@@ -100,6 +103,11 @@ public final class $name extends $base {
         return $track;
     }
 
+    public final boolean isConnectionControl()
+    {
+        return $connectioncontrol;
+    }
+
 ${
 
 if pack > 0:

Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolError.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolError.java?rev=1067208&r1=1067207&r2=1067208&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolError.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolError.java Fri Feb  4 16:14:46 2011
@@ -60,6 +60,11 @@ public final class ProtocolError impleme
         return track;
     }
 
+    public boolean isConnectionControl()
+    {
+        return false;
+    }
+
     public String getMessage()
     {
         return String.format(format, args);

Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolEvent.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolEvent.java?rev=1067208&r1=1067207&r2=1067208&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolEvent.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolEvent.java Fri Feb  4 16:14:46 2011
@@ -37,4 +37,5 @@ public interface ProtocolEvent
 
     <C> void delegate(C context, ProtocolDelegate<C> delegate);
 
+    boolean isConnectionControl();
 }

Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolHeader.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolHeader.java?rev=1067208&r1=1067207&r2=1067208&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolHeader.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/ProtocolHeader.java Fri Feb  4 16:14:46 2011
@@ -88,6 +88,11 @@ public final class ProtocolHeader implem
         return Frame.L1;
     }
 
+    public boolean isConnectionControl()
+    {
+        return false;
+    }
+
     public ByteBuffer toByteBuffer()
     {
         ByteBuffer buf = ByteBuffer.allocate(8);



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org