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