Author: rgodfrey
Date: Tue Oct 11 20:15:47 2016
New Revision: 1764339

URL: http://svn.apache.org/viewvc?rev=1764339&view=rev
Log:
QPID-7447 : Small optimisations

Added:
    
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/CachedFrame.java
   (with props)
Modified:
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
    
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
    
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java?rev=1764339&r1=1764338&r2=1764339&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
 Tue Oct 11 20:15:47 2016
@@ -83,6 +83,7 @@ public abstract class AbstractExchange<T
         implements Exchange<T>
 {
     private static final Logger _logger = 
LoggerFactory.getLogger(AbstractExchange.class);
+    private static final Operation PUBLISH_ACTION = 
Operation.ACTION("publish");
     private final AtomicBoolean _closed = new AtomicBoolean();
 
     @ManagedAttributeField(beforeSet = "preSetAlternateExchange", afterSet = 
"postSetAlternateExchange" )
@@ -956,6 +957,6 @@ public abstract class AbstractExchange<T
     public void authorisePublish(final SecurityToken token, final Map<String, 
Object> arguments)
             throws AccessControlException
     {
-        authorise(token, Operation.ACTION("publish"), arguments);
+        authorise(token, PUBLISH_ACTION, arguments);
     }
 }

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java?rev=1764339&r1=1764338&r2=1764339&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
 Tue Oct 11 20:15:47 2016
@@ -42,6 +42,7 @@ import org.apache.qpid.server.util.Actio
 public class DefaultDestination implements MessageDestination, 
PermissionedObject
 {
 
+    private static final Operation PUBLISH_ACTION = 
Operation.ACTION("publish");
     private final AccessControl _accessControl;
     private VirtualHost<?> _virtualHost;
 
@@ -71,7 +72,7 @@ public class DefaultDestination implemen
 
         if(_accessControl != null)
         {
-            Result result = _accessControl.authorise(token, 
Operation.ACTION("publish"), this, arguments);
+            Result result = _accessControl.authorise(token, PUBLISH_ACTION, 
this, arguments);
             if (result == Result.DEFER)
             {
                 result = _accessControl.getDefault();

Modified: 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java?rev=1764339&r1=1764338&r2=1764339&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
 (original)
+++ 
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
 Tue Oct 11 20:15:47 2016
@@ -141,6 +141,7 @@ public abstract class AbstractQueue<X ex
 
     private static final long INITIAL_TARGET_QUEUE_SIZE = 102400l;
     private static final String UTF8 = StandardCharsets.UTF_8.name();
+    private static final Operation PUBLISH_ACTION = 
Operation.ACTION("publish");
 
     private final VirtualHost<?> _virtualHost;
     private final DeletedChildListener _deletedChildListener = new 
DeletedChildListener();
@@ -3505,7 +3506,7 @@ public abstract class AbstractQueue<X ex
     public void authorisePublish(final SecurityToken token, final Map<String, 
Object> arguments)
             throws AccessControlException
     {
-        authorise(token, Operation.ACTION("publish"), arguments);
+        authorise(token, PUBLISH_ACTION, arguments);
     }
 
     private class DeletedChildListener implements ConfigurationChangeListener

Modified: 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java?rev=1764339&r1=1764338&r2=1764339&view=diff
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
 (original)
+++ 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
 Tue Oct 11 20:15:47 2016
@@ -225,6 +225,8 @@ public class AMQChannel
      */
     private boolean _logChannelFlowMessages = true;
 
+    private final CachedFrame _txCommitOkFrame;
+
     public AMQChannel(AMQPConnection_0_8 connection, int channelId, final 
MessageStore messageStore)
     {
         _creditManager = new Pre0_10CreditManager(0l,0l, connection);
@@ -252,6 +254,10 @@ public class AMQChannel
         // by default the session is non-transactional
         _transaction = new AsyncAutoCommitTransaction(_messageStore, this);
 
+        MethodRegistry methodRegistry = _connection.getMethodRegistry();
+        AMQMethodBody responseBody = methodRegistry.createTxCommitOkBody();
+        _txCommitOkFrame = new 
CachedFrame(responseBody.generateFrame(_channelId));
+
         _clientDeliveryMethod = connection.createDeliveryMethod(_channelId);
 
         AccessController.doPrivileged((new PrivilegedAction<Object>()
@@ -3646,9 +3652,7 @@ public class AMQChannel
             @Override
             public void run()
             {
-                MethodRegistry methodRegistry = 
_connection.getMethodRegistry();
-                AMQMethodBody responseBody = 
methodRegistry.createTxCommitOkBody();
-                _connection.writeFrame(responseBody.generateFrame(_channelId));
+                _connection.writeFrame(_txCommitOkFrame);
             }
         }, true);
 

Added: 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/CachedFrame.java
URL: 
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/CachedFrame.java?rev=1764339&view=auto
==============================================================================
--- 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/CachedFrame.java
 (added)
+++ 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/CachedFrame.java
 Tue Oct 11 20:15:47 2016
@@ -0,0 +1,98 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.protocol.v0_8;
+
+import org.apache.qpid.bytebuffer.QpidByteBuffer;
+import org.apache.qpid.framing.AMQDataBlock;
+import org.apache.qpid.transport.ByteBufferSender;
+
+class CachedFrame extends AMQDataBlock
+{
+    private final String _toString;
+    private final QpidByteBuffer _buffer;
+    private final long _size;
+
+    CachedFrame(AMQDataBlock original)
+    {
+        _toString = original.toString();
+        _size = original.getSize();
+        _buffer = QpidByteBuffer.allocate(true, (int)_size);
+        original.writePayload(new BufferWriterSender(_buffer));
+        _buffer.flip();
+    }
+
+    @Override
+    public long getSize()
+    {
+        return _size;
+    }
+
+    @Override
+    public long writePayload(final ByteBufferSender sender)
+    {
+        QpidByteBuffer dup = _buffer.duplicate();
+        sender.send(dup);
+        dup.dispose();
+        return _size;
+    }
+
+    @Override
+    public String toString()
+    {
+        return _toString;
+    }
+
+    private static class BufferWriterSender implements ByteBufferSender
+    {
+        private final QpidByteBuffer _buffer;
+
+        BufferWriterSender(final QpidByteBuffer buffer)
+        {
+            _buffer = buffer;
+        }
+
+        @Override
+        public boolean isDirectBufferPreferred()
+        {
+            return true;
+        }
+
+        @Override
+        public void send(final QpidByteBuffer msg)
+        {
+            QpidByteBuffer dup = msg.duplicate();
+            _buffer.put(dup);
+            dup.dispose();
+        }
+
+        @Override
+        public void flush()
+        {
+
+        }
+
+        @Override
+        public void close()
+        {
+
+        }
+    }
+}

Propchange: 
qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/CachedFrame.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to