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