You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2012/08/27 17:40:45 UTC
svn commit: r1377715 [1/12] - in /qpid/branches/asyncstore: ./ bin/ cpp/
cpp/docs/api/ cpp/examples/old_api/tradedemo/ cpp/include/qmf/engine/
cpp/include/qpid/client/ cpp/src/ cpp/src/qmf/engine/ cpp/src/qpid/acl/
cpp/src/qpid/asyncStore/ cpp/src/qpid...
Author: kpvdr
Date: Mon Aug 27 15:40:33 2012
New Revision: 1377715
URL: http://svn.apache.org/viewvc?rev=1377715&view=rev
Log:
QPID-3858: Updated code to include recent refactoring by Gordon (gsim) - see QPID-4178.
Added:
qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.cpp
qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.h
qpid/branches/asyncstore/cpp/src/qpid/broker/IndexedDeque.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/IndexedDeque.h
qpid/branches/asyncstore/cpp/src/qpid/broker/LossyQueue.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/LossyQueue.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/LossyQueue.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/LossyQueue.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Lvq.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/Lvq.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Lvq.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/Lvq.h
qpid/branches/asyncstore/cpp/src/qpid/broker/MapHandler.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/MapHandler.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueCursor.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueCursor.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueCursor.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueCursor.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueDepth.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueDepth.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueDepth.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueDepth.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueFactory.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueFactory.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueFactory.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueFactory.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueSettings.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueSettings.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/QueueSettings.h
qpid/branches/asyncstore/cpp/src/qpid/broker/amqp_0_10/
- copied from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/
qpid/branches/asyncstore/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h
qpid/branches/asyncstore/cpp/src/tests/QueueDepth.cpp
- copied unchanged from r1375508, qpid/trunk/qpid/cpp/src/tests/QueueDepth.cpp
qpid/branches/asyncstore/java/amqp-1-0-client-jms/README.txt
- copied unchanged from r1375508, qpid/trunk/qpid/java/amqp-1-0-client-jms/README.txt
qpid/branches/asyncstore/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
- copied unchanged from r1375508, qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java
- copied unchanged from r1375508, qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java
qpid/branches/asyncstore/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogActorTest.java
- copied unchanged from r1375508, qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/ManagementLogActorTest.java
qpid/branches/asyncstore/java/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
- copied unchanged from r1375508, qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/configuration/CommonProperties.java
qpid/branches/asyncstore/java/lib/poms/je-5.0.58.xml
- copied unchanged from r1375508, qpid/trunk/qpid/java/lib/poms/je-5.0.58.xml
qpid/branches/asyncstore/java/perftests/etc/chartdefs/1021-AcknowledgementModes-Persistent.chartdef
- copied unchanged from r1375508, qpid/trunk/qpid/java/perftests/etc/chartdefs/1021-AcknowledgementModes-Persistent.chartdef
qpid/branches/asyncstore/java/perftests/etc/chartdefs/1022-AcknowledgementModes-Transient.chartdef
- copied unchanged from r1375508, qpid/trunk/qpid/java/perftests/etc/chartdefs/1022-AcknowledgementModes-Transient.chartdef
Removed:
qpid/branches/asyncstore/cpp/src/cluster.cmake
qpid/branches/asyncstore/cpp/src/cluster.mk
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueEvents.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueEvents.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueuePolicy.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueuePolicy.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Cluster.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Cluster.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ClusterMap.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/ClusterMap.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ClusterPlugin.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/ClusterSettings.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ClusterTimer.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/ClusterTimer.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Connection.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Connection.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ConnectionCodec.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/ConnectionCodec.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Cpg.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Cpg.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/CredentialsExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/CredentialsExchange.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Decoder.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Decoder.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Dispatchable.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ErrorCheck.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/ErrorCheck.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Event.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Event.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/EventFrame.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/EventFrame.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ExpiryPolicy.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/ExpiryPolicy.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/FailoverExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/FailoverExchange.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/InitialStatusMap.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/InitialStatusMap.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/LockedConnectionMap.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/McastFrameHandler.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/MemberSet.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/MemberSet.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Multicaster.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Multicaster.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/NoOpConnectionOutputHandler.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Numbering.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/OutputInterceptor.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/OutputInterceptor.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/PollableQueue.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/PollerDispatch.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/PollerDispatch.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/ProxyInputHandler.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Quorum.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Quorum_cman.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/Quorum_cman.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/Quorum_null.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/RetractClient.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/RetractClient.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/SecureConnectionFactory.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/SecureConnectionFactory.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/StoreStatus.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/StoreStatus.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateClient.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateClient.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateDataExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateDataExchange.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateExchange.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/UpdateReceiver.h
qpid/branches/asyncstore/cpp/src/qpid/cluster/WatchDogPlugin.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/management-schema.xml
qpid/branches/asyncstore/cpp/src/qpid/cluster/qpidd_watchdog.cpp
qpid/branches/asyncstore/cpp/src/qpid/cluster/types.h
qpid/branches/asyncstore/cpp/src/qpid/replication/ReplicatingEventListener.cpp
qpid/branches/asyncstore/cpp/src/qpid/replication/ReplicatingEventListener.h
qpid/branches/asyncstore/cpp/src/qpid/replication/ReplicationExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/replication/ReplicationExchange.h
qpid/branches/asyncstore/cpp/src/qpid/replication/constants.h
qpid/branches/asyncstore/cpp/src/replication.mk
qpid/branches/asyncstore/cpp/src/tests/MessageBuilderTest.cpp
qpid/branches/asyncstore/cpp/src/tests/QueueEvents.cpp
qpid/branches/asyncstore/cpp/src/tests/ReplicationTest.cpp
qpid/branches/asyncstore/cpp/src/tests/TxPublishTest.cpp
qpid/branches/asyncstore/cpp/src/tests/cluster.cmake
qpid/branches/asyncstore/cpp/src/tests/cluster.mk
qpid/branches/asyncstore/java/client/test/
qpid/branches/asyncstore/java/common/src/main/java/org/apache/qpid/transport/ProtocolViolationException.java
qpid/branches/asyncstore/java/lib/poms/je-5.0.55.xml
qpid/branches/asyncstore/java/perftests/etc/chartdefs/1021-AcknowledgementModes-AutoAck.chartdef
qpid/branches/asyncstore/java/perftests/etc/chartdefs/1022-AcknowledgementModes-Transacted.chartdef
qpid/branches/asyncstore/java/systests/src/main/java/org/apache/qpid/server/queue/PersistentTestManual.java
Modified:
qpid/branches/asyncstore/ (props changed)
qpid/branches/asyncstore/bin/release.sh
qpid/branches/asyncstore/cpp/CMakeLists.txt
qpid/branches/asyncstore/cpp/configure.ac
qpid/branches/asyncstore/cpp/docs/api/ (props changed)
qpid/branches/asyncstore/cpp/examples/old_api/tradedemo/tradedemo_topic_publisher.vcproj (props changed)
qpid/branches/asyncstore/cpp/include/qmf/engine/Agent.h (props changed)
qpid/branches/asyncstore/cpp/include/qmf/engine/Console.h (props changed)
qpid/branches/asyncstore/cpp/include/qpid/client/SubscriptionManager.h
qpid/branches/asyncstore/cpp/src/ (props changed)
qpid/branches/asyncstore/cpp/src/CMakeLists.txt (contents, props changed)
qpid/branches/asyncstore/cpp/src/Makefile.am
qpid/branches/asyncstore/cpp/src/asyncstore.cmake
qpid/branches/asyncstore/cpp/src/qmf/engine/Agent.cpp (props changed)
qpid/branches/asyncstore/cpp/src/qpid/acl/ (props changed)
qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.cpp
qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.h
qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.cpp
qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.h
qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.cpp
qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.h
qpid/branches/asyncstore/cpp/src/qpid/acl/AclReader.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/ (props changed)
qpid/branches/asyncstore/cpp/src/qpid/broker/AclModule.h
qpid/branches/asyncstore/cpp/src/qpid/broker/AsyncCompletion.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Connection.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Consumer.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Deliverable.h
qpid/branches/asyncstore/cpp/src/qpid/broker/DeliverableMessage.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/DeliverableMessage.h
qpid/branches/asyncstore/cpp/src/qpid/broker/DeliveryAdapter.h
qpid/branches/asyncstore/cpp/src/qpid/broker/DeliveryRecord.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/DeliveryRecord.h
qpid/branches/asyncstore/cpp/src/qpid/broker/DtxAck.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Exchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Exchange.h
qpid/branches/asyncstore/cpp/src/qpid/broker/ExpiryPolicy.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/ExpiryPolicy.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Fairshare.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Fairshare.h
qpid/branches/asyncstore/cpp/src/qpid/broker/FifoDistributor.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/FifoDistributor.h
qpid/branches/asyncstore/cpp/src/qpid/broker/HeadersExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/HeadersExchange.h
qpid/branches/asyncstore/cpp/src/qpid/broker/LegacyLVQ.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/LegacyLVQ.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Link.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/LinkRegistry.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/LinkRegistry.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Message.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Message.h
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageBuilder.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageBuilder.h
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageDeque.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageDeque.h
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageDistributor.h
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageGroupManager.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageGroupManager.h
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageMap.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/MessageMap.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Messages.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Persistable.h
qpid/branches/asyncstore/cpp/src/qpid/broker/PersistableMessage.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/PersistableMessage.h
qpid/branches/asyncstore/cpp/src/qpid/broker/PriorityQueue.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/PriorityQueue.h
qpid/branches/asyncstore/cpp/src/qpid/broker/Queue.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/Queue.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueAsyncContext.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueAsyncContext.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueFlowLimit.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueFlowLimit.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueObserver.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueRegistry.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/QueueRegistry.h
qpid/branches/asyncstore/cpp/src/qpid/broker/QueuedMessage.h
qpid/branches/asyncstore/cpp/src/qpid/broker/RecoveredDequeue.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/RecoveredDequeue.h
qpid/branches/asyncstore/cpp/src/qpid/broker/RecoveredEnqueue.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/RecoveredEnqueue.h
qpid/branches/asyncstore/cpp/src/qpid/broker/RecoveryManagerImpl.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SemanticState.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SemanticState.h
qpid/branches/asyncstore/cpp/src/qpid/broker/SessionAdapter.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SessionHandler.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SessionHandler.h
qpid/branches/asyncstore/cpp/src/qpid/broker/SessionState.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SessionState.h
qpid/branches/asyncstore/cpp/src/qpid/broker/SimpleMessage.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SimpleMessage.h
qpid/branches/asyncstore/cpp/src/qpid/broker/SimpleQueue.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/SimpleQueuedMessage.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/ThresholdAlerts.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/ThresholdAlerts.h
qpid/branches/asyncstore/cpp/src/qpid/broker/TxAccept.h
qpid/branches/asyncstore/cpp/src/qpid/broker/TxBuffer.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/TxBuffer.h
qpid/branches/asyncstore/cpp/src/qpid/broker/TxOp.h
qpid/branches/asyncstore/cpp/src/qpid/broker/TxOpVisitor.h
qpid/branches/asyncstore/cpp/src/qpid/broker/TxPublish.cpp
qpid/branches/asyncstore/cpp/src/qpid/broker/TxPublish.h
qpid/branches/asyncstore/cpp/src/qpid/broker/windows/SslProtocolFactory.cpp
qpid/branches/asyncstore/cpp/src/qpid/client/SslConnector.cpp
qpid/branches/asyncstore/cpp/src/qpid/client/SubscriptionManagerImpl.cpp
qpid/branches/asyncstore/cpp/src/qpid/client/TCPConnector.cpp
qpid/branches/asyncstore/cpp/src/qpid/client/TCPConnector.h
qpid/branches/asyncstore/cpp/src/qpid/ha/Backup.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/Backup.h
qpid/branches/asyncstore/cpp/src/qpid/ha/BackupConnectionExcluder.h
qpid/branches/asyncstore/cpp/src/qpid/ha/BrokerReplicator.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/ConnectionObserver.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/ConnectionObserver.h
qpid/branches/asyncstore/cpp/src/qpid/ha/HaBroker.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/HaBroker.h
qpid/branches/asyncstore/cpp/src/qpid/ha/Membership.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/Membership.h
qpid/branches/asyncstore/cpp/src/qpid/ha/Primary.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/QueueGuard.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/QueueGuard.h
qpid/branches/asyncstore/cpp/src/qpid/ha/QueueReplicator.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/RemoteBackup.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/ReplicatingSubscription.cpp
qpid/branches/asyncstore/cpp/src/qpid/ha/ReplicatingSubscription.h
qpid/branches/asyncstore/cpp/src/qpid/ha/ReplicationTest.cpp
qpid/branches/asyncstore/cpp/src/qpid/management/ManagementAgent.cpp (contents, props changed)
qpid/branches/asyncstore/cpp/src/qpid/management/ManagementAgent.h (props changed)
qpid/branches/asyncstore/cpp/src/qpid/management/ManagementDirectExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/management/ManagementTopicExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/store/MessageStorePlugin.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/AsynchIO.h
qpid/branches/asyncstore/cpp/src/qpid/sys/AsynchIOHandler.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/AsynchIOHandler.h
qpid/branches/asyncstore/cpp/src/qpid/sys/SslPlugin.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/TCPIOPlugin.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/epoll/EpollPoller.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/posix/AsynchIO.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/posix/SystemInfo.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/ssl/SslHandler.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/ssl/SslHandler.h
qpid/branches/asyncstore/cpp/src/qpid/sys/ssl/SslIo.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/ssl/SslIo.h
qpid/branches/asyncstore/cpp/src/qpid/sys/windows/AsynchIO.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/windows/SslAsynchIO.cpp
qpid/branches/asyncstore/cpp/src/qpid/sys/windows/SslAsynchIO.h
qpid/branches/asyncstore/cpp/src/qpid/sys/windows/Time.cpp
qpid/branches/asyncstore/cpp/src/qpid/xml/XmlExchange.cpp
qpid/branches/asyncstore/cpp/src/qpid/xml/XmlExchange.h
qpid/branches/asyncstore/cpp/src/tests/ (props changed)
qpid/branches/asyncstore/cpp/src/tests/CMakeLists.txt
qpid/branches/asyncstore/cpp/src/tests/ClientSessionTest.cpp
qpid/branches/asyncstore/cpp/src/tests/DeliveryRecordTest.cpp
qpid/branches/asyncstore/cpp/src/tests/ExchangeTest.cpp
qpid/branches/asyncstore/cpp/src/tests/Makefile.am
qpid/branches/asyncstore/cpp/src/tests/MessageTest.cpp
qpid/branches/asyncstore/cpp/src/tests/MessageUtils.h
qpid/branches/asyncstore/cpp/src/tests/QueueFlowLimitTest.cpp
qpid/branches/asyncstore/cpp/src/tests/QueuePolicyTest.cpp
qpid/branches/asyncstore/cpp/src/tests/QueueRegistryTest.cpp
qpid/branches/asyncstore/cpp/src/tests/QueueTest.cpp
qpid/branches/asyncstore/cpp/src/tests/TxMocks.h
qpid/branches/asyncstore/cpp/src/tests/acl.py
qpid/branches/asyncstore/cpp/src/tests/cluster_tests.py (props changed)
qpid/branches/asyncstore/cpp/src/tests/ha_tests.py
qpid/branches/asyncstore/cpp/src/tests/sasl.mk
qpid/branches/asyncstore/cpp/src/tests/storePerftools/asyncPerf/MessageProducer.cpp
qpid/branches/asyncstore/cpp/src/tests/test_store.cpp
qpid/branches/asyncstore/doc/book/src/cpp-broker/.gitignore
qpid/branches/asyncstore/doc/book/src/java-broker/HA-Guide.xml
qpid/branches/asyncstore/doc/book/src/java-broker/images/HA-2N-Key.svg
qpid/branches/asyncstore/doc/book/src/java-broker/images/HA-2N-MasterFail.svg
qpid/branches/asyncstore/doc/book/src/java-broker/images/HA-2N-NetworkPartition.svg
qpid/branches/asyncstore/doc/book/src/java-broker/images/HA-2N-Normal.svg
qpid/branches/asyncstore/doc/book/src/java-broker/images/HA-2N-ReplicaFail.svg
qpid/branches/asyncstore/doc/book/src/java-broker/images/HA-2N-SplitBrain.svg
qpid/branches/asyncstore/doc/book/src/programming/Programming-In-Apache-Qpid-Book.xml
qpid/branches/asyncstore/extras/qmf/src/py/qmf/console.py
qpid/branches/asyncstore/java/ (props changed)
qpid/branches/asyncstore/java/.gitignore
qpid/branches/asyncstore/java/amqp-1-0-client/ (props changed)
qpid/branches/asyncstore/java/amqp-1-0-client-jms/ (props changed)
qpid/branches/asyncstore/java/amqp-1-0-client-jms/build.xml
qpid/branches/asyncstore/java/amqp-1-0-common/ (props changed)
qpid/branches/asyncstore/java/broker/ (props changed)
qpid/branches/asyncstore/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureServlet.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/main/java/resources/showBroker.html
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/AuthenticationProviderRestTest.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeRestTest.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/PortRestTest.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslRestTest.java
qpid/branches/asyncstore/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/UserRestTest.java
qpid/branches/asyncstore/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/MBeanInvocationHandlerImpl.java
qpid/branches/asyncstore/java/broker/bin/ (props changed)
qpid/branches/asyncstore/java/broker/etc/broker_example.acl
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/logging/actors/ManagementActor.java
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/management/ (props changed)
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_1_0.java (props changed)
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/model/Model.java
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java (props changed)
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java (props changed)
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/ (props changed)
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/queue/ (props changed)
qpid/branches/asyncstore/java/broker/src/main/java/org/apache/qpid/server/virtualhost/ (props changed)
qpid/branches/asyncstore/java/broker/src/test/java/org/apache/qpid/server/logging/actors/ManagementActorTest.java
qpid/branches/asyncstore/java/build.deps
qpid/branches/asyncstore/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java
qpid/branches/asyncstore/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java
qpid/branches/asyncstore/java/client/src/test/java/org/apache/qpid/test/unit/client/BrokerDetails/BrokerDetailsTest.java
qpid/branches/asyncstore/java/common.xml
qpid/branches/asyncstore/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java
qpid/branches/asyncstore/java/common/src/main/java/org/apache/qpid/transport/Connection.java
qpid/branches/asyncstore/java/common/src/main/java/org/apache/qpid/transport/ConnectionSettings.java
qpid/branches/asyncstore/java/common/src/main/java/org/apache/qpid/transport/network/io/IoNetworkTransport.java
qpid/branches/asyncstore/java/ivy.retrieve.xml
qpid/branches/asyncstore/java/ivysettings.retrieve.xml
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ConfigurationManagement.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/LoggingManagement.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java (props changed)
qpid/branches/asyncstore/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java (props changed)
qpid/branches/asyncstore/java/perftests/etc/testdefs/Topic-AckModes.js
qpid/branches/asyncstore/java/perftests/etc/testdefs/Topic-NumberOfConsumers.js
qpid/branches/asyncstore/java/perftests/etc/testdefs/Topic-NumberOfTopics.js
qpid/branches/asyncstore/java/perftests/etc/testdefs/Topic-Persistence.js
qpid/branches/asyncstore/java/perftests/example/perftests.js
qpid/branches/asyncstore/java/perftests/src/main/java/test-utils.js
qpid/branches/asyncstore/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/writer/ChartWriter.java
qpid/branches/asyncstore/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/writer/expected-chart-summary.html (contents, props changed)
qpid/branches/asyncstore/java/systests/etc/log.properties
qpid/branches/asyncstore/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java (props changed)
qpid/branches/asyncstore/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java (props changed)
qpid/branches/asyncstore/java/test-profiles/ (props changed)
qpid/branches/asyncstore/java/test-profiles/CPPExcludes (props changed)
qpid/branches/asyncstore/java/test-profiles/Excludes (props changed)
qpid/branches/asyncstore/java/test-profiles/JavaBDBExcludes (props changed)
qpid/branches/asyncstore/java/test-profiles/JavaExcludes (props changed)
qpid/branches/asyncstore/java/test-profiles/JavaPre010Excludes (props changed)
qpid/branches/asyncstore/java/test-profiles/JavaTransientExcludes (props changed)
qpid/branches/asyncstore/java/test-profiles/XAExcludes (props changed)
qpid/branches/asyncstore/java/test-profiles/cpp.async.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/cpp.cluster.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/cpp.noprefetch.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/cpp.ssl.excludes (props changed)
qpid/branches/asyncstore/java/test-profiles/cpp.ssl.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/cpp.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-bdb-spawn.0-9-1.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-bdb.0-9-1.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-dby-spawn.0-9-1.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-dby.0-9-1.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-mms-spawn.0-10.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-mms-spawn.0-9-1.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/java-mms.0-9-1.testprofile (props changed)
qpid/branches/asyncstore/java/test-profiles/log4j-test.xml (props changed)
qpid/branches/asyncstore/java/test-profiles/python_tests/Java010PythonExcludes
qpid/branches/asyncstore/java/test-profiles/test-provider.properties (props changed)
qpid/branches/asyncstore/java/test-profiles/test_resources/ (props changed)
qpid/branches/asyncstore/java/test-profiles/testprofile.defaults (props changed)
qpid/branches/asyncstore/packaging/windows/ (props changed)
qpid/branches/asyncstore/python/ (props changed)
qpid/branches/asyncstore/python/examples/api/spout (props changed)
qpid/branches/asyncstore/python/qpid/concurrency.py (props changed)
qpid/branches/asyncstore/python/qpid/util.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_10/alternate_exchange.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_10/management.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_10/msg_groups.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_10/new_api.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_10/priority.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_10/threshold.py
qpid/branches/asyncstore/tests/src/py/qpid_tests/broker_0_9/queue.py (props changed)
Propchange: qpid/branches/asyncstore/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid:r1368652-1375508
Modified: qpid/branches/asyncstore/bin/release.sh
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/bin/release.sh?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/bin/release.sh (original)
+++ qpid/branches/asyncstore/bin/release.sh Mon Aug 27 15:40:33 2012
@@ -218,8 +218,12 @@ if [ "JAVA" == "$JAVA" ] ; then
cp qpid-${VER}/java/broker/release/*.tar.gz artifacts/qpid-java-broker-${VER}.tar.gz
cp qpid-${VER}/java/client/release/*.tar.gz artifacts/qpid-java-client-${VER}.tar.gz
+ cp qpid-${VER}/java/amqp-1-0-client-jms/release/*.tar.gz artifacts/qpid-java-amqp-1-0-client-jms-${VER}.tar.gz
# copy the Maven artifacts
+ cp -a qpid-${VER}/java/amqp-1-0-client/release/maven artifacts/
+ cp -a qpid-${VER}/java/amqp-1-0-client-jms/release/maven artifacts/
+ cp -a qpid-${VER}/java/amqp-1-0-common/release/maven artifacts/
cp -a qpid-${VER}/java/client/release/maven artifacts/
cp -a qpid-${VER}/java/common/release/maven artifacts/
cp -a qpid-${VER}/java/broker/release/maven artifacts/
Modified: qpid/branches/asyncstore/cpp/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/CMakeLists.txt?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/CMakeLists.txt (original)
+++ qpid/branches/asyncstore/cpp/CMakeLists.txt Mon Aug 27 15:40:33 2012
@@ -60,7 +60,6 @@ set (QPIDD_CONF_FILE ${QPID_INSTALL_CONF
"Name of the Qpid broker configuration file")
install(FILES LICENSE NOTICE DESTINATION ${CMAKE_INSTALL_PREFIX})
-install(FILES xml/cluster.xml DESTINATION ${QPID_INSTALL_DATADIR})
if (WIN32)
set (CMAKE_DEBUG_POSTFIX "d")
Modified: qpid/branches/asyncstore/cpp/configure.ac
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/configure.ac?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/configure.ac (original)
+++ qpid/branches/asyncstore/cpp/configure.ac Mon Aug 27 15:40:33 2012
@@ -256,54 +256,6 @@ AC_SUBST(DOWNLOAD_URL)
AC_CHECK_HEADERS([boost/shared_ptr.hpp uuid/uuid.h],,
AC_MSG_ERROR([Missing required header files.]))
-# Check for optional cluster requirements.
-tmp_LIBS=$LIBS
-tmp_LDFLAGS=$LDFLAGS
-LDFLAGS="$LDFLAGS -L/usr/lib/openais -L/usr/lib64/openais -L/usr/lib/corosync -L/usr/lib64/corosync"
-AC_CHECK_LIB([cpg],[cpg_local_get],[have_libcpg=yes],)
-AC_CHECK_HEADERS([openais/cpg.h corosync/cpg.h],[have_cpg_h=yes],)
-AC_ARG_WITH([cpg],
- [AS_HELP_STRING([--with-cpg], [Build with CPG support for clustering.])],
- [case "${withval}" in
- yes) # yes - require dependencies
- test x$have_libcpg = xyes || AC_MSG_ERROR([libcpg not found, install openais-devel or corosync-devel])
- test x$have_cpg_h = xyes || AC_MSG_ERROR([cpg.h not found, install openais-devel or corosync-devel])
- with_cpg=yes
- ;;
- no) with_cpg=no ;;
- *) AC_MSG_ERROR([Bad value ${withval} for --with-cpg option]) ;;
- esac],
- [ # not specified - use if present
- test x$have_libcpg = xyes -a x$have_cpg_h = xyes && with_cpg=yes
- ]
-)
-AM_CONDITIONAL([HAVE_LIBCPG], [test x$with_cpg = xyes])
-AC_SUBST(USE_CPG, [$with_cpg])
-
-# Clean up unnceccassary flags if we don't use clustering
-AS_IF([test ! x$with_cpg = xyes], [LDFLAGS=$tmp_LDFLAGS])
-
-AC_CHECK_LIB([cman],[cman_is_quorate],have_libcman=yes,)
-AC_CHECK_HEADERS([libcman.h],have_libcman_h=yes,)
-AC_ARG_WITH([libcman],
- [AS_HELP_STRING([--with-libcman], [Integration with libcman quorum service.])],
- [case "${withval}" in
- yes) # yes - require dependencies
- test x$have_libcman = xyes || AC_MSG_ERROR([libcman not found, install cman-devel or cmanlib-devel])
- test x$have_libcman_h = xyes || AC_MSG_ERROR([libcman.h not found, install cman-devel or cmanlib-devel])
- with_libcman=yes
- ;;
- no) with_libcman=no ;;
- *) AC_MSG_ERROR([Bad value ${withval} for --with-libcman option]) ;;
- esac],
- [ # not specified - use if present and we're using with_cpg
- test x$have_libcman = xyes -a x$have_libcman_h = xyes -a x$with_cpg = xyes && with_libcman=yes
- ]
-)
-AM_CONDITIONAL([HAVE_LIBCMAN], [test x$with_libcman = xyes])
-
-LIBS=$tmp_LIBS
-
# Setup --with-sasl/--without-sasl as arguments to configure
AC_ARG_WITH([sasl],
[AS_HELP_STRING([--with-sasl], [Build with SASL authentication support])],
Propchange: qpid/branches/asyncstore/cpp/docs/api/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/docs/api:r1368652-1375508
Propchange: qpid/branches/asyncstore/cpp/examples/old_api/tradedemo/tradedemo_topic_publisher.vcproj
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/examples/old_api/tradedemo/tradedemo_topic_publisher.vcproj:r1368652-1375508
Propchange: qpid/branches/asyncstore/cpp/include/qmf/engine/Agent.h
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/include/qmf/engine/Agent.h:r1368652-1375508
Propchange: qpid/branches/asyncstore/cpp/include/qmf/engine/Console.h
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/include/qmf/engine/Console.h:r1368652-1375508
Modified: qpid/branches/asyncstore/cpp/include/qpid/client/SubscriptionManager.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/include/qpid/client/SubscriptionManager.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/include/qpid/client/SubscriptionManager.h (original)
+++ qpid/branches/asyncstore/cpp/include/qpid/client/SubscriptionManager.h Mon Aug 27 15:40:33 2012
@@ -280,8 +280,8 @@ class QPID_CLIENT_CLASS_EXTERN Subscript
/** AutoCancel cancels a subscription in its destructor */
class AutoCancel {
public:
- AutoCancel(SubscriptionManager& sm_, const std::string& tag_) : sm(sm_), tag(tag_) {}
- ~AutoCancel() { sm.cancel(tag); }
+ AutoCancel(SubscriptionManager&, const std::string& tag);
+ ~AutoCancel();
private:
SubscriptionManager& sm;
std::string tag;
Propchange: qpid/branches/asyncstore/cpp/src/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/src:r1368652-1375508
Modified: qpid/branches/asyncstore/cpp/src/CMakeLists.txt
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/CMakeLists.txt?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/CMakeLists.txt (original)
+++ qpid/branches/asyncstore/cpp/src/CMakeLists.txt Mon Aug 27 15:40:33 2012
@@ -167,7 +167,7 @@ inherit_value ("winver_LEGAL_COPYRIGHT"
# check if we generate source as part of the build
-# - rubygen generates the amqp spec and clustering
+# - rubygen generates the amqp spec
# - managementgen generates the broker management code
#
# rubygen subdir is excluded from stable distributions
@@ -186,7 +186,7 @@ if (EXISTS ${AMQP_SPEC})
message(FATAL_ERROR "Can't locate python, needed to generate source files.")
endif (NOT PYTHON_EXECUTABLE)
- set(specs ${AMQP_SPEC} ${qpid-cpp_SOURCE_DIR}/xml/cluster.xml)
+ set(specs ${AMQP_SPEC})
set(regen_amqp OFF)
set(rgen_dir ${qpid-cpp_SOURCE_DIR}/rubygen)
file(GLOB_RECURSE rgen_progs ${rgen_dir}/*.rb)
@@ -207,7 +207,6 @@ execute_process(COMMAND ${RUBY_EXECUTABL
set(mgmt_specs ${AMQP_SPEC_DIR}/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/acl/management-schema.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/qpid/cluster/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/ha/management-schema.xml
)
set(mgen_dir ${qpid-cpp_SOURCE_DIR}/managementgen)
@@ -672,9 +671,6 @@ if (BUILD_HA)
COMPONENT ${QPID_COMPONENT_BROKER})
endif (BUILD_HA)
-# Check for optional cluster support requirements
-include (cluster.cmake)
-
# Check for optional RDMA support requirements
include (rdma.cmake)
@@ -1117,7 +1113,6 @@ set (qpidbroker_SOURCES
qpid/broker/Exchange.cpp
qpid/broker/ExpiryPolicy.cpp
qpid/broker/Fairshare.cpp
- qpid/broker/LegacyLVQ.cpp
qpid/broker/MessageDeque.cpp
qpid/broker/MessageMap.cpp
qpid/broker/PriorityQueue.cpp
@@ -1144,17 +1139,22 @@ set (qpidbroker_SOURCES
qpid/broker/HeadersExchange.cpp
qpid/broker/Link.cpp
qpid/broker/LinkRegistry.cpp
+ qpid/broker/LossyQueue.cpp
+ qpid/broker/Lvq.cpp
qpid/broker/Message.cpp
qpid/broker/MessageAdapter.cpp
qpid/broker/MessageBuilder.cpp
+ qpid/broker/MessageHandle.cpp
qpid/broker/MessageStoreModule.cpp
qpid/broker/NameGenerator.cpp
qpid/broker/NullMessageStore.cpp
qpid/broker/QueueBindings.cpp
qpid/broker/QueuedMessage.cpp
- qpid/broker/QueueEvents.cpp
- qpid/broker/QueuePolicy.cpp
+ qpid/broker/QueueCursor.cpp
+ qpid/broker/QueueDepth.cpp
+ qpid/broker/QueueFactory.cpp
qpid/broker/QueueRegistry.cpp
+ qpid/broker/QueueSettings.cpp
qpid/broker/QueueFlowLimit.cpp
qpid/broker/RecoveryManagerImpl.cpp
qpid/broker/RecoveredEnqueue.cpp
@@ -1177,8 +1177,8 @@ set (qpidbroker_SOURCES
qpid/broker/TopicExchange.cpp
qpid/broker/TxAccept.cpp
qpid/broker/TxBuffer.cpp
- qpid/broker/TxPublish.cpp
qpid/broker/Vhost.cpp
+ qpid/broker/amqp_0_10/MessageTransfer.cpp
qpid/management/ManagementAgent.cpp
qpid/management/ManagementDirectExchange.cpp
qpid/management/ManagementTopicExchange.cpp
@@ -1433,45 +1433,6 @@ install (FILES ${qmfconsole_HEADERS}
COMPONENT ${QPID_COMPONENT_QMF})
install_pdb (qmfconsole ${QPID_COMPONENT_QMF})
-# A queue event listener plugin that creates messages on a replication
-# queue corresponding to enqueue and dequeue events:
-set (replicating_listener_SOURCES
- qpid/replication/constants.h
- qpid/replication/ReplicatingEventListener.cpp
- qpid/replication/ReplicatingEventListener.h
- )
-add_msvc_version (replicating_listener library dll)
-add_library (replicating_listener MODULE ${replicating_listener_SOURCES})
-target_link_libraries (replicating_listener qpidbroker ${Boost_PROGRAM_OPTIONS_LIBRARY})
-set_target_properties (replicating_listener PROPERTIES PREFIX "")
-if (CMAKE_COMPILER_IS_GNUCXX)
- set_target_properties(replicating_listener PROPERTIES
- LINK_FLAGS "${GCC_CATCH_UNDEFINED}")
-endif (CMAKE_COMPILER_IS_GNUCXX)
-install (TARGETS replicating_listener
- DESTINATION ${QPIDD_MODULE_DIR}
- COMPONENT ${QPID_COMPONENT_BROKER})
-
-# A custom exchange plugin that allows an exchange to be created that
-# can process the messages from a replication queue (populated on the
-# source system by the replicating listener plugin above) and take the
-# corresponding action on the local queues
-set (replication_exchange_SOURCES
- qpid/replication/constants.h
- qpid/replication/ReplicationExchange.cpp
- qpid/replication/ReplicationExchange.h
- )
-add_msvc_version (replication_exchange library dll)
-add_library (replication_exchange MODULE ${replication_exchange_SOURCES})
-target_link_libraries (replication_exchange qpidbroker)
-set_target_properties (replication_exchange PROPERTIES PREFIX "")
-if (CMAKE_COMPILER_IS_GNUCXX)
- set_target_properties(replication_exchange PROPERTIES
- LINK_FLAGS "${GCC_CATCH_UNDEFINED}")
-endif (CMAKE_COMPILER_IS_GNUCXX)
-install (TARGETS replication_exchange
- DESTINATION ${QPIDD_MODULE_DIR}
- COMPONENT ${QPID_COMPONENT_BROKER})
# This is only really needed until all the trunk builds (Linux, UNIX, Windows)
# are all on cmake only. This is because cmake builds always have a config.h
Propchange: qpid/branches/asyncstore/cpp/src/CMakeLists.txt
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/src/CMakeLists.txt:r1368652-1375508
Modified: qpid/branches/asyncstore/cpp/src/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/Makefile.am?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/Makefile.am (original)
+++ qpid/branches/asyncstore/cpp/src/Makefile.am Mon Aug 27 15:40:33 2012
@@ -85,7 +85,7 @@ if GENERATE
# AMQP_FINAL_XML is defined in ../configure.ac
amqp_0_10_xml=@AMQP_FINAL_XML@
-specs=$(amqp_0_10_xml) $(top_srcdir)/xml/cluster.xml
+specs=$(amqp_0_10_xml)
# Ruby generator.
rgen_dir=$(top_srcdir)/rubygen
@@ -104,7 +104,6 @@ $(srcdir)/rubygen.cmake: $(rgen_generato
mgen_dir=$(top_srcdir)/managementgen
mgen_xml=$(top_srcdir)/../specs/management-schema.xml \
$(srcdir)/qpid/acl/management-schema.xml \
- $(srcdir)/qpid/cluster/management-schema.xml \
$(srcdir)/qpid/ha/management-schema.xml
mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk \
-c $(srcdir)/managementgen.cmake -q -b -l -o qmf \
@@ -217,7 +216,6 @@ cmoduleexecdir=$(libdir)/qpid/client
dmoduleexec_LTLIBRARIES =
cmoduleexec_LTLIBRARIES =
-include cluster.mk
include ha.mk
include acl.mk
include qmf.mk
@@ -225,7 +223,6 @@ include qmfc.mk
if HAVE_XML
include xml.mk
endif
-include replication.mk
if RDMA
@@ -292,7 +289,6 @@ endif
EXTRA_DIST +=\
CMakeLists.txt \
- cluster.cmake \
config.h.cmake \
rdma.cmake \
ssl.cmake \
@@ -337,6 +333,7 @@ libqpidcommon_la_LIBADD = \
-lboost_program_options \
-lboost_filesystem \
-luuid \
+ -lpthread \
$(LIB_DLOPEN) \
$(LIB_CLOCK_GETTIME)
@@ -559,7 +556,6 @@ libqpidbroker_la_SOURCES = \
qpid/broker/Deliverable.h \
qpid/broker/DeliverableMessage.cpp \
qpid/broker/DeliverableMessage.h \
- qpid/broker/DeliveryAdapter.h \
qpid/broker/DeliveryId.h \
qpid/broker/DeliveryRecord.cpp \
qpid/broker/DeliveryRecord.h \
@@ -590,12 +586,14 @@ libqpidbroker_la_SOURCES = \
qpid/broker/HeadersExchange.cpp \
qpid/broker/HeadersExchange.h \
qpid/broker/AsyncCompletion.h \
- qpid/broker/LegacyLVQ.h \
- qpid/broker/LegacyLVQ.cpp \
+ qpid/broker/IndexedDeque.h \
qpid/broker/Link.cpp \
qpid/broker/Link.h \
qpid/broker/LinkRegistry.cpp \
qpid/broker/LinkRegistry.h \
+ qpid/broker/Lvq.h \
+ qpid/broker/Lvq.cpp \
+ qpid/broker/MapHandler.h \
qpid/broker/Message.cpp \
qpid/broker/Message.h \
qpid/broker/MessageAdapter.cpp \
@@ -630,19 +628,25 @@ libqpidbroker_la_SOURCES = \
qpid/broker/QueueBindings.h \
qpid/broker/QueueCleaner.cpp \
qpid/broker/QueueCleaner.h \
- qpid/broker/QueueEvents.cpp \
- qpid/broker/QueueEvents.h \
+ qpid/broker/QueueCursor.h \
+ qpid/broker/QueueCursor.cpp \
+ qpid/broker/QueueDepth.h \
+ qpid/broker/QueueDepth.cpp \
+ qpid/broker/QueueFactory.h \
+ qpid/broker/QueueFactory.cpp \
+ qpid/broker/QueueSettings.h \
+ qpid/broker/QueueSettings.cpp \
qpid/broker/QueueListeners.cpp \
qpid/broker/QueueListeners.h \
qpid/broker/QueueObserver.h \
- qpid/broker/QueuePolicy.cpp \
- qpid/broker/QueuePolicy.h \
qpid/broker/QueueRegistry.cpp \
qpid/broker/QueueRegistry.h \
qpid/broker/QueuedMessage.cpp \
qpid/broker/QueuedMessage.h \
qpid/broker/QueueFlowLimit.h \
qpid/broker/QueueFlowLimit.cpp \
+ qpid/broker/LossyQueue.h \
+ qpid/broker/LossyQueue.cpp \
qpid/broker/RecoverableConfig.h \
qpid/broker/RecoverableExchange.h \
qpid/broker/RecoverableMessage.h \
@@ -693,9 +697,6 @@ libqpidbroker_la_SOURCES = \
qpid/broker/TxBuffer.cpp \
qpid/broker/TxBuffer.h \
qpid/broker/TxOp.h \
- qpid/broker/TxOpVisitor.h \
- qpid/broker/TxPublish.cpp \
- qpid/broker/TxPublish.h \
qpid/broker/Vhost.cpp \
qpid/broker/Vhost.h \
qpid/broker/MessageDistributor.h \
@@ -703,6 +704,8 @@ libqpidbroker_la_SOURCES = \
qpid/broker/FifoDistributor.cpp \
qpid/broker/MessageGroupManager.cpp \
qpid/broker/MessageGroupManager.h \
+ qpid/broker/amqp_0_10/MessageTransfer.h \
+ qpid/broker/amqp_0_10/MessageTransfer.cpp \
qpid/management/ManagementAgent.cpp \
qpid/management/ManagementAgent.h \
qpid/management/ManagementDirectExchange.cpp \
Modified: qpid/branches/asyncstore/cpp/src/asyncstore.cmake
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/asyncstore.cmake?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/asyncstore.cmake (original)
+++ qpid/branches/asyncstore/cpp/src/asyncstore.cmake Mon Aug 27 15:40:33 2012
@@ -51,6 +51,7 @@ set (asyncStore_SOURCES
qpid/asyncStore/EventHandleImpl.cpp
qpid/asyncStore/MessageHandleImpl.cpp
qpid/asyncStore/OperationQueue.cpp
+ qpid/asyncStore/PersistableMessageContext.cpp
qpid/asyncStore/Plugin.cpp
qpid/asyncStore/QueueHandleImpl.cpp
qpid/asyncStore/RunState.cpp
Propchange: qpid/branches/asyncstore/cpp/src/qmf/engine/Agent.cpp
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/src/qmf/engine/Agent.cpp:r1368652-1375508
Propchange: qpid/branches/asyncstore/cpp/src/qpid/acl/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/src/qpid/acl:r1368652-1375508
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.cpp?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.cpp (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.cpp Mon Aug 27 15:40:33 2012
@@ -129,6 +129,13 @@ bool Acl::approveConnection(const qpid::
return connectionCounter->approveConnection(conn);
}
+
+void Acl::setUserId(const qpid::broker::Connection& connection, const std::string& username)
+{
+ connectionCounter->setUserId(connection, username);
+}
+
+
bool Acl::result(
const AclResult& aclreslt,
const std::string& id,
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.h (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/Acl.h Mon Aug 27 15:40:33 2012
@@ -94,6 +94,8 @@ public:
virtual bool approveConnection(const broker::Connection& connection);
+ virtual void setUserId(const broker::Connection& connection, const std::string& username);
+
virtual ~Acl();
private:
bool result(
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.cpp?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.cpp (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.cpp Mon Aug 27 15:40:33 2012
@@ -296,6 +296,47 @@ bool ConnectionCounter::approveConnectio
}
}
+
+//
+// setUserId
+// On cluster shadow connections, track a new user id for this connection.
+//
+void ConnectionCounter::setUserId(const broker::Connection& connection,
+ const std::string& username)
+{
+ Mutex::ScopedLock locker(dataLock);
+
+ connectCountsMap_t::iterator eRef = connectProgressMap.find(connection.getMgmtId());
+ if (eRef != connectProgressMap.end()) {
+ if ((*eRef).second == C_OPENED){
+ // Connection has been opened so that current user has been counted
+ if (connection.isShadow()) {
+ // This is a shadow connection and therefore receives userId changes
+ QPID_LOG(debug, "Changing User ID for cluster connection: "
+ << connection.getMgmtId() << ", old user:'" << connection.getUserId()
+ << "', new user:'" << username << "'");
+
+ // Decrement user in-use count for old userId
+ releaseLH(connectByNameMap,
+ connection.getUserId(),
+ nameLimit);
+ // Increment user in-use count for new userId
+ (void) countConnectionLH(connectByNameMap, username, nameLimit, false);
+ } else {
+ QPID_LOG(warning, "Changing User ID for non-cluster connections is not supported: "
+ << connection.getMgmtId() << ", old user " << connection.getUserId()
+ << ", new user " << username);
+ }
+ } else {
+ // connection exists but has not been opened.
+ // setUserId is called in normal course. The user gets counted when connection is opened.
+ }
+ } else {
+ // Connection does not exist.
+ }
+}
+
+
//
// getClientIp - given a connection's mgmtId return the client host part.
//
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.h (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/AclConnectionCounter.h Mon Aug 27 15:40:33 2012
@@ -94,6 +94,7 @@ public:
// Connection counting
bool approveConnection(const broker::Connection& conn);
+ void setUserId(const broker::Connection& connection, const std::string& username);
};
}} // namespace qpid::ha
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.cpp?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.cpp (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.cpp Mon Aug 27 15:40:33 2012
@@ -25,6 +25,13 @@ namespace qpid {
namespace acl {
//
+ // Instantiate the substitution keyword string
+ //
+ const std::string AclData::USER_SUBSTITUTION_KEYWORD = "${user}";
+ const std::string AclData::DOMAIN_SUBSTITUTION_KEYWORD = "${domain}";
+ const std::string AclData::USERDOMAIN_SUBSTITUTION_KEYWORD = "${userdomain}";
+
+ //
// constructor
//
AclData::AclData():
@@ -147,7 +154,17 @@ namespace acl {
// the calling args and not in the param map.
if (rulePropMapItr->first == acl::SPECPROP_NAME)
{
- if (matchProp(rulePropMapItr->second, name))
+ // substitute user name into object name
+ bool result;
+ if (rsItr->ruleHasUserSub[PROP_NAME]) {
+ std::string sName(rulePropMapItr->second);
+ substituteUserId(sName, id);
+ result = matchProp(sName, name);
+ } else {
+ result = matchProp(rulePropMapItr->second, name);
+ }
+
+ if (result)
{
QPID_LOG(debug, "ACL: lookup name '" << name
<< "' matched with rule name '"
@@ -222,7 +239,20 @@ namespace acl {
break;
default:
- if (matchProp(rulePropMapItr->second, lookupParamItr->second))
+ bool result;
+ if ((SPECPROP_ALTERNATE == rulePropMapItr->first && rsItr->ruleHasUserSub[PROP_ALTERNATE]) ||
+ (SPECPROP_ROUTINGKEY == rulePropMapItr->first && rsItr->ruleHasUserSub[PROP_ROUTINGKEY]) ||
+ (SPECPROP_QUEUENAME == rulePropMapItr->first && rsItr->ruleHasUserSub[PROP_QUEUENAME]))
+ {
+ // These properties are allowed to have username substitution
+ std::string sName(rulePropMapItr->second);
+ substituteUserId(sName, id);
+ result = matchProp(sName, lookupParamItr->second);
+ } else {
+ result = matchProp(rulePropMapItr->second, lookupParamItr->second);
+ }
+
+ if (result)
{
QPID_LOG(debug, "ACL: the pair("
<< AclHelper::getPropertyStr(lookupParamItr->first)
@@ -346,7 +376,18 @@ namespace acl {
bool match =true;
if (rsItr->pubExchNameInRule)
{
- if (matchProp(rsItr->pubExchName, name))
+ // substitute user name into object name
+ bool result;
+
+ if (rsItr->ruleHasUserSub[PROP_NAME]) {
+ std::string sName(rsItr->pubExchName);
+ substituteUserId(sName, id);
+ result = matchProp(sName, name);
+ } else {
+ result = matchProp(rsItr->pubExchName, name);
+ }
+
+ if (result)
{
QPID_LOG(debug, "ACL: Rule: " << rsItr->rawRuleNum << " lookup exchange name '"
<< name << "' matched with rule name '"
@@ -364,18 +405,40 @@ namespace acl {
if (match && rsItr->pubRoutingKeyInRule)
{
- if (rsItr->matchRoutingKey(routingKey))
+ if ((routingKey.find(USER_SUBSTITUTION_KEYWORD, 0) != std::string::npos) ||
+ (routingKey.find(DOMAIN_SUBSTITUTION_KEYWORD, 0) != std::string::npos) ||
+ (routingKey.find(USERDOMAIN_SUBSTITUTION_KEYWORD, 0) != std::string::npos))
{
- QPID_LOG(debug, "ACL: Rule: " << rsItr->rawRuleNum << " lookup key name '"
- << routingKey << "' matched with rule routing key '"
- << rsItr->pubRoutingKey << "'");
+ // The user is not allowed to present a routing key with the substitution key in it
+ QPID_LOG(debug, "ACL: Rule: " << rsItr->rawRuleNum <<
+ " User-specified routing key has substitution wildcard:" << routingKey
+ << ". Rule match prohibited.");
+ match = false;
}
else
{
- QPID_LOG(debug, "ACL: Rule: " << rsItr->rawRuleNum << " lookup key name '"
- << routingKey << "' did not match with rule routing key '"
- << rsItr->pubRoutingKey << "'");
- match = false;
+ bool result;
+ if (rsItr->ruleHasUserSub[PROP_ROUTINGKEY]) {
+ std::string sKey(routingKey);
+ substituteKeywords(sKey, id);
+ result = rsItr->matchRoutingKey(sKey);
+ } else {
+ result = rsItr->matchRoutingKey(routingKey);
+ }
+
+ if (result)
+ {
+ QPID_LOG(debug, "ACL: Rule: " << rsItr->rawRuleNum << " lookup key name '"
+ << routingKey << "' matched with rule routing key '"
+ << rsItr->pubRoutingKey << "'");
+ }
+ else
+ {
+ QPID_LOG(debug, "ACL: Rule: " << rsItr->rawRuleNum << " lookup key name '"
+ << routingKey << "' did not match with rule routing key '"
+ << rsItr->pubRoutingKey << "'");
+ match = false;
+ }
}
}
@@ -501,4 +564,102 @@ namespace acl {
return true;
}
+ const std::string DOMAIN_SEPARATOR("@");
+ const std::string PERIOD(".");
+ const std::string UNDERSCORE("_");
+ //
+ // substituteString
+ // Given a name string from an Acl rule, substitute the replacement into it
+ // wherever the placeholder directs.
+ //
+ void AclData::substituteString(std::string& targetString,
+ const std::string& placeholder,
+ const std::string& replacement)
+ {
+ assert (!placeholder.empty());
+ if (placeholder.empty())
+ return;
+ size_t start_pos(0);
+ while((start_pos = targetString.find(placeholder, start_pos)) != std::string::npos)
+ {
+ targetString.replace(start_pos, placeholder.length(), replacement);
+ start_pos += replacement.length();
+ }
+ }
+
+
+ //
+ // normalizeUserId
+ // Given a name string return it in a form usable as topic keys:
+ // change "@" and "." to "_".
+ //
+ std::string AclData::normalizeUserId(const std::string& userId)
+ {
+ std::string normalId(userId);
+ substituteString(normalId, DOMAIN_SEPARATOR, UNDERSCORE);
+ substituteString(normalId, PERIOD, UNDERSCORE);
+ return normalId;
+ }
+
+
+ //
+ // substituteUserId
+ // Given an Acl rule and an authenticated userId
+ // do the keyword substitutions on the rule.
+ //
+ void AclData::AclData::substituteUserId(std::string& ruleString,
+ const std::string& userId)
+ {
+ size_t locDomSeparator(0);
+ std::string user("");
+ std::string domain("");
+ std::string userdomain = normalizeUserId(userId);
+
+ locDomSeparator = userId.find(DOMAIN_SEPARATOR);
+ if (std::string::npos == locDomSeparator) {
+ // "@" not found. There's just a user name
+ user = normalizeUserId(userId);
+ } else {
+ // "@" found, split the names. Domain may be blank.
+ user = normalizeUserId(userId.substr(0,locDomSeparator));
+ domain = normalizeUserId(userId.substr(locDomSeparator+1));
+ }
+
+ substituteString(ruleString, USER_SUBSTITUTION_KEYWORD, user);
+ substituteString(ruleString, DOMAIN_SUBSTITUTION_KEYWORD, domain);
+ substituteString(ruleString, USERDOMAIN_SUBSTITUTION_KEYWORD, userdomain);
+ }
+
+
+ //
+ // substituteKeywords
+ // Given an Acl rule and an authenticated userId
+ // do reverse keyword substitutions on the rule.
+ // That is, replace the normalized name in the rule string with
+ // the keyword that represents it. This stragegy is used for
+ // topic key lookups where the keyword string proper is in the
+ // topic key search tree.
+ //
+ void AclData::AclData::substituteKeywords(std::string& ruleString,
+ const std::string& userId)
+ {
+ size_t locDomSeparator(0);
+ std::string user("");
+ std::string domain("");
+ std::string userdomain = normalizeUserId(userId);
+
+ locDomSeparator = userId.find(DOMAIN_SEPARATOR);
+ if (std::string::npos == locDomSeparator) {
+ // "@" not found. There's just a user name
+ user = normalizeUserId(userId);
+ } else {
+ // "@" found, split the names
+ user = normalizeUserId(userId.substr(0,locDomSeparator));
+ domain = normalizeUserId(userId.substr(locDomSeparator+1));
+ }
+ std::string oRule(ruleString);
+ substituteString(ruleString, userdomain, USERDOMAIN_SUBSTITUTION_KEYWORD);
+ substituteString(ruleString, user, USER_SUBSTITUTION_KEYWORD);
+ substituteString(ruleString, domain, DOMAIN_SUBSTITUTION_KEYWORD);
+ }
}}
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.h (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/AclData.h Mon Aug 27 15:40:33 2012
@@ -62,6 +62,7 @@ public:
boost::shared_ptr<topicTester> pTTest;
bool pubExchNameInRule;
std::string pubExchName;
+ std::vector<bool> ruleHasUserSub;
Rule (int ruleNum, qpid::acl::AclResult res, specPropertyMap& p) :
rawRuleNum(ruleNum),
@@ -71,7 +72,8 @@ public:
pubRoutingKey(),
pTTest(boost::shared_ptr<topicTester>(new topicTester())),
pubExchNameInRule(false),
- pubExchName()
+ pubExchName(),
+ ruleHasUserSub(PROPERTYSIZE, false)
{}
@@ -132,6 +134,17 @@ public:
bool matchProp(const std::string & src, const std::string& src1);
void clear ();
+ static const std::string USER_SUBSTITUTION_KEYWORD;
+ static const std::string DOMAIN_SUBSTITUTION_KEYWORD;
+ static const std::string USERDOMAIN_SUBSTITUTION_KEYWORD;
+ void substituteString(std::string& targetString,
+ const std::string& placeholder,
+ const std::string& replacement);
+ std::string normalizeUserId(const std::string& userId);
+ void substituteUserId(std::string& ruleString,
+ const std::string& userId);
+ void substituteKeywords(std::string& ruleString,
+ const std::string& userId);
AclData();
virtual ~AclData();
Modified: qpid/branches/asyncstore/cpp/src/qpid/acl/AclReader.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/acl/AclReader.cpp?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/acl/AclReader.cpp (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/acl/AclReader.cpp Mon Aug 27 15:40:33 2012
@@ -103,6 +103,15 @@ namespace acl {
} else {
AclData::Rule rule(cnt, (*i)->res, (*i)->props);
+ // Record which properties have the user substitution string
+ for (pmCitr pItr=rule.props.begin(); pItr!=rule.props.end(); pItr++) {
+ if ((pItr->second.find(AclData::USER_SUBSTITUTION_KEYWORD, 0) != std::string::npos) ||
+ (pItr->second.find(AclData::DOMAIN_SUBSTITUTION_KEYWORD, 0) != std::string::npos) ||
+ (pItr->second.find(AclData::USERDOMAIN_SUBSTITUTION_KEYWORD, 0) != std::string::npos)) {
+ rule.ruleHasUserSub[pItr->first] = true;
+ }
+ }
+
// Action -> Object -> map<user -> set<Rule> >
std::ostringstream actionstr;
for (int acnt = ((*i)->actionAll ? 0 : (*i)->action);
Added: qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.cpp?rev=1377715&view=auto
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.cpp (added)
+++ qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.cpp Mon Aug 27 15:40:33 2012
@@ -0,0 +1,39 @@
+#include "PersistableMessageContext.h"
+
+namespace qpid {
+namespace asyncStore {
+
+PersistableMessageContext::PersistableMessageContext(qpid::broker::AsyncStore* store) : m_store(store) {}
+
+PersistableMessageContext::~PersistableMessageContext() {}
+
+void
+PersistableMessageContext::encode(qpid::framing::Buffer& /*buffer*/) const {}
+
+uint32_t
+PersistableMessageContext::encodedSize() const {
+ return 0;
+}
+
+bool
+PersistableMessageContext::isPersistent() const {
+ return false;
+}
+
+void
+PersistableMessageContext::decodeHeader(framing::Buffer& /*buffer*/) {}
+
+void
+PersistableMessageContext::decodeContent(framing::Buffer& /*buffer*/) {}
+
+uint32_t
+PersistableMessageContext::encodedHeaderSize() const {
+ return 0;
+}
+
+boost::intrusive_ptr<qpid::broker::PersistableMessage> PersistableMessageContext::merge(const std::map<std::string, qpid::types::Variant>& /*annotations*/) const {
+ boost::intrusive_ptr<qpid::broker::PersistableMessage> pmc;
+ return pmc;
+}
+
+}} // namespace qpid::asyncStore
Added: qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.h?rev=1377715&view=auto
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.h (added)
+++ qpid/branches/asyncstore/cpp/src/qpid/asyncStore/PersistableMessageContext.h Mon Aug 27 15:40:33 2012
@@ -0,0 +1,32 @@
+#ifndef qpid_asyncStore_PersistableMessageContext_h_
+#define qpid_asyncStore_PersistableMessageContext_h_
+
+#include "qpid/broker/MessageHandle.h"
+#include "qpid/broker/PersistableMessage.h"
+
+namespace qpid {
+namespace asyncStore {
+
+class PersistableMessageContext: public qpid::broker::PersistableMessage {
+private:
+ qpid::broker::MessageHandle m_msgHandle;
+ qpid::broker::AsyncStore* m_store;
+public:
+ PersistableMessageContext(qpid::broker::AsyncStore* store);
+ virtual ~PersistableMessageContext();
+
+ // --- Interface Persistable ---
+ void encode(qpid::framing::Buffer& buffer) const;
+ uint32_t encodedSize() const;
+
+ // --- Class PersistableMessage ---
+ bool isPersistent() const;
+ void decodeHeader(framing::Buffer& buffer);
+ void decodeContent(framing::Buffer& buffer);
+ uint32_t encodedHeaderSize() const;
+ boost::intrusive_ptr<PersistableMessage> merge(const std::map<std::string, qpid::types::Variant>& annotations) const;
+};
+
+}} // namespace qpid::asyncStore
+
+#endif // qpid_asyncStore_PersistableMessageContext_h_
Propchange: qpid/branches/asyncstore/cpp/src/qpid/broker/
------------------------------------------------------------------------------
Merged /qpid/trunk/qpid/cpp/src/qpid/broker:r1368652-1375508
Modified: qpid/branches/asyncstore/cpp/src/qpid/broker/AclModule.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/broker/AclModule.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/broker/AclModule.h (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/broker/AclModule.h Mon Aug 27 15:40:33 2012
@@ -78,7 +78,9 @@ namespace acl {
PROP_SCHEMACLASS,
PROP_POLICYTYPE,
PROP_MAXQUEUESIZE,
- PROP_MAXQUEUECOUNT };
+ PROP_MAXQUEUECOUNT,
+ PROPERTYSIZE // PROPERTYSIZE must be last in list
+ };
// Property used in ACL spec file
// Note for properties common to file processing/rule storage and to
@@ -145,6 +147,10 @@ namespace broker {
*/
virtual bool approveConnection (const Connection& connection)=0;
+ /** Change connection's counted userId
+ */
+ virtual void setUserId(const Connection& connection, const std::string& username)=0;
+
virtual ~AclModule() {};
};
} // namespace broker
Modified: qpid/branches/asyncstore/cpp/src/qpid/broker/AsyncCompletion.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/broker/AsyncCompletion.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/broker/AsyncCompletion.h (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/broker/AsyncCompletion.h Mon Aug 27 15:40:33 2012
@@ -22,6 +22,7 @@
*
*/
+#include "qpid/RefCounted.h"
#include <boost/intrusive_ptr.hpp>
#include "qpid/broker/BrokerImportExport.h"
@@ -77,7 +78,7 @@ namespace broker {
* assuming no need for synchronization with Completer threads.
*/
-class AsyncCompletion
+class AsyncCompletion : public virtual RefCounted
{
public:
Modified: qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.cpp?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.cpp (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.cpp Mon Aug 27 15:40:33 2012
@@ -33,6 +33,7 @@
#include "qpid/broker/Link.h"
#include "qpid/broker/ExpiryPolicy.h"
#include "qpid/broker/QueueFlowLimit.h"
+#include "qpid/broker/QueueSettings.h"
#include "qpid/broker/MessageGroupManager.h"
#include "qmf/org/apache/qpid/broker/Package.h"
@@ -120,7 +121,6 @@ Broker::Options::Options(const std::stri
queueLimit(100*1048576/*100M default limit*/),
tcpNoDelay(false),
requireEncrypted(false),
- asyncQueueEvents(false), // Must be false in a cluster.
qmf2Support(true),
qmf1Support(true),
queueFlowStopRatio(80),
@@ -164,7 +164,6 @@ Broker::Options::Options(const std::stri
("require-encryption", optValue(requireEncrypted), "Only accept connections that are encrypted")
("known-hosts-url", optValue(knownHosts, "URL or 'none'"), "URL to send as 'known-hosts' to clients ('none' implies empty list)")
("sasl-config", optValue(saslConfigPath, "DIR"), "gets sasl config info from nonstandard location")
- ("async-queue-events", optValue(asyncQueueEvents, "yes|no"), "Set Queue Events async, used for services like replication")
("default-flow-stop-threshold", optValue(queueFlowStopRatio, "PERCENT"), "Percent of queue's maximum capacity at which flow control is activated.")
("default-flow-resume-threshold", optValue(queueFlowResumeRatio, "PERCENT"), "Percent of queue's maximum capacity at which flow control is de-activated.")
("default-event-threshold-ratio", optValue(queueThresholdEventRatio, "%age of limit"), "The ratio of any specified queue limit at which an event will be raised")
@@ -206,7 +205,6 @@ Broker::Broker(const Broker::Options& co
*this),
mgmtObject(0),
queueCleaner(queues, &timer),
- queueEvents(poller,!conf.asyncQueueEvents),
recovery(true),
inCluster(false),
clusterUpdatee(false),
@@ -265,8 +263,6 @@ Broker::Broker(const Broker::Options& co
federationTag = conf.fedTag;
}
- QueuePolicy::setDefaultMaxSize(conf.queueLimit);
-
// Early-Initialize plugins
Plugin::earlyInitAll(*this);
@@ -430,7 +426,6 @@ void Broker::shutdown() {
Broker::~Broker() {
shutdown();
- queueEvents.shutdown();
finalize(); // Finalize any plugins.
if (config.auth)
SaslAuthenticator::fini();
@@ -694,11 +689,15 @@ void Broker::createObject(const std::str
//treat everything else as extension properties
else extensions[i->first] = i->second;
}
- framing::FieldTable arguments;
- amqp_0_10::translate(extensions, arguments);
+ QueueSettings settings(durable, autodelete);
+ Variant::Map unused;
+ settings.populate(extensions, unused);
+ qpid::amqp_0_10::translate(unused, settings.storeSettings);
+ //TODO: unused doesn't take store settings into account... so can't yet implement strict
+ QPID_LOG(debug, "Broker did not use the following settings (store module may): " << unused);
std::pair<boost::shared_ptr<Queue>, bool> result =
- createQueue(name, durable, autodelete, 0, alternateExchange, arguments, userId, connectionId);
+ createQueue(name, settings, 0, alternateExchange, userId, connectionId);
if (!result.second) {
throw ObjectAlreadyExists(name);
}
@@ -1046,8 +1045,7 @@ Broker::getKnownBrokersImpl()
return knownBrokers;
}
-bool Broker::deferDeliveryImpl(const std::string& ,
- const boost::intrusive_ptr<Message>& )
+bool Broker::deferDeliveryImpl(const std::string&, const Message&)
{ return false; }
void Broker::setClusterTimer(std::auto_ptr<sys::Timer> t) {
@@ -1061,23 +1059,21 @@ const std::string Broker::TCP_TRANSPORT(
std::pair<boost::shared_ptr<Queue>, bool> Broker::createQueue(
const std::string& name,
- bool durable,
- bool autodelete,
+ const QueueSettings& settings,
const OwnershipToken* owner,
const std::string& alternateExchange,
- const qpid::framing::FieldTable& arguments,
const std::string& userId,
const std::string& connectionId)
{
if (acl) {
std::map<acl::Property, std::string> params;
params.insert(make_pair(acl::PROP_ALTERNATE, alternateExchange));
- params.insert(make_pair(acl::PROP_DURABLE, durable ? _TRUE : _FALSE));
+ params.insert(make_pair(acl::PROP_DURABLE, settings.durable ? _TRUE : _FALSE));
params.insert(make_pair(acl::PROP_EXCLUSIVE, owner ? _TRUE : _FALSE));
- params.insert(make_pair(acl::PROP_AUTODELETE, autodelete ? _TRUE : _FALSE));
- params.insert(make_pair(acl::PROP_POLICYTYPE, arguments.getAsString("qpid.policy_type")));
- params.insert(make_pair(acl::PROP_MAXQUEUECOUNT, boost::lexical_cast<string>(arguments.getAsInt("qpid.max_count"))));
- params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(arguments.getAsInt64("qpid.max_size"))));
+ params.insert(make_pair(acl::PROP_AUTODELETE, settings.autodelete ? _TRUE : _FALSE));
+ params.insert(make_pair(acl::PROP_POLICYTYPE, settings.dropMessagesAtLimit ? "ring" : "reject"));
+ params.insert(make_pair(acl::PROP_MAXQUEUECOUNT, boost::lexical_cast<string>(settings.maxDepth.getCount())));
+ params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(settings.maxDepth.getSize())));
if (!acl->authorise(userId,acl::ACT_CREATE,acl::OBJ_QUEUE,name,¶ms) )
throw framing::UnauthorizedAccessException(QPID_MSG("ACL denied queue create request from " << userId));
@@ -1089,7 +1085,7 @@ std::pair<boost::shared_ptr<Queue>, bool
if (!alternate) throw framing::NotFoundException(QPID_MSG("Alternate exchange does not exist: " << alternateExchange));
}
- std::pair<Queue::shared_ptr, bool> result = queues.declare(name, durable, autodelete, owner, alternate, arguments);
+ std::pair<Queue::shared_ptr, bool> result = queues.declare(name, settings, alternate);
if (result.second) {
//add default binding:
result.first->bind(exchanges.getDefault(), name);
@@ -1100,16 +1096,16 @@ std::pair<boost::shared_ptr<Queue>, bool
//event instead?
managementAgent->raiseEvent(
_qmf::EventQueueDeclare(connectionId, userId, name,
- durable, owner, autodelete, alternateExchange,
- ManagementAgent::toMap(arguments),
+ settings.durable, owner, settings.autodelete, alternateExchange,
+ settings.asMap(),
"created"));
}
QPID_LOG_CAT(debug, model, "Create queue. name:" << name
<< " user:" << userId
<< " rhost:" << connectionId
- << " durable:" << (durable ? "T" : "F")
+ << " durable:" << (settings.durable ? "T" : "F")
<< " owner:" << owner
- << " autodelete:" << (autodelete ? "T" : "F")
+ << " autodelete:" << (settings.autodelete ? "T" : "F")
<< " alternateExchange:" << alternateExchange );
}
return result;
Modified: qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.h
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.h?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.h (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/broker/Broker.h Mon Aug 27 15:40:33 2012
@@ -34,7 +34,6 @@
#include "qpid/broker/LinkRegistry.h"
#include "qpid/broker/SessionManager.h"
#include "qpid/broker/QueueCleaner.h"
-#include "qpid/broker/QueueEvents.h"
#include "qpid/broker/Vhost.h"
#include "qpid/broker/System.h"
#include "qpid/broker/ExpiryPolicy.h"
@@ -76,7 +75,7 @@ namespace broker {
class ConnectionState;
class ExpiryPolicy;
class Message;
-
+struct QueueSettings;
static const uint16_t DEFAULT_PORT=5672;
struct NoSuchTransportException : qpid::Exception
@@ -118,7 +117,6 @@ class Broker : public sys::Runnable, pub
bool requireEncrypted;
std::string knownHosts;
std::string saslConfigPath;
- bool asyncQueueEvents;
bool qmf2Support;
bool qmf1Support;
uint queueFlowStopRatio; // producer flow control: on
@@ -178,11 +176,10 @@ class Broker : public sys::Runnable, pub
Vhost::shared_ptr vhostObject;
System::shared_ptr systemObject;
QueueCleaner queueCleaner;
- QueueEvents queueEvents;
std::vector<Url> knownBrokers;
std::vector<Url> getKnownBrokersImpl();
bool deferDeliveryImpl(const std::string& queue,
- const boost::intrusive_ptr<Message>& msg);
+ const Message& msg);
std::string federationTag;
bool recovery;
bool inCluster, clusterUpdatee;
@@ -227,7 +224,6 @@ class Broker : public sys::Runnable, pub
DtxManager& getDtxManager() { return dtxManager; }
DataDir& getDataDir() { return dataDir; }
Options& getOptions() { return config; }
- QueueEvents& getQueueEvents() { return queueEvents; }
void setExpiryPolicy(const boost::intrusive_ptr<ExpiryPolicy>& e) { expiryPolicy = e; }
boost::intrusive_ptr<ExpiryPolicy> getExpiryPolicy() { return expiryPolicy; }
@@ -309,7 +305,8 @@ class Broker : public sys::Runnable, pub
* context.
*@return true if delivery of a message should be deferred.
*/
- boost::function<bool (const std::string& queue, const boost::intrusive_ptr<Message>& msg)> deferDelivery;
+ boost::function<bool (const std::string& queue,
+ const Message& msg)> deferDelivery;
bool isAuthenticating ( ) { return config.auth; }
bool isTimestamping() { return config.timestampRcvMsgs; }
@@ -318,11 +315,9 @@ class Broker : public sys::Runnable, pub
QPID_BROKER_EXTERN std::pair<boost::shared_ptr<Queue>, bool> createQueue(
const std::string& name,
- bool durable,
- bool autodelete,
+ const QueueSettings& settings,
const OwnershipToken* owner,
const std::string& alternateExchange,
- const qpid::framing::FieldTable& arguments,
const std::string& userId,
const std::string& connectionId);
Modified: qpid/branches/asyncstore/cpp/src/qpid/broker/Connection.cpp
URL: http://svn.apache.org/viewvc/qpid/branches/asyncstore/cpp/src/qpid/broker/Connection.cpp?rev=1377715&r1=1377714&r2=1377715&view=diff
==============================================================================
--- qpid/branches/asyncstore/cpp/src/qpid/broker/Connection.cpp (original)
+++ qpid/branches/asyncstore/cpp/src/qpid/broker/Connection.cpp Mon Aug 27 15:40:33 2012
@@ -25,6 +25,7 @@
#include "qpid/broker/Bridge.h"
#include "qpid/broker/Broker.h"
#include "qpid/broker/Queue.h"
+#include "qpid/broker/AclModule.h"
#include "qpid/sys/SecuritySettings.h"
#include "qpid/sys/ClusterSafe.h"
@@ -278,6 +279,13 @@ void Connection::notifyConnectionForced(
void Connection::setUserId(const string& userId)
{
+ // Account for changing userId
+ AclModule* acl = broker.getAcl();
+ if (acl)
+ {
+ acl->setUserId(*this, userId);
+ }
+
ConnectionState::setUserId(userId);
// In a cluster, the cluster code will raise the connect event
// when the connection is replicated to the cluster.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org