You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2006/10/17 22:46:03 UTC
svn commit: r465038 [1/2] - in /incubator/qpid/branches/new_persistence:
cpp/ cpp/broker/ cpp/client/ cpp/common/ cpp/etc/ cpp/etc/stylesheets/
cpp/qpidd/ cpp/src/ cpp/src/qpid/ cpp/src/qpid/broker/ cpp/src/qpid/client/
cpp/src/qpid/concurrent/ cpp/src...
Author: rgreig
Date: Tue Oct 17 13:45:52 2006
New Revision: 465038
URL: http://svn.apache.org/viewvc?view=rev&rev=465038
Log:
Merge from trunk up to revision 465005
Added:
incubator/qpid/branches/new_persistence/cpp/etc/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/etc/
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_client.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_client.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_client_handler_impl.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_client_handler_impl.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_client_operations.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_client_operations.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_consts.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_consts.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_server.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_server.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_server_handler_impl.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_server_handler_impl.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/amqp_server_operations.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/amqp_server_operations.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/code_gen.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/code_gen.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/code_utils.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/code_utils.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/convert_0.81.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/convert_0.81.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/cpp.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/cpp.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/framing.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/framing.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/prepare1.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/prepare1.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/prepare2.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/prepare2.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/prepare3.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/prepare3.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/registry.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/registry.xsl
incubator/qpid/branches/new_persistence/cpp/etc/stylesheets/utils.xsl
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/etc/stylesheets/utils.xsl
incubator/qpid/branches/new_persistence/cpp/src/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/
incubator/qpid/branches/new_persistence/cpp/src/memory.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/memory.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/
incubator/qpid/branches/new_persistence/cpp/src/qpid/Exception.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/Exception.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/Exception.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/Exception.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/QpidError.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/QpidError.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/QpidError.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/QpidError.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/AutoDelete.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AutoDelete.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/AutoDelete.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/AutoDelete.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Binding.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Binding.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Broker.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Broker.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Channel.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Channel.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Channel.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Channel.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Configuration.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Configuration.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Configuration.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Configuration.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/ConnectionToken.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionToken.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Consumer.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Consumer.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/DirectExchange.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/DirectExchange.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/DirectExchange.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Exchange.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Exchange.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/ExchangeBinding.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeBinding.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/ExchangeBinding.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeBinding.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/ExchangeRegistry.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/ExchangeRegistry.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/FanOutExchange.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/FanOutExchange.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/HeadersExchange.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/HeadersExchange.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Message.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Message.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Message.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/NameGenerator.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/NameGenerator.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/NameGenerator.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/NameGenerator.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Queue.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Queue.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/QueueRegistry.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/QueueRegistry.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Router.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Router.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/Router.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Router.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/SessionHandlerFactoryImpl.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionHandlerFactoryImpl.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/SessionHandlerFactoryImpl.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionHandlerFactoryImpl.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/SessionHandlerImpl.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionHandlerImpl.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/SessionHandlerImpl.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/SessionHandlerImpl.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/TopicExchange.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/broker/TopicExchange.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/TopicExchange.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Channel.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Channel.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Channel.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Channel.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Connection.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Connection.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Connection.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Connection.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Exchange.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Exchange.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Exchange.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Exchange.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/IncomingMessage.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/IncomingMessage.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/IncomingMessage.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/IncomingMessage.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Message.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Message.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Message.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Message.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/MessageListener.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/MessageListener.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/MessageListener.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/MessageListener.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Queue.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Queue.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/Queue.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/Queue.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/ResponseHandler.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/ResponseHandler.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/ResponseHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/ResponseHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/ReturnedMessageHandler.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/ReturnedMessageHandler.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/client/ReturnedMessageHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/client/ReturnedMessageHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRBase.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRBase.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRBase.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRBase.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRMonitor.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRMonitor.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRMonitor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRMonitor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRThread.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRThread.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRThread.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRThread.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRThreadFactory.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRThreadFactory.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRThreadFactory.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRThreadFactory.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRThreadPool.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRThreadPool.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/APRThreadPool.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/APRThreadPool.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/LMonitor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/LMonitor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/LThreadFactory.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/LThreadFactory.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/LockedQueue.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/LockedQueue.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/Monitor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/Monitor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/MonitorImpl.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/MonitorImpl.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/Runnable.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/Runnable.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/Runnable.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/Runnable.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/TaskQueue.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/TaskQueue.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/Thread.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/Thread.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/ThreadFactory.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/ThreadFactory.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/ThreadFactoryImpl.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/ThreadFactoryImpl.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/concurrent/ThreadPool.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/ThreadPool.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQBody.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQBody.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQBody.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQBody.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQContentBody.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQContentBody.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQContentBody.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQContentBody.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQDataBlock.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQDataBlock.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQFrame.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQFrame.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQFrame.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQFrame.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQHeaderBody.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQHeaderBody.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQHeaderBody.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQHeaderBody.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQHeartbeatBody.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQHeartbeatBody.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQMethodBody.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQMethodBody.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/AMQMethodBody.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/AMQMethodBody.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/BasicHeaderProperties.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/BasicHeaderProperties.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/BasicHeaderProperties.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/BasicHeaderProperties.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/BodyHandler.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/BodyHandler.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/BodyHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/BodyHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/Buffer.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/Buffer.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Buffer.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/FieldTable.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FieldTable.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/FieldTable.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/FieldTable.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/HeaderProperties.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/HeaderProperties.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/InitiationHandler.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/InitiationHandler.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/InitiationHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/InitiationHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/InputHandler.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/InputHandler.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/InputHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/InputHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/OutputHandler.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/OutputHandler.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/OutputHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/OutputHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/ProtocolInitiation.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/ProtocolInitiation.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/ProtocolInitiation.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/ProtocolInitiation.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/Value.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Value.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/Value.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/Value.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/amqp_framing.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/amqp_framing.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/framing/amqp_types.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/framing/amqp_types.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/APRConnector.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/APRConnector.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/APRConnector.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/APRConnector.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/APRSocket.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/APRSocket.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/APRSocket.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/APRSocket.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/Acceptor.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/Acceptor.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/Acceptor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/Acceptor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/BlockingAPRAcceptor.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/BlockingAPRAcceptor.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/BlockingAPRAcceptor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/BlockingAPRAcceptor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/BlockingAPRSessionContext.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/BlockingAPRSessionContext.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/BlockingAPRSessionContext.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/BlockingAPRSessionContext.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/Connector.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/Connector.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/ConnectorImpl.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/ConnectorImpl.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LConnector.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LConnector.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LFAcceptor.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LFAcceptor.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LFAcceptor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LFAcceptor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LFProcessor.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LFProcessor.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LFProcessor.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LFProcessor.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LFSessionContext.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LFSessionContext.cpp
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/LFSessionContext.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/LFSessionContext.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/SessionContext.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/SessionContext.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/SessionHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/SessionHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/SessionHandlerFactory.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/SessionHandlerFactory.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/SessionManager.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/SessionManager.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/ShutdownHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/ShutdownHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpid/io/TimeoutHandler.h
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpid/io/TimeoutHandler.h
incubator/qpid/branches/new_persistence/cpp/src/qpidd.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp
incubator/qpid/branches/new_persistence/cpp/test/client/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/test/client/
incubator/qpid/branches/new_persistence/cpp/test/client/client_test.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/client/client_test.cpp
incubator/qpid/branches/new_persistence/cpp/test/client/topic_listener.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/client/topic_listener.cpp
incubator/qpid/branches/new_persistence/cpp/test/client/topic_publisher.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/client/topic_publisher.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/ChannelTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/ChannelTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/ExchangeTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/ExchangeTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/HeadersExchangeTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/HeadersExchangeTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/Makefile
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/Makefile
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/MessageTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/MessageTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/QueueRegistryTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/QueueRegistryTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/QueueTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/QueueTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/RouterTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/RouterTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/TopicExchangeTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/TopicExchangeTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/broker/ValueTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/broker/ValueTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/framing/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/framing/
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/framing/BodyHandlerTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/framing/BodyHandlerTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/framing/FieldTableTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/framing/FieldTableTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/framing/FramingTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/framing/FramingTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/framing/HeaderTest.cpp
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/framing/HeaderTest.cpp
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/framing/Makefile
- copied unchanged from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/framing/Makefile
incubator/qpid/branches/new_persistence/cpp/test/unit/qpid/io/
- copied from r465014, incubator/qpid/trunk/qpid/cpp/test/unit/qpid/io/
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/FailedDequeueException.java
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/FailedDequeueException.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/util/OrderedMapHelper.java
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/util/OrderedMapHelper.java
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/txn/
- copied from r465014, incubator/qpid/trunk/qpid/java/broker/test/src/org/apache/qpid/server/txn/
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/txn/TxnBufferTest.java
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/broker/test/src/org/apache/qpid/server/txn/TxnBufferTest.java
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/txn/UnitTests.java
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/broker/test/src/org/apache/qpid/server/txn/UnitTests.java
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/util/OrderedMapHelperTest.java
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/broker/test/src/org/apache/qpid/server/util/OrderedMapHelperTest.java
incubator/qpid/branches/new_persistence/java/client/test/lib/fscontext-1_2-beta3/
- copied from r465014, incubator/qpid/trunk/qpid/java/client/test/lib/fscontext-1_2-beta3/
incubator/qpid/branches/new_persistence/java/client/test/lib/fscontext-1_2-beta3/fscontext.jar
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/client/test/lib/fscontext-1_2-beta3/fscontext.jar
incubator/qpid/branches/new_persistence/java/client/test/lib/fscontext-1_2-beta3/providerutil.jar
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/client/test/lib/fscontext-1_2-beta3/providerutil.jar
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/transacted/UnitTests.java
- copied unchanged from r465014, incubator/qpid/trunk/qpid/java/client/test/src/org/apache/qpid/transacted/UnitTests.java
incubator/qpid/branches/new_persistence/python/tests/tx.py
- copied unchanged from r465014, incubator/qpid/trunk/qpid/python/tests/tx.py
Removed:
incubator/qpid/branches/new_persistence/cpp/broker/
incubator/qpid/branches/new_persistence/cpp/client/
incubator/qpid/branches/new_persistence/cpp/common/
incubator/qpid/branches/new_persistence/cpp/qpidd/
incubator/qpid/branches/new_persistence/cpp/test_plugins.mk
Modified:
incubator/qpid/branches/new_persistence/cpp/DESIGN
incubator/qpid/branches/new_persistence/cpp/Makefile
incubator/qpid/branches/new_persistence/cpp/README
incubator/qpid/branches/new_persistence/cpp/options.mk
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/AMQChannel.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/handler/TxCommitHandler.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQMessage.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/DeliveryManager.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/NoConsumersException.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/Subscription.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/SubscriptionImpl.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/txn/TxnBuffer.java
incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/txn/TxnOp.java
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/UnitTests.java
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/queue/DeliveryManagerTest.java
incubator/qpid/branches/new_persistence/java/broker/test/src/org/apache/qpid/server/util/UnitTests.java
incubator/qpid/branches/new_persistence/java/client/src/org/apache/qpid/client/AMQConnection.java
incubator/qpid/branches/new_persistence/java/client/src/org/apache/qpid/client/AMQSession.java
incubator/qpid/branches/new_persistence/java/client/src/org/apache/qpid/client/util/FlowControllingBlockingQueue.java
incubator/qpid/branches/new_persistence/java/client/src/org/apache/qpid/jms/Connection.java
incubator/qpid/branches/new_persistence/java/client/src/org/apache/qpid/jms/Session.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/client/AllClientUnitTests.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/flow/ChannelFlowTest.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/jndi/referenceable/Bind.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/jndi/referenceable/Unbind.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/jndi/referenceabletest/Bind.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/jndi/referenceabletest/JNDIReferenceableTest.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/jndi/referenceabletest/Lookup.java
incubator/qpid/branches/new_persistence/java/client/test/src/org/apache/qpid/jndi/referenceabletest/Unbind.java
incubator/qpid/branches/new_persistence/java/cluster/test/org/apache/qpid/server/cluster/TestSession.java
incubator/qpid/branches/new_persistence/python/cpp_failing.txt
incubator/qpid/branches/new_persistence/python/java_failing.txt
incubator/qpid/branches/new_persistence/python/qpid/spec.py
Modified: incubator/qpid/branches/new_persistence/cpp/DESIGN
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/cpp/DESIGN?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/cpp/DESIGN (original)
+++ incubator/qpid/branches/new_persistence/cpp/DESIGN Tue Oct 17 13:45:52 2006
@@ -1,37 +1,27 @@
Qpid C++ AMQP implementation
=============================
-The following is a brief description of the logical design of the
-Qpid C++ code.
+= Project layout =
-Layout
+For Build system design see comment at start of Makefile.
-There are three top level modules. The first two, client and broker,
-containi the code required for an AMQP client and an AMQP broker
-respectively. The third, common, contains code that is common to both
-client and broker implementations. [Note that at present only the
-client has been started].
-
-Within the common module there are currently four sub-modules. The
-largest of these is framing, containing the definitions of classes
-corresponding to key AMQP concepts such as frames, content & header
-bodies, particular method bodies etc as well as some interfaces and
-utilities used in the encoding and decoding of the wire protocol.
-
-Two of the other sub-modules in common, io and concurrent, provide
-abstractions of core io and concurrency constructs used in the client
-and broker code. The intention is to allow these to be implemented in
-different ways.interaction with the wire protocol. At present the
-implementation of the io and concurrency abstractions is based on APR
-(Apache Portable Runtime). [Note: the io module currently only
-contains the abstractions as seen from the client - the Connector. It
-will in due time likely have the analogous broker-side abstraction -
-the Acceptor].
+Project contains:
+ * Client library (lib/libqpid_client): src/qpid/client
+ * Broker library (lib/libqpid_broker): src/qpid/broker
+ * Common classes
+ * src/qpid/concurrent: concurrecy
+ * src/qpid/framing: wire encoding/decoding
+ * src/qpid/io: reading/writing
+ * src/qpid/Exception.cpp, QpidError.cpp: Exception classes.
+ * Qpid Daemon (bin/qpidd): src/qpidd.cpp
-The final common sub-module is error, containing a simple exception
-definition used in all the error handling.
+Unit tests in test/unit: each *Test.cpp builds a CppUnit plugin.
-Client Design
+Client tests in test/client: each *.cpp builds a test executable.
+
+Test utilities: test/include
+
+= Client Design =
The client module is primarily concerned with presenting the
functionality offered by AMQP to users through a simple API that
Modified: incubator/qpid/branches/new_persistence/cpp/Makefile
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/cpp/Makefile?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/cpp/Makefile (original)
+++ incubator/qpid/branches/new_persistence/cpp/Makefile Tue Oct 17 13:45:52 2006
@@ -13,37 +13,120 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+# ----------------------------------------------------------------
#
-# Master make file for c++ Qpid project (AMQP)
+# Makefile for Qpid C++ project.
+#
+# Build system principles
+# * Single Makefile (see http://www.apache.org/licenses/LICENSE-2.0)
+# * Build from directories, no explicit source lists in Makefile.
+# * Corresponding .cpp and .h files in same directory for easy editing.
+# * Source directory structure mirrors C++ namespaces.
#
-# Calls the makefiles in the various subdirectories in order to
-# build them in the correct sequence.
+# Source directories:
+# * src/ - .h and .cpp source files, directories mirror namespaces.
+# * test/
+# * unit/ - unit tests (cppunit plugins), directories mirror namespaces.
+# * include/ - .h files used by tests
+# * client/ - sources for client test executables.
+# * etc/ - Non-c++ resources, e.g. stylesheets.
+# * gen/ - generated code
#
+# Output directories:
+# * gen/ - (created by make) generated code
+# * bin/ lib/ - exes & libraries.
+#
+# NOTE: always use := rather than = unless you have a specific need
+# for delayed evaluation. See the link for details.
+#
+
+include options.mk
-UNITTESTS=$(wildcard common/*/test/*.so broker/test/*.so)
-SUBDIRS=common broker qpidd client
+.PHONY: test all all-nogen generate unittest pythontest
-.PHONY: all test unittest pythontest runtests clean doxygen
+test: all unittest pythontest
-test: all runtests
+# Must run this as two separate make processes to pick up generated files.
+all:
+ $(MAKE) generate
+ $(MAKE) all-nogen
-unittest:
- DllPlugInTester -c -b $(UNITTESTS)
+## Generaged code
-pythontest:
- bin/qpidd >> qpidd.log &
+SPEC := $(CURDIR)/../specs/amqp-8.0.xml
+XSL := code_gen.xsl framing.xsl
+STYLESHEETS := $(XSL:%=$(CURDIR)/etc/stylesheets/%)
+TRANSFORM := java -jar $(CURDIR)/tools/saxon8.jar -o results.out $(SPEC)
+generate: gen/timestamp
+gen/timestamp: $(wildcard etc/stylesheets/*.xsl) $(SPEC)
+ mkdir -p gen/qpid/framing
+ echo > gen/timestamp
+ cd gen/qpid/framing && for s in $(STYLESHEETS) ; do $(TRANSFORM) $$s ; done
+gen $(wildcard gen/qpid/framing/*.cpp): gen/timestamp
+
+## Libraries
+
+# Library command, late evaluated for $@
+LIB_CMD = $(CXX) -shared -o $@ $(LDFLAGS) $(CXXFLAGS) -lapr-1
+
+# Common library.
+COMMON_LIB := lib/libqpid_common.so.1.0
+COMMON_DIRS := qpid/concurrent qpid/framing qpid/io qpid
+COMMON_SRC := $(wildcard gen/qpid/framing/*.cpp $(COMMON_DIRS:%=src/%/*.cpp))
+$(COMMON_LIB): gen/timestamp $(COMMON_SRC:.cpp=.o)
+ $(LIB_CMD) $(COMMON_SRC:.cpp=.o)
+all-nogen: $(COMMON_LIB)
+UNITTESTS := $(UNITTESTS) $(wildcard $(COMMON_DIRS:%=test/unit/%/*Test.cpp))
+
+# Client library.
+CLIENT_LIB := lib/libqpid_client.so.1.0
+CLIENT_SRC := $(wildcard src/qpid/client/*.cpp)
+$(CLIENT_LIB): $(CLIENT_SRC:.cpp=.o)
+ $(LIB_CMD) $^ $(CURDIR)/$(COMMON_LIB)
+all-nogen: $(CLIENT_LIB)
+UNITTESTS := $(UNITTESTS) $(wildcard $(COMMON_DIRS:%=test/unit/%/*Test.cpp))
+
+# Broker library.
+BROKER_LIB := lib/libqpid_broker.so.1.0
+BROKER_SRC := $(wildcard src/qpid/broker/*.cpp)
+$(BROKER_LIB): $(BROKER_SRC:.cpp=.o)
+ $(LIB_CMD) $^ $(CURDIR)/$(COMMON_LIB)
+all-nogen: $(BROKER_LIB)
+UNITTESTS := $(UNITTESTS) $(wildcard test/unit/qpid/broker/*Test.cpp)
+
+# Implicit rule for unit test plugin libraries.
+%Test.so: %Test.cpp
+ $(CXX) -shared -o $@ $< $($(LIB)_FLAGS) -Itest/include $(CXXFLAGS) $(LDFLAGS) -lapr-1 -lcppunit $(CURDIR)/$(COMMON_LIB) $(CURDIR)/$(BROKER_LIB)
+
+## Client tests
+
+all-nogen: $(wildcard test/client/*.cpp:.cpp=)
+test/client/%: test/client/%.cpp
+ $(CXX) -o $@ $< $($(LIB)_FLAGS) -Itest/include $(CXXFLAGS) $(LDFLAGS) -lapr-1 $(LINK_WITH_$(LIB)) $(LINK_WITH_$(LIB)_DEPS)
+
+## Daemon executable
+
+bin/qpidd: src/qpidd.o $(CURDIR)/$(COMMON_LIB)
+ $(CXX) -o $@ $(CXXFLAGS) $(LDFLAGS) -lapr-1 $^ $(CURDIR)/$(BROKER_LIB)
+all-nogen: bin/qpidd
+
+## Run unit tests.
+unittest: $(UNITTESTS:.cpp=.so)
+ DllPlugInTester -c -b $(UNITTESTS:.cpp=.so)
+
+## Run python tests
+pythontest: bin/qpidd
+ bin/qpidd > qpidd.log &
cd ../python ; ./run-tests -v -I cpp_failing.txt
-runtests:
- $(MAKE) -k unittest pythontest
-
-all:
- @for DIR in $(SUBDIRS) ; do $(MAKE) -C $$DIR all ; done
+## Doxygen documentation.
+doxygen: doxygen/doxygen.cfg $(SOURCES)
+ cd doxygen && doxygen doxygen.cfg
+
+## Cleanup
+clean::
+ rm -f bin/* lib/* qpidd.log
+ rm -rf gen
+ rm -f `find src test -name '*.o' -o -name '*.d' -o -name '*.so'`
-clean:
- @for DIR in $(SUBDIRS) ; do $(MAKE) -C $$DIR clean ; done
- @$(MAKE) -C doxygen clean
- -@rm qpidd.log
-doxygen:
- @$(MAKE) -C doxygen all
Modified: incubator/qpid/branches/new_persistence/cpp/README
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/cpp/README?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/cpp/README (original)
+++ incubator/qpid/branches/new_persistence/cpp/README Tue Oct 17 13:45:52 2006
@@ -1,17 +1,19 @@
= Developer guide to C++ codebase =
-== Prerequisites ==
-
-Apache Portable Runtime 1.2.7: http://apr.apache.org/
-Install in /usr/local/apr or update options.mk if installed elsewhere.
+See DESIGN for design notes, Makefile comment for build system notes.
-CppUnit: http://cppunit.sourceforge.net
+== Prerequisites ==
-boost: http://www.boost.org
+Required to build:
+ * Apache Portable Runtime 1.2.7: http://apr.apache.org/
+ * CppUnit: http://cppunit.sourceforge.net
+ * boost: http://www.boost.org
Optional: to generate source code documentation you need:
* doxygen: http://sourceforge.net/projects/doxygen/
* graphviz - http://www.graphviz.org/
+
+On Fedora: yum install apr apr-devel cppunit cppunit-devel boost boost-devel doxygen graphviz
== Build and test ==
Modified: incubator/qpid/branches/new_persistence/cpp/options.mk
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/cpp/options.mk?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/cpp/options.mk (original)
+++ incubator/qpid/branches/new_persistence/cpp/options.mk Tue Oct 17 13:45:52 2006
@@ -14,25 +14,19 @@
# limitations under the License.
#
-# Directories
-SPEC_DIR = ${QPID_HOME}/specs
-QPID_CPP_HOME = ${QPID_HOME}/cpp
-COMMON_HOME = ${QPID_CPP_HOME}/common
-TOOLS_DIR = ${QPID_CPP_HOME}/tools
-LIB_DIR = ${QPID_CPP_HOME}/lib
-BIN_DIR = ${QPID_CPP_HOME}/bin
-APR_HOME = /usr/local/apr
-
-# Compile flags
-DEBUG = -ggdb3 -O0
-OPTIMIZE =
+
+## External dependencies:
+
+# Add location for headers and libraries of any external dependencies here
+EXTRA_INCLUDES := -I/usr/local/apr/include
+EXTRA_LIBDIRS := -L/usr/local/apr/lib
+
+## Compile flags
+
+DEBUG := -ggdb3 -O0
+
# _USE_APR_IO_ set when APR IO build is desired.
-DEFINES = -D _USE_APR_IO_
-APR_INCLUDES=-I ${APR_HOME}/include/apr-1/
-COMMON_INCLUDES = -I ${COMMON_HOME}/framing/inc -I ${COMMON_HOME}/framing/generated -I ${COMMON_HOME}/concurrent/inc -I ${COMMON_HOME}/io/inc -I ${COMMON_HOME}/error/inc -I $(COMMON_HOME)/utils/inc ${APR_INCLUDES}
-SRC_INCLUDES = $(COMMON_INCLUDES) -I inc
-TEST_INCLUDES = $(COMMON_INCLUDES) -I ../inc -I $(QPID_CPP_HOME)/test/include
-INCLUDES=$(SRC_INCLUDES) # Default to src
+DEFINES := -D _USE_APR_IO_
# Warnings: Enable as many as possible, keep the code clean. Please
# do not disable warnings or remove -Werror without discussing on
@@ -41,21 +35,9 @@
# The following warnings deliberately omitted, they warn on valid code.
# -Wno-unreachable-code -Wpadded
#
-WARN = -Werror -pedantic -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Winline
-
-CXXFLAGS = $(DEBUG) $(OPTIMIZE) $(DEFINES) $(WARN) -MMD -fpic $(INCLUDES)
-
-# General link flags
-LDFLAGS= -L $(LIB_DIR) -L ${APR_HOME}/lib $(RPATH)
-
-# TODO aconway 2006-09-12: This is not something we want in a release
-# but it's useful for development.
-RPATH= -Wl,-rpath,$(CURDIR)/$(LIB_DIR)
-
-# Libraries and executables. Use absolute paths so exes can find
-# libs wherever they are run. TODO: Proper library management.
-BROKER=$(BIN_DIR)/qpidd
-BROKER_LIB=$(CURDIR)/$(LIB_DIR)/libqpid_broker.so.1.0
-COMMON_LIB=$(CURDIR)/$(LIB_DIR)/libqpid_common.so.1.0
-CLIENT_LIB=$(CURDIR)/$(LIB_DIR)/libqpid_client.so.1.0
-
+WARN := -Werror -pedantic -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Winline
+INCLUDES := -Isrc -Igen $(EXTRA_INCLUDES)
+CXXFLAGS := $(DEBUG) $(DEFINES) $(WARN) -MMD -fpic $(INCLUDES)
+## Link flags
+# Allow exes to find libs without env changes. Remove for release builds.
+LDFLAGS := -Llib $(EXTRA_LIBDIRS)
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/AMQChannel.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/AMQChannel.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/AMQChannel.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/AMQChannel.java Tue Oct 17 13:45:52 2006
@@ -19,6 +19,7 @@
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
+import org.apache.qpid.framing.AMQDataBlock;
import org.apache.qpid.framing.BasicPublishBody;
import org.apache.qpid.framing.ContentBody;
import org.apache.qpid.framing.ContentHeaderBody;
@@ -26,16 +27,20 @@
import org.apache.qpid.server.protocol.AMQProtocolSession;
import org.apache.qpid.server.queue.AMQMessage;
import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.queue.NoConsumersException;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.txn.TxnBuffer;
import org.apache.qpid.server.txn.TxnOp;
+import org.apache.qpid.server.util.OrderedMapHelper;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.TreeMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
@@ -94,6 +99,8 @@
private final TxnBuffer _txnBuffer;
+ private final List<AMQDataBlock> _returns = new LinkedList<AMQDataBlock>();
+
public static class UnacknowledgedMessage
{
public final AMQMessage message;
@@ -202,18 +209,53 @@
//don't create a transaction unless needed
if(_currentMessage.isPersistent())
{
- _txnBuffer.setPersistentMessageRecevied();
+ _txnBuffer.containsPersistentChanges();
}
- //don't route this until commit
- _txnBuffer.enlist(new Publish(_currentMessage));
- _currentMessage = null;
+ //A publication will result in the enlisting of several
+ //TxnOps. The first is an op that will store the message.
+ //Following that (and ordering is important), an op will
+ //be added for every queue onto which the message is
+ //enqueued. Finally a cleanup op will be added to decrement
+ //the reference associated with the routing.
+ Store storeOp = new Store(_currentMessage);
+ _txnBuffer.enlist(storeOp);
+ _currentMessage.setTxnBuffer(_txnBuffer);
+ try
+ {
+ _exchanges.routeContent(_currentMessage);
+ _txnBuffer.enlist(new Cleanup(_currentMessage));
+ }
+ catch(RequiredDeliveryException e)
+ {
+ //Can only be due to the mandatory flag, as no attempt
+ //has yet been made to deliver the message. The
+ //message will thus not have been delivered to any
+ //queue so we can return the message (without killing
+ //the transaction) and for efficiency remove the store
+ //operation from the buffer.
+ _txnBuffer.cancel(storeOp);
+ throw e;
+ }
+ finally
+ {
+ _currentMessage = null;
+ }
}
else
{
- _exchanges.routeContent(_currentMessage);
- _currentMessage.decrementReference();
- _currentMessage = null;
+ try
+ {
+ _exchanges.routeContent(_currentMessage);
+ //following check implements the functionality
+ //required by the 'immediate' flag:
+ _currentMessage.checkDeliveredToConsumer();
+ }
+ finally
+ {
+ _currentMessage.decrementReference();
+ _currentMessage = null;
+ }
}
}
@@ -402,8 +444,14 @@
{
if (_transactional)
{
- //don't handle this until commit
- _txnBuffer.enlist(new Ack(deliveryTag, multiple));
+ try
+ {
+ _txnBuffer.enlist(new Ack(getUnackedMessageFinder().getValues(deliveryTag, multiple)));
+ }
+ catch(NoSuchElementException e)
+ {
+ throw new AMQException("Received ack for unrecognised delivery tag: " + deliveryTag);
+ }
}
else
{
@@ -540,6 +588,7 @@
public void commit() throws AMQException
{
_txnBuffer.commit();
+ //TODO: may need to return 'immediate' messages at this point
}
public void rollback() throws AMQException
@@ -578,20 +627,74 @@
return _defaultQueue;
}
+ public void processReturns(AMQProtocolSession session)
+ {
+ for(AMQDataBlock block : _returns)
+ {
+ session.writeFrame(block);
+ }
+ _returns.clear();
+ }
+
+ private OrderedMapHelper<Long, UnacknowledgedMessage> getUnackedMessageFinder()
+ {
+ return new OrderedMapHelper<Long, UnacknowledgedMessage>(_unacknowledgedMessageMap, _unacknowledgedMessageMapLock, 0L);
+ }
+
+
private class Ack implements TxnOp
{
- private final long _msgId;
- private final boolean _multi;
+ private final Map<Long, UnacknowledgedMessage> _unacked;
+
+ Ack(Map<Long, UnacknowledgedMessage> unacked) throws AMQException
+ {
+ _unacked = unacked;
+
+ //if any of the messages in unacked are persistent the txn
+ //buffer must be marked as persistent:
+ for(UnacknowledgedMessage msg : _unacked.values())
+ {
+ if(msg.message.isPersistent())
+ {
+ _txnBuffer.containsPersistentChanges();
+ break;
+ }
+ }
+ }
+
+ public void prepare() throws AMQException
+ {
+ //make persistent changes, i.e. dequeue and decrementReference
+ for(UnacknowledgedMessage msg : _unacked.values())
+ {
+ msg.discard();
+ }
+ }
- Ack(long msgId, boolean multi)
+ public void undoPrepare()
{
- _msgId = msgId;
- _multi = multi;
+ //decrementReference is annoyingly untransactional (due to
+ //in memory counter) so if we failed in prepare for full
+ //txn, this op will have to compensate by fixing the count
+ //in memory (persistent changes will be rolled back by store)
+ for(UnacknowledgedMessage msg : _unacked.values())
+ {
+
+ msg.message.incrementReference();
+ }
}
- public void commit() throws AMQException
+ public void commit()
{
- handleAcknowledgement(_msgId, _multi);
+ //remove the unacked messages from the channels map
+ synchronized(_unacknowledgedMessageMapLock)
+ {
+ for(long tag : _unacked.keySet())
+ {
+ _unacknowledgedMessageMap.remove(tag);
+ }
+ }
+
}
public void rollback()
@@ -599,39 +702,75 @@
}
}
- //TODO:
- //implement a scheme whereby messages can be stored on disk
- //until commit, then reloaded...
- private class Publish implements TxnOp
+ private class Store implements TxnOp
{
+ //just use this to do a store of the message during the
+ //prepare phase. Any enqueueing etc is done by TxnOps enlisted
+ //by the queues themselves.
private final AMQMessage _msg;
- Publish(AMQMessage msg)
+ Store(AMQMessage msg)
{
_msg = msg;
}
- public boolean isPersistent() throws AMQException
+ public void prepare() throws AMQException
{
- return _msg.isPersistent();
+ _msg.storeMessage();
+ //the routers reference can now be released
+ _msg.decrementReference();
}
- public void commit() throws AMQException
+ public void undoPrepare()
+ {
+ }
+
+ public void commit()
{
- _exchanges.routeContent(_msg);
- _msg.decrementReference();
}
public void rollback()
{
+ }
+ }
+
+ private class Cleanup implements TxnOp
+ {
+ private final AMQMessage _msg;
+
+ Cleanup(AMQMessage msg)
+ {
+ _msg = msg;
+ }
+
+ public void prepare() throws AMQException
+ {
+ //the routers reference can now be released
+ _msg.decrementReference();
try
{
- _msg.decrementReference();
+ _msg.checkDeliveredToConsumer();
}
- catch (AMQException e)
+ catch(NoConsumersException e)
{
- _log.error("Error rolling back a publish request: " + e, e);
+ //TODO: store this for delivery after the commit-ok
+ _returns.add(e.getReturnMessage(_channelId));
}
+ }
+
+ public void undoPrepare()
+ {
+ //don't need to do anything here, if the store's txn failed
+ //when processing prepare then the message was not stored
+ //or enqueued on any queues and can be discarded
+ }
+
+ public void commit()
+ {
+ }
+
+ public void rollback()
+ {
}
}
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/handler/TxCommitHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/handler/TxCommitHandler.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/handler/TxCommitHandler.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/handler/TxCommitHandler.java Tue Oct 17 13:45:52 2006
@@ -20,6 +20,7 @@
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.TxCommitBody;
import org.apache.qpid.framing.TxCommitOkBody;
+import org.apache.qpid.server.AMQChannel;
import org.apache.qpid.server.exchange.ExchangeRegistry;
import org.apache.qpid.server.protocol.AMQMethodEvent;
import org.apache.qpid.server.protocol.AMQProtocolSession;
@@ -46,8 +47,10 @@
{
try{
- protocolSession.getChannel(evt.getChannelId()).commit();
- protocolSession.writeFrame(TxCommitOkBody.createAMQFrame(evt.getChannelId()));
+ AMQChannel channel = protocolSession.getChannel(evt.getChannelId());
+ channel.commit();
+ protocolSession.writeFrame(TxCommitOkBody.createAMQFrame(evt.getChannelId()));
+ channel.processReturns(protocolSession);
}catch(AMQException e){
throw evt.getMethod().getChannelException(e.getErrorCode(), "Failed to commit: " + e.getMessage());
}
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQMessage.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQMessage.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQMessage.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQMessage.java Tue Oct 17 13:45:52 2006
@@ -19,8 +19,9 @@
import org.apache.mina.common.ByteBuffer;
import org.apache.qpid.framing.*;
-import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.protocol.AMQProtocolSession;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.txn.TxnBuffer;
import org.apache.qpid.AMQException;
import java.util.ArrayList;
@@ -61,17 +62,44 @@
*/
private transient final MessageStore _store;
+ /**
+ * For non transactional publishes, a message can be stored as
+ * soon as it is complete. For transactional messages it doesnt
+ * need to be stored until the transaction is committed.
+ */
+ private boolean _storeWhenComplete;
+
+ /**
+ * TxnBuffer for transactionally published messages
+ */
+ private TxnBuffer _txnBuffer;
+
+ /**
+ * Flag to indicate whether message has been delivered to a
+ * consumer. Used in implementing return functionality for
+ * messages published with the 'immediate' flag.
+ */
+ private boolean _deliveredToConsumer;
+
+
public AMQMessage(MessageStore messageStore, BasicPublishBody publishBody)
{
+ this(messageStore, publishBody, true);
+ }
+
+ public AMQMessage(MessageStore messageStore, BasicPublishBody publishBody, boolean storeWhenComplete)
+ {
_messageId = messageStore.getNewMessageId();
_publishBody = publishBody;
_store = messageStore;
_contentBodies = new LinkedList<ContentBody>();
+ _storeWhenComplete = storeWhenComplete;
}
public AMQMessage(MessageStore store, long messageId, BasicPublishBody publishBody,
ContentHeaderBody contentHeaderBody, List<ContentBody> contentBodies)
throws AMQException
+
{
_publishBody = publishBody;
_contentHeaderBody = contentHeaderBody;
@@ -93,7 +121,7 @@
this(msg._store, msg._messageId, msg._publishBody, msg._contentHeaderBody, msg._contentBodies);
}
- private void storeMessage() throws AMQException
+ public void storeMessage() throws AMQException
{
if (isPersistent())
{
@@ -149,7 +177,7 @@
public void setContentHeaderBody(ContentHeaderBody contentHeaderBody) throws AMQException
{
_contentHeaderBody = contentHeaderBody;
- if (isAllContentReceived())
+ if (_storeWhenComplete && isAllContentReceived())
{
storeMessage();
}
@@ -169,7 +197,7 @@
{
_contentBodies.add(contentBody);
_bodyLengthReceived += contentBody.getSize();
- if (isAllContentReceived())
+ if (_storeWhenComplete && isAllContentReceived())
{
storeMessage();
}
@@ -293,5 +321,36 @@
//todo remove literal values to a constant file such as AMQConstants in common
return _contentHeaderBody.properties instanceof BasicContentHeaderProperties
&&((BasicContentHeaderProperties) _contentHeaderBody.properties).getDeliveryMode() == 2;
+ }
+
+ public void setTxnBuffer(TxnBuffer buffer)
+ {
+ _txnBuffer = buffer;
+ }
+
+ public TxnBuffer getTxnBuffer()
+ {
+ return _txnBuffer;
+ }
+
+ /**
+ * Called to enforce the 'immediate' flag.
+ * @throws NoConsumersException if the message is marked for
+ * immediate delivery but has not been marked as delivered to a
+ * consumer
+ */
+ public void checkDeliveredToConsumer() throws NoConsumersException{
+ if(isImmediate() && !_deliveredToConsumer)
+ {
+ throw new NoConsumersException(_publishBody, _contentHeaderBody, _contentBodies);
+ }
+ }
+
+ /**
+ * Called when this message is delivered to a consumer. (used to
+ * implement the 'immediate' flag functionality).
+ */
+ public void setDeliveredToConsumer(){
+ _deliveredToConsumer = true;
}
}
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java Tue Oct 17 13:45:52 2006
@@ -27,6 +27,8 @@
import org.apache.qpid.server.management.Managable;
import org.apache.qpid.server.management.ManagedObject;
import org.apache.qpid.server.protocol.AMQProtocolSession;
+import org.apache.qpid.server.txn.TxnBuffer;
+import org.apache.qpid.server.txn.TxnOp;
import javax.management.JMException;
import javax.management.MBeanException;
@@ -93,19 +95,19 @@
private final AMQQueueMBean _managedObject;
/**
- * max allowed size of a single message.
+ * max allowed size of a single message(in KBytes).
*/
- private long _maxAllowedMessageSize = 0;
+ private long _maxAllowedMessageSize = 10000; // 10 MB
/**
* max allowed number of messages on a queue.
*/
- private Integer _maxAllowedMessageCount = 0;
+ private Integer _maxAllowedMessageCount = 10000;
/**
- * max allowed size in bytes for all the messages combined together in a queue.
+ * max allowed size in KBytes for all the messages combined together in a queue.
*/
- private long _queueDepth = 0;
+ private long _queueDepth = 10000000; // 10 GB
/**
* total messages received by the queue since startup.
@@ -264,26 +266,81 @@
return _queueDepth;
}
+ // Sets the queue depth, the max queue size
public void setQueueDepth(Long value)
{
_queueDepth = value;
}
+ // Returns the size of messages in the queue
+ public Long getQueueSize()
+ {
+ List<AMQMessage> list = _deliveryMgr.getMessages();
+ if (list.size() == 0)
+ return 0l;
+
+ long queueSize = 0;
+ for (AMQMessage message : list)
+ {
+ queueSize = queueSize + getMessageSize(message);
+ }
+ return new Long(Math.round(queueSize/100));
+ }
// Operations
- private void checkForNotification()
+ // calculates the size of an AMQMessage
+ private long getMessageSize(AMQMessage msg)
{
- if (getMessageCount() >= getMaximumMessageCount())
+ if (msg == null)
+ return 0l;
+
+ List<ContentBody> cBodies = msg.getContentBodies();
+ long messageSize = 0;
+ for (ContentBody body : cBodies)
{
- Notification n = new Notification(
+ if (body != null)
+ messageSize = messageSize + body.getSize();
+ }
+ return messageSize;
+ }
+
+ // Checks if there is any notification to be send to the listeners
+ private void checkForNotification(AMQMessage msg)
+ {
+ // Check for message count
+ Integer msgCount = getMessageCount();
+ if (msgCount >= getMaximumMessageCount())
+ {
+ notifyClients("MessageCount = " + msgCount + ", Queue has reached its size limit and is now full.");
+ }
+
+ // Check for received message size
+ long messageSize = getMessageSize(msg);
+ if (messageSize >= getMaximumMessageSize())
+ {
+ notifyClients("MessageSize = " + messageSize + ", Message size (MessageID="+ msg.getMessageId() +
+ ")is higher than the threshold value");
+ }
+
+ // Check for queue size in bytes
+ long queueSize = getQueueSize();
+ if (queueSize >= getQueueDepth())
+ {
+ notifyClients("QueueSize = " + queueSize + ", Queue size has reached the threshold value");
+ }
+ }
+
+ // Send the notification to the listeners
+ private void notifyClients(String notificationMsg)
+ {
+ Notification n = new Notification(
MonitorNotification.THRESHOLD_VALUE_EXCEEDED,
this,
++_notificationSequenceNumber,
System.currentTimeMillis(),
- "MessageCount = " + getMessageCount() + ", Queue has reached its size limit and is now full.");
+ notificationMsg);
_broadcaster.sendNotification(n);
- }
}
public void deleteMessageFromTop() throws JMException
@@ -610,9 +667,53 @@
public void deliver(AMQMessage msg) throws AMQException
{
+ TxnBuffer buffer = msg.getTxnBuffer();
+ if(buffer == null)
+ {
+ //non-transactional
+ record(msg);
+ process(msg);
+ }
+ else
+ {
+ buffer.enlist(new Deliver(msg));
+ }
+ }
+
+ private void record(AMQMessage msg) throws AMQException
+ {
msg.enqueue(this);
+ msg.incrementReference();
+ }
+
+ private void process(AMQMessage msg) throws FailedDequeueException
+ {
_deliveryMgr.deliver(getName(), msg);
- updateReceivedMessageCount();
+ updateReceivedMessageCount(msg);
+ try
+ {
+ msg.checkDeliveredToConsumer();
+ updateReceivedMessageCount(msg);
+ }
+ catch(NoConsumersException e)
+ {
+ // as this message will be returned, it should be removed
+ // from the queue:
+ dequeue(msg);
+ }
+ }
+
+ void dequeue(AMQMessage msg) throws FailedDequeueException
+ {
+ try
+ {
+ msg.decrementReference();
+ msg.dequeue(this);
+ }
+ catch(AMQException e)
+ {
+ throw new FailedDequeueException(_name, e);
+ }
}
public void deliverAsync()
@@ -625,10 +726,10 @@
return _subscribers;
}
- protected void updateReceivedMessageCount()
+ protected void updateReceivedMessageCount(AMQMessage msg)
{
_totalMessagesReceived++;
- _managedObject.checkForNotification();
+ _managedObject.checkForNotification(msg);
}
public boolean equals(Object o)
@@ -664,4 +765,49 @@
_logger.debug(MessageFormat.format(msg, args));
}
}
+
+ private class Deliver implements TxnOp
+ {
+ private final AMQMessage _msg;
+
+ Deliver(AMQMessage msg)
+ {
+ _msg = msg;
+ }
+
+ public void prepare() throws AMQException
+ {
+ record(_msg);
+ }
+
+ public void undoPrepare()
+ {
+ }
+
+ public void commit()
+ {
+ try
+ {
+ process(_msg);
+ }
+ catch(FailedDequeueException e)
+ {
+ //TODO: is there anything else we can do here? I think not...
+ _logger.error("Error during commit of a queue delivery: " + e, e);
+ }
+ }
+
+ public void rollback()
+ {
+ try
+ {
+ _msg.decrementReference();
+ }
+ catch (AMQException e)
+ {
+ _logger.error("Error rolling back a queue delivery: " + e, e);
+ }
+ }
+ }
+
}
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/DeliveryManager.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/DeliveryManager.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/DeliveryManager.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/DeliveryManager.java Tue Oct 17 13:45:52 2006
@@ -72,8 +72,16 @@
{
if (_queueing)
{
- _messages.offer(msg);
- return true;
+ if(msg.isImmediate())
+ {
+ //can't enqueue messages for whom immediate delivery is required
+ return false;
+ }
+ else
+ {
+ _messages.offer(msg);
+ return true;
+ }
}
else
{
@@ -147,14 +155,7 @@
//We don't synchronize access to subscribers so need to re-check
if (next != null)
{
- try
- {
- next.send(poll(), _queue);
- }
- catch (AMQException e)
- {
- _log.error("Unable to deliver message: " + e, e);
- }
+ next.send(poll(), _queue);
}
else
{
@@ -162,6 +163,10 @@
}
}
}
+ catch (FailedDequeueException e)
+ {
+ _log.error("Unable to deliver message as dequeue failed: " + e, e);
+ }
finally
{
_processing.set(false);
@@ -211,10 +216,10 @@
* @param msg the message to deliver
* @throws NoConsumersException if there are no active subscribers to deliver
* the message to
+ * @throws FailedDequeueException if the message could not be dequeued
*/
- void deliver(String name, AMQMessage msg) throws AMQException
+ void deliver(String name, AMQMessage msg) throws FailedDequeueException
{
- msg.incrementReference();
// first check whether we are queueing, and enqueue if we are
if (!enqueue(msg))
{
@@ -222,11 +227,7 @@
Subscription s = _subscriptions.nextSubscriber(msg);
if (s == null)
{
- if (msg.isImmediate())
- {
- throw msg.getNoConsumersException(name);
- }
- else
+ if (!msg.isImmediate())
{
// no subscribers yet so enter 'queueing' mode and queue this message
startQueueing(msg);
@@ -235,19 +236,7 @@
else
{
s.send(msg, _queue);
- }
- }
-
- else
- {
- if (msg.isImmediate())
- {
- //todo check with spec to see if enqueing for immediate client delivery is ok.
- Subscription s = _subscriptions.nextSubscriber(msg);
- if (s == null)
- {
- throw msg.getNoConsumersException(name);
- }
+ msg.setDeliveredToConsumer();
}
}
}
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java Tue Oct 17 13:45:52 2006
@@ -78,7 +78,7 @@
Integer getMessageCount() throws IOException;
/**
- * Returns the maximum size of a message (in bytes) allowed to be accepted by the
+ * Returns the maximum size of a message (in kbytes) allowed to be accepted by the
* ManagedQueue. This is useful in setting notifications or taking
* appropriate action, if the size of the message received is more than
* the allowed size.
@@ -89,14 +89,14 @@
Long getMaximumMessageSize() throws IOException;
/**
- * Sets the maximum size of the message (in bytes) that is allowed to be
+ * Sets the maximum size of the message (in kbytes) that is allowed to be
* accepted by the Queue.
- * @param bytes maximum size of message.
+ * @param size maximum size of message.
* @throws IOException
*/
@MBeanAttribute(name="MaximumMessageSize",
- description="Maximum size of a message in bytes allowed for this Queue")
- void setMaximumMessageSize(Long bytes) throws IOException;
+ description="Maximum size(KB) of a message allowed for this Queue")
+ void setMaximumMessageSize(Long size) throws IOException;
/**
* Returns the total number of subscribers to the queue.
@@ -142,6 +142,14 @@
void setMaximumMessageCount(Integer value) throws IOException;
/**
+ * Size of messages in the queue
+ * @return
+ * @throws IOException
+ */
+ @MBeanAttribute(name="QueueSize", description="Size of messages(KB) in the queue")
+ Long getQueueSize() throws IOException;
+
+ /**
* Tells the maximum size of all the messages combined together,
* that can be stored in the queue. This is useful for setting notifications
* or taking required action if the size of messages stored in the queue
@@ -158,7 +166,7 @@
* @throws IOException
*/
@MBeanAttribute(name="QueueDepth",
- description="The size of all the messages together, that can be stored in the queue")
+ description="The size(KB) of all the messages together, that can be stored in the queue")
void setQueueDepth(Long value) throws IOException;
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/NoConsumersException.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/NoConsumersException.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/NoConsumersException.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/NoConsumersException.java Tue Oct 17 13:45:52 2006
@@ -40,6 +40,13 @@
super("Immediate delivery to " + queue + " is not possible.", publishBody, contentHeaderBody, contentBodies);
}
+ public NoConsumersException(BasicPublishBody publishBody,
+ ContentHeaderBody contentHeaderBody,
+ List<ContentBody> contentBodies)
+ {
+ super("Immediate delivery is not possible.", publishBody, contentHeaderBody, contentBodies);
+ }
+
public int getReplyCode()
{
return AMQConstant.NO_CONSUMERS.getCode();
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/Subscription.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/Subscription.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/Subscription.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/Subscription.java Tue Oct 17 13:45:52 2006
@@ -21,7 +21,7 @@
public interface Subscription
{
- void send(AMQMessage msg, AMQQueue queue) throws AMQException;
+ void send(AMQMessage msg, AMQQueue queue) throws FailedDequeueException;
boolean isSuspended();
Modified: incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/SubscriptionImpl.java?view=diff&rev=465038&r1=465037&r2=465038
==============================================================================
--- incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/SubscriptionImpl.java (original)
+++ incubator/qpid/branches/new_persistence/java/broker/src/org/apache/qpid/server/queue/SubscriptionImpl.java Tue Oct 17 13:45:52 2006
@@ -122,10 +122,23 @@
* @param queue
* @throws AMQException
*/
- public void send(AMQMessage msg, AMQQueue queue) throws AMQException
+ public void send(AMQMessage msg, AMQQueue queue) throws FailedDequeueException
{
if (msg != null)
{
+ // if we do not need to wait for client acknowledgements
+ // we can decrement the reference count immediately.
+
+ // By doing this _before_ the send we ensure that it
+ // doesn't get sent if it can't be dequeued, preventing
+ // duplicate delivery on recovery.
+
+ // The send may of course still fail, in which case, as
+ // the message is unacked, it will be lost.
+ if (!_acks)
+ {
+ queue.dequeue(msg);
+ }
synchronized(channel)
{
long deliveryTag = channel.getNextDeliveryTag();
@@ -139,13 +152,6 @@
AMQDataBlock frame = msg.getDataBlock(deliver, channel.getChannelId());
protocolSession.writeFrame(frame);
- }
- // if we do not need to wait for client acknowledgements we can decrement
- // the reference count immediately
- if (!_acks)
- {
- msg.decrementReference();
- msg.dequeue(queue);
}
}
else