You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ai...@apache.org on 2008/02/11 13:11:49 UTC

svn commit: r620468 [1/4] - in /incubator/qpid/branches/thegreatmerge: ./ qpid/bin/ qpid/cpp/ qpid/cpp/examples/ qpid/cpp/examples/examples/direct/ qpid/cpp/examples/examples/fanout/ qpid/cpp/examples/examples/pub-sub/ qpid/cpp/examples/examples/reques...

Author: aidan
Date: Mon Feb 11 04:11:03 2008
New Revision: 620468

URL: http://svn.apache.org/viewvc?rev=620468&view=rev
Log:
Merged revisions 615958,615968,616353,616396,616402,616404,616445,616454,616507,616511,616542,616545,616715,616736,616927,616929,617188,617286,617303,617305,617320-617321,617510-617511,617513,617524,617527,617533,617543,617556,617582,617590,617592,617594,617596-617597,617607,617662,618412,618428,618436-618437,618450,618462,618519,618770,618982,618984,618986,618989,619012,619043,619148,619182,619189,619192,619200,619204,619424,619538,619604,619611,619626,619636,619646,619888,619903,619941 via svnmerge from 
https://svn.apache.org/repos/asf/incubator/qpid/trunk

................
  r615958 | aconway | 2008-01-28 17:17:06 +0000 (Mon, 28 Jan 2008) | 1 line
  
  Convert ClientSessionTest to boost.
................
  r615968 | aconway | 2008-01-28 17:42:22 +0000 (Mon, 28 Jan 2008) | 1 line
  
  Added disabled test and FIXME note to fix client-side race.
................
  r616353 | aconway | 2008-01-29 14:48:59 +0000 (Tue, 29 Jan 2008) | 9 lines
  
  
  Deleted unused classes, adjusted files that still mention them.
  
  D      src/qpid/framing/ChannelAdapter.cpp
  D      src/qpid/framing/ChannelAdapter.h
  D      src/qpid/framing/HandlerUpdater.h
  D      src/tests/BrokerChannelTest.cpp
  D      src/tests/MockChannel.h
................
  r616396 | aconway | 2008-01-29 15:45:29 +0000 (Tue, 29 Jan 2008) | 3 lines
  
  
  Provide public read-access to IListNode pointers, so frame handlers
  can use then to find the next frame.
................
  r616402 | aconway | 2008-01-29 15:48:35 +0000 (Tue, 29 Jan 2008) | 2 lines
  
  
  Remove references to defunct broker::ChannelHandler
................
  r616404 | aconway | 2008-01-29 15:49:55 +0000 (Tue, 29 Jan 2008) | 2 lines
  
  Log peer address with SEND/RECV messages.
................
  r616445 | aidan | 2008-01-29 16:38:53 +0000 (Tue, 29 Jan 2008) | 3 lines
  
  Initialized merge tracking via "svnmerge" with revisions "1-616438" from 
  https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1
................
  r616454 | aidan | 2008-01-29 17:25:32 +0000 (Tue, 29 Jan 2008) | 13 lines
  
  Merged revisions 579126,579137 via svnmerge from 
  https://svn.apache.org/repos/asf/incubator/qpid/branches/M2
  
  ........
    r579126 | rgreig | 2007-09-25 09:42:53 +0100 (Tue, 25 Sep 2007) | 2 lines
    
    QPID-582: fix some 1.6 compile errors
  ........
    r579137 | rgreig | 2007-09-25 10:00:34 +0100 (Tue, 25 Sep 2007) | 2 lines
    
    QPID-582 fix Java 6 compile errors
  ........
................
  r616507 | aconway | 2008-01-29 20:29:46 +0000 (Tue, 29 Jan 2008) | 2 lines
  
  
  Re-enabled build of cluster code when openais is installed.
................
  r616511 | aconway | 2008-01-29 20:39:26 +0000 (Tue, 29 Jan 2008) | 1 line
  
  Added Observer to SessionManager for cluster use.
................
  r616542 | rajith | 2008-01-29 22:24:40 +0000 (Tue, 29 Jan 2008) | 1 line
  
  added support to notify connection.close to the JMSExceptionListener
................
  r616545 | rajith | 2008-01-29 22:30:20 +0000 (Tue, 29 Jan 2008) | 1 line
  
  I accidently commited some modifications done for a quick test, I reversed those changes
................
  r616715 | arnaudsimon | 2008-01-30 10:38:11 +0000 (Wed, 30 Jan 2008) | 1 line
  
  changed default port value for tcp
................
  r616736 | gsim | 2008-01-30 12:18:53 +0000 (Wed, 30 Jan 2008) | 3 lines
  
  Parse out the userid and password from the response; a small step on the road to authentication.
................
  r616927 | aconway | 2008-01-30 22:32:17 +0000 (Wed, 30 Jan 2008) | 4 lines
  
  
  Remove Socket param from Connection constructor, pass a string id instead.
................
  r616929 | aconway | 2008-01-30 22:34:50 +0000 (Wed, 30 Jan 2008) | 6 lines
  
  
  From Ted Ross, https://issues.apache.org/jira/browse/QPID-767
  
  Bugfix: --load-dir rejected path-name-elements beginning with or ending with '.' (boost 1.33 only)
................
  r617188 | gsim | 2008-01-31 18:50:46 +0000 (Thu, 31 Jan 2008) | 4 lines
  
  Make ports accesible through socket interface.
  Add local port to each logged frame in the client Connector
................
  r617286 | aconway | 2008-01-31 23:14:49 +0000 (Thu, 31 Jan 2008) | 3 lines
  
  
  Generate URLs for local host.
................
  r617303 | rhs | 2008-01-31 23:50:43 +0000 (Thu, 31 Jan 2008) | 1 line
  
  fixed svn:executable and svn:eol-style
................
  r617305 | rhs | 2008-01-31 23:52:15 +0000 (Thu, 31 Jan 2008) | 1 line
  
  avoid use of Throwable.initCause(e) that is illegal with java 1.6
................
  r617320 | rhs | 2008-02-01 01:03:46 +0000 (Fri, 01 Feb 2008) | 1 line
  
  ant build system
................
  r617321 | rhs | 2008-02-01 01:25:27 +0000 (Fri, 01 Feb 2008) | 1 line
  
  futzed with deps for faster build, and fixed bug in manifest generation
................
  r617510 | rhs | 2008-02-01 14:49:33 +0000 (Fri, 01 Feb 2008) | 1 line
  
  added junit dependency
................
  r617511 | rhs | 2008-02-01 14:53:52 +0000 (Fri, 01 Feb 2008) | 1 line
  
  fixed typo
................
  r617513 | rhs | 2008-02-01 14:59:49 +0000 (Fri, 01 Feb 2008) | 1 line
  
  more dependency fixes
................
  r617524 | rhs | 2008-02-01 15:46:44 +0000 (Fri, 01 Feb 2008) | 1 line
  
  added support for running one test, and made test output pretty
................
  r617527 | rhs | 2008-02-01 15:55:30 +0000 (Fri, 01 Feb 2008) | 1 line
  
  less confusing options
................
  r617533 | aconway | 2008-02-01 16:03:02 +0000 (Fri, 01 Feb 2008) | 9 lines
  
  
  Added cluster URL configuration, defaults to all interfaces.
  
  src/qpid/Plugin.h - added doxygen
  src/qpid/Url.cpp,.h - cache string rep, op==, istream/ostream ops.
  src/qpid/broker/Broker.h,.cpp - removed getUrl()
  src/qpid/cluster/Cluster.h,.cpp - use Url class
  src/qpid/cluster/ClusterPlugin.cpp - added --url configuration.
................
  r617543 | rhs | 2008-02-01 16:16:22 +0000 (Fri, 01 Feb 2008) | 1 line
  
  more dependency fixes
................
  r617556 | rhs | 2008-02-01 16:58:16 +0000 (Fri, 01 Feb 2008) | 1 line
  
  fixed build order
................
  r617582 | aconway | 2008-02-01 18:02:42 +0000 (Fri, 01 Feb 2008) | 8 lines
  
  
  Cluster code fixed for changes in codebase.
   - Using SessionManager::Observer 
   - Better ais test setup, only need to be member of ais group.
   - Update cluster_client
   - SessionState holds handler chains.
   - Cluster frames include next handler ptr.
................
  r617590 | gsim | 2008-02-01 18:21:01 +0000 (Fri, 01 Feb 2008) | 3 lines
  
  Initial cut of inter-broker bridging
................
  r617592 | gsim | 2008-02-01 18:26:08 +0000 (Fri, 01 Feb 2008) | 3 lines
  
  Oops, missed makefile in last commit.
................
  r617594 | gsim | 2008-02-01 18:27:23 +0000 (Fri, 01 Feb 2008) | 3 lines
  
  Missed a couple of new files in previous commit.
................
  r617596 | gsim | 2008-02-01 18:28:14 +0000 (Fri, 01 Feb 2008) | 3 lines
  
  Use 'guest' as default uid and password for tests.
................
  r617597 | aconway | 2008-02-01 18:28:46 +0000 (Fri, 01 Feb 2008) | 1 line
  
  svn:ignore properties.
................
  r617607 | gsim | 2008-02-01 18:54:27 +0000 (Fri, 01 Feb 2008) | 3 lines
  
  Remove includes to files no longer generated.
................
  r617662 | rhs | 2008-02-01 21:43:20 +0000 (Fri, 01 Feb 2008) | 1 line
  
  added a detailed help target and cleaned up descriptions
................
  r618412 | cctrieloff | 2008-02-04 20:11:39 +0000 (Mon, 04 Feb 2008) | 1 line
  
  add interval pu/sub options to test many concurrent connections
................
  r618428 | cctrieloff | 2008-02-04 20:38:19 +0000 (Mon, 04 Feb 2008) | 1 line
  
  Turn management on by defualt
................
  r618436 | rhs | 2008-02-04 21:05:39 +0000 (Mon, 04 Feb 2008) | 1 line
  
  set up logging for tests
................
  r618437 | rhs | 2008-02-04 21:06:35 +0000 (Mon, 04 Feb 2008) | 1 line
  
  added exception callback to ConnectonDelegate
................
  r618450 | rhs | 2008-02-04 21:43:01 +0000 (Mon, 04 Feb 2008) | 1 line
  
  clear the report directory before generating test report
................
  r618462 | rhs | 2008-02-04 22:11:22 +0000 (Mon, 04 Feb 2008) | 1 line
  
  added a TransportException
................
  r618519 | rajith | 2008-02-05 02:37:13 +0000 (Tue, 05 Feb 2008) | 2 lines
  
  Added code to connect the network error exceptions to the JMS Exception listener.
................
  r618770 | aconway | 2008-02-05 20:44:14 +0000 (Tue, 05 Feb 2008) | 16 lines
  
  Added testSendToSelf for https://bugzilla.redhat.com/show_bug.cgi?id=410551
  M      src/tests/ClientSessionTest.cpp
  
  Disabled management for BrokerFixture - management singleton assumes
  only one broker per process, causes shutdown races with fixtures.
  M      src/tests/BrokerFixture.h
  
  Made Timer::stop() idempotent
  M      src/qpid/broker/Timer.cpp
  M      src/qpid/broker/Timer.h
  
  Added STL-style size() and empty()
  M      src/qpid/sys/BlockingQueue.h
  M      src/qpid/client/LocalQueue.cpp
  M      src/qpid/client/LocalQueue.h
................
  r618982 | arnaudsimon | 2008-02-06 12:47:27 +0000 (Wed, 06 Feb 2008) | 1 line
  
  Changed for using AUTO_ACK session
................
  r618984 | arnaudsimon | 2008-02-06 12:52:19 +0000 (Wed, 06 Feb 2008) | 1 line
  
  Byte message were losing their payload see QPI-779
................
  r618986 | arnaudsimon | 2008-02-06 12:56:20 +0000 (Wed, 06 Feb 2008) | 1 line
  
  QPID-777 and QPID-778
................
  r618989 | arnaudsimon | 2008-02-06 13:40:38 +0000 (Wed, 06 Feb 2008) | 1 line
  
  Changed session mode to AUTO_ACK so mesages are removed from broker between two tests.
................
  r619012 | arnaudsimon | 2008-02-06 15:14:42 +0000 (Wed, 06 Feb 2008) | 1 line
  
  Changed for using Window mode see QPID-778
................
  r619043 | arnaudsimon | 2008-02-06 16:00:22 +0000 (Wed, 06 Feb 2008) | 1 line
  
  Added close logic for releasing pre-fetched messages, see QPID-778
................
  r619148 | aconway | 2008-02-06 20:49:05 +0000 (Wed, 06 Feb 2008) | 8 lines
  
  
  Replaced --enable-cluster option with --with-cpg to enable/disable CPG.
  
  make rpmbuild uses --with-cpg, will fail unless openais is installed.
  
  Normal builds respect explicit --with/--without, or use CPG if
  installed when neither is specified.
................
  r619182 | rhs | 2008-02-06 22:13:31 +0000 (Wed, 06 Feb 2008) | 1 line
  
  added close notification
................
  r619189 | rajith | 2008-02-06 22:36:02 +0000 (Wed, 06 Feb 2008) | 2 lines
  
  Added code to pass in the throwable to the closedListener so that it can be included in the JMS Exception thrown via the ExceptionListener
................
  r619192 | rajith | 2008-02-06 22:38:12 +0000 (Wed, 06 Feb 2008) | 2 lines
  
  Removed the System.outs from the code.
................
  r619200 | aconway | 2008-02-06 22:49:10 +0000 (Wed, 06 Feb 2008) | 12 lines
  
  From Ted Ross, https://issues.apache.org/jira/browse/QPID-780
  Implementation of --data-dir for qpidd.
  
  Additions by myself:
   - set QPID_DATA_DIR= in test env so existing tests can run with no data dir.
   - src/Makefile.am and qpidc.spec.in install /var/lib/qpidd directory.
  
  NOTE: qpidd with no optoins will now FAIL if it cannot write /var/lib/qpidd.
  Start it with --data-dir= or set QPID_DATA_DIR= in your environement to
  run with no data directory.
................
  r619204 | rhs | 2008-02-06 22:50:54 +0000 (Wed, 06 Feb 2008) | 1 line
  
  fixed log level defaults
................
  r619424 | aconway | 2008-02-07 14:25:32 +0000 (Thu, 07 Feb 2008) | 2 lines
  
  
  Quote unprintable control characters in log output.
................
  r619538 | rhs | 2008-02-07 18:15:20 +0000 (Thu, 07 Feb 2008) | 1 line
  
  added test for exception listener; fixed NPE
................
  r619604 | aconway | 2008-02-07 19:51:01 +0000 (Thu, 07 Feb 2008) | 3 lines
  
  qpidc.spec.in: Build --without-cpg, no point adding the dependency till cluster
  functionality is available.
................
  r619611 | aconway | 2008-02-07 20:02:14 +0000 (Thu, 07 Feb 2008) | 2 lines
  
  Disable QPID_DATA_DIR for verify tests.
................
  r619626 | nsantos | 2008-02-07 20:18:54 +0000 (Thu, 07 Feb 2008) | 1 line
  
  create missing dir
................
  r619636 | aconway | 2008-02-07 21:06:01 +0000 (Thu, 07 Feb 2008) | 2 lines
  
  Removed signal-unsafe code from shutdown handler. 
................
  r619646 | aconway | 2008-02-07 21:31:21 +0000 (Thu, 07 Feb 2008) | 3 lines
  
  Clean shutdown of broker: Moved signal unsafe code from Broker::shutdown
  to ~Broker, moved shutdown logging from shutdown handler to main() in qpidd.cpp
................
  r619888 | rhs | 2008-02-08 13:50:55 +0000 (Fri, 08 Feb 2008) | 1 line
  
  simplied QpidTestCase's interface for running non vm brokers and set up build system to run cpp tests easily
................
  r619903 | aconway | 2008-02-08 15:01:30 +0000 (Fri, 08 Feb 2008) | 11 lines
  
  
  Refactored verify scripts, added verify for python Examples.
  To verify an example: <qpid-trunk>/bin/verify <example-dir>
  See comments in bin/verify for more details.
  
  Changes: 
   - Each example dir has its own verify script and verify.in.
   - Added sys.stdout.flush() to som python examples so verify can tell when they're ready.
   - Made python examples svn:executable.
   - C++ examples/Makefile.am runs python examples
................
  r619941 | aconway | 2008-02-08 17:02:55 +0000 (Fri, 08 Feb 2008) | 3 lines
  
  
  Added verify scripts to run mixed python/cpp examples.
  bin/verify_all runs all examples.
................

Added:
    incubator/qpid/branches/thegreatmerge/qpid/bin/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/bin/verify
    incubator/qpid/branches/thegreatmerge/qpid/bin/verify_all
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/bin/verify_all
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/direct/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/direct/verify
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/direct/verify_cpp_python
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/direct/verify_cpp_python
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/direct/verify_cpp_python.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/direct/verify_cpp_python.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/direct/verify_python_cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/direct/verify_python_cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/direct/verify_python_cpp.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/direct/verify_python_cpp.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/fanout/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/fanout/verify_cpp_python
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/fanout/verify_cpp_python.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/fanout/verify_python_cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/pub-sub/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/pub-sub/verify
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/pub-sub/verify_cpp_python
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/pub-sub/verify_cpp_python
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/pub-sub/verify_cpp_python.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/pub-sub/verify_cpp_python.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/pub-sub/verify_python_cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/pub-sub/verify_python_cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/pub-sub/verify_python_cpp.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/pub-sub/verify_python_cpp.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/request-response/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/request-response/verify
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/request-response/verify_cpp_python
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/request-response/verify_cpp_python
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/request-response/verify_cpp_python.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/request-response/verify_cpp_python.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/examples/request-response/verify_python_cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/examples/examples/request-response/verify_python_cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/DataDir.cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/src/qpid/DataDir.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/DataDir.h
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/src/qpid/DataDir.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Bridge.cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Bridge.h
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Bridge.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/ais_run
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/src/tests/ais_run
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/ais_test.cpp
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/cpp/src/tests/ais_test.cpp
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/broker/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/build.deps
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/build.deps
    incubator/qpid/branches/thegreatmerge/qpid/java/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/client/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/client/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ExceptionListenerTest.java
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ExceptionListenerTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/common.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/common/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/common/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/common/jython-2.2-rc2.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/common/jython-2.2-rc2.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpid/util/concurrent/Condition.java
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/util/concurrent/Condition.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/TransportException.java
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/TransportException.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/test/java/org/apache/qpidity/
      - copied from r619941, incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpidity/
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/test/java/org/apache/qpidity/transport/
      - copied from r619941, incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpidity/transport/
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/test/java/org/apache/qpidity/transport/ConnectionTest.java
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpidity/transport/ConnectionTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/integrationtests/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/integrationtests/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/
      - copied from r619941, incubator/qpid/trunk/qpid/java/lib/
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/backport-util-concurrent-2.2.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/backport-util-concurrent-2.2.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/com.ibm.icu-3.4.4.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/com.ibm.icu-3.4.4.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/commons-cli-1.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/commons-cli-1.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/commons-codec-1.3.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/commons-codec-1.3.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/commons-collections-3.2.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/commons-collections-3.2.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/commons-configuration-1.2.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/commons-configuration-1.2.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/commons-lang-2.2.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/commons-lang-2.2.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/commons-logging-1.0.4.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/commons-logging-1.0.4.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/geronimo-jms_1.1_spec-1.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/geronimo-jms_1.1_spec-1.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/javacc.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/javacc.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/junit-3.8.1.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/junit-3.8.1.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/junit-toolkit-0.6-SNAPSHOT.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/junit-toolkit-0.6-SNAPSHOT.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/log4j-1.2.12.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/log4j-1.2.12.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/mina-core-1.0.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/mina-core-1.0.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/mina-filter-ssl-1.0.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/mina-filter-ssl-1.0.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.commands-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.commands-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.contenttype-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.contenttype-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.expressions-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.expressions-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.jobs-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.jobs-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.runtime-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.runtime-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.runtime.compatibility.auth-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.runtime.compatibility.auth-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.core.runtime.compatibility.registry-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.core.runtime.compatibility.registry-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.equinox.common-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.equinox.common-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.equinox.preferences-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.equinox.preferences-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.equinox.registry-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.equinox.registry-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.help-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.help-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.jface-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.jface-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.osgi-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.osgi-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.swt-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.swt-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.swt.win32.win32.x86-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.swt.win32.win32.x86-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.ui-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.ui-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.ui.forms-3.2.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.ui.forms-3.2.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/org.eclipse.ui.workbench-3.2.1.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/org.eclipse.ui.workbench-3.2.1.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/slf4j-api-1.4.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/slf4j-api-1.4.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/slf4j-log4j12-1.4.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/slf4j-log4j12-1.4.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/lib/xalan-2.7.0.jar
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/lib/xalan-2.7.0.jar
    incubator/qpid/branches/thegreatmerge/qpid/java/log4j-test.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/log4j-test.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/management/eclipse-plugin/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/management/eclipse-plugin/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/module.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/module.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/perftests/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/perftests/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/systests/build.xml
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/systests/build.xml
    incubator/qpid/branches/thegreatmerge/qpid/java/test-provider.properties
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/java/test-provider.properties
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/direct/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/direct/verify
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/direct/verify.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/direct/verify.in
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/fanout/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/fanout/verify
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/fanout/verify.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/fanout/verify.in
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/pubsub/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/pubsub/verify
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/pubsub/verify.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/pubsub/verify.in
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/request-response/verify
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/request-response/verify
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/request-response/verify.in
      - copied unchanged from r619941, incubator/qpid/trunk/qpid/python/examples/request-response/verify.in
Removed:
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/verify
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/SessionManager.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/SessionManager.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/framing/ChannelAdapter.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/framing/ChannelAdapter.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/framing/HandlerUpdater.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/BrokerChannelTest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/Cluster.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/Cluster.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/Cluster_child.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/MockChannel.h
Modified:
    incubator/qpid/branches/thegreatmerge/   (props changed)
    incubator/qpid/branches/thegreatmerge/qpid/cpp/configure.ac
    incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/Makefile.am
    incubator/qpid/branches/thegreatmerge/qpid/cpp/qpidc.spec.in
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/Makefile.am
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/cluster.mk
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/IList.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Plugin.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/BrokerAdapter.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionFactory.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionHandler.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/SessionHandler.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/SessionHandler.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/SessionManager.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/SessionManager.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/SessionState.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/SessionState.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Timer.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Timer.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/client/Connector.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/client/Connector.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/client/LocalQueue.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/client/LocalQueue.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/Cluster.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/Cluster.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/ClusterPlugin.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/Cpg.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/cluster/Cpg.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/framing/FrameDefaultVisitor.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/log/Statement.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/Acceptor.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/AsynchIOAcceptor.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/BlockingQueue.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/ConnectionInputHandler.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/Poller.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/Socket.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/sys/posix/Socket.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpidd.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/   (props changed)
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/BrokerFixture.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/ClientSessionTest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/Cpg.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/IList.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/Makefile.am
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/MessageTest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/QueueTest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/TestOptions.h
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/TxAckTest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/TxPublishTest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/Url.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/ais_check
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/cluster.mk
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/cluster_client.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/logging.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/perftest.cpp
    incubator/qpid/branches/thegreatmerge/qpid/cpp/src/tests/start_cluster
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/bin/qpid-passwd   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/bin/qpid-server   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/bin/qpid.start   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/bin/qpid.stop   (props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/bin/qpid.stopall   (props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/broker/bin/runAll   (props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/client/example/src/main/java/org/apache/qpid/example/jmsexample/direct/Producer.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionDelegate_0_10.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_8.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_8.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/Client.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/ClosedListener.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/JMSTestCase.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/impl/ClientSession.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/impl/DemoClient.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/impl/LargeMsgDemoClient.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/nclient/interop/BasicInteropTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/main/java/org/apache/qpidity/njms/SessionImpl.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/Client.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java
    incubator/qpid/branches/thegreatmerge/qpid/java/client/src/test/java/org/apache/qpid/testutil/QpidTestCase.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/bin/qpid-run   (props changed)
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/BrokerDetailsImpl.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/ErrorCode.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/ToyBroker.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/ToyClient.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/Connection.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/ConnectionDelegate.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/Echo.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/Receiver.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Assembler.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/InputHandler.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
    incubator/qpid/branches/thegreatmerge/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaSender.java
    incubator/qpid/branches/thegreatmerge/qpid/java/plugins/pom.xml
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/direct/declare_queues.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/direct/direct_consumer.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/direct/direct_producer.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/direct/listener.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/fanout/declare_queues.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/fanout/fanout_consumer.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/fanout/fanout_producer.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/fanout/listener.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/pubsub/topic_publisher.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/pubsub/topic_subscriber.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/request-response/client.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/python/examples/request-response/server.py   (contents, props changed)
    incubator/qpid/branches/thegreatmerge/qpid/specs/management-schema.xml

Propchange: incubator/qpid/branches/thegreatmerge/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Feb 11 04:11:03 2008
@@ -1 +1 @@
-/incubator/qpid/trunk:1-615947
+/incubator/qpid/trunk:1-619941

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/configure.ac
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/configure.ac?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/configure.ac (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/configure.ac Mon Feb 11 04:11:03 2008
@@ -138,29 +138,33 @@
 AC_CHECK_HEADERS([boost/shared_ptr.hpp uuid/uuid.h],,
   AC_MSG_ERROR([Missing required header files.]))
 
-# Check for cluster requirements. Need openais 0.80.3 or higher.x1
-save_ldflags=$LDFLAGS  
+# Check for optional CPG requirement.
+save_ldflags=$LDFLAGS
 LDFLAGS="$LDFLAGS -L/usr/lib/openais -L/usr/lib64/openais"
-AC_CHECK_LIB([cpg],[cpg_local_get],[cpg_lib=yes],[cpg_lib=no])
-AC_CHECK_HEADER([openais/cpg.h],[cpg_h=yes])
-test x$cpg_lib = xyes -a x$cpg_h = xyes && enable_CLUSTER=yes 
 
-if test x$enable_CLUSTER = xyes; then
-  AC_ARG_ENABLE([cluster],  
-    [AS_HELP_STRING([--disable-cluster],
-      [disable cluster functionality (default enabled)])],
-    [enable_CLUSTER=$enableval])   
-fi
-AM_CONDITIONAL([CLUSTER], [test x$enable_CLUSTER = xyes])
-if test x$enable_CLUSTER = xyes; then
-  CPPFLAGS+=" -DCLUSTER"
-  SPEC_REQUIRES_OPENAIS="Requires: openais"
-  AC_SUBST(SPEC_REQUIRES_OPENAIS)
-  SPEC_REQUIRES_OPENAIS_DEVEL="Requires: openais-devel"
-  AC_SUBST(SPEC_REQUIRES_OPENAIS_DEVEL)
+AC_ARG_WITH([cpg],  
+  [AS_HELP_STRING([--with-cpg], [Build with CPG support])],
+  [case "${withval}" in
+    yes)			# yes - enable
+    with_CPG=yes
+    AC_CHECK_LIB([cpg],[cpg_initialize],,[AC_MSG_ERROR([libcpg not found, install openais])])
+    AC_CHECK_HEADERS([openais/cpg.h],,[AC_MSG_ERROR([openais/cpg.h not found, install openais-devel])])
+    ;;
+    no)				# no -disable
+    with_CPG=no
+    ;; 
+    *) AC_MSG_ERROR([Bad value ${withval} for --with-cpg option]) ;;
+   esac],
+   [ # not specified - enable if libs/headers available.
+    with_CPG=yes
+    AC_CHECK_LIB([cpg],[cpg_initialize],,[with_CPG=no])
+    AC_CHECK_HEADERS([openais/cpg.h],,[with_CPG=no])
+   ]
+)
+AM_CONDITIONAL([CPG], [test x$with_CPG = xyes])
+if test x$with_CPG = xyes; then
+  CPPFLAGS+=" -DCPG"
 else
-  SPEC_CONFIGURE_OPTS=--disable-cluster  
-  AC_SUBST(SPEC_CONFIGURE_OPTS)
   LDFLAGS=$save_ldflags	    
 fi
 	

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/Makefile.am?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/Makefile.am (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/examples/Makefile.am Mon Feb 11 04:11:03 2008
@@ -17,13 +17,7 @@
 	examples/direct/listener.cpp				\
 	examples/direct/declare_queues.cpp
 
-VERIFY_SCRIPT=verify \
-	examples/request-response/verify.in \
-	examples/fanout/verify.in \
-	examples/pub-sub/verify.in \
-	examples/direct/verify.in 
-
-EXTRA_DIST=$(nobase_pkgdata_DATA) $(VERIFY_SCRIPT)
+EXTRA_DIST=$(nobase_pkgdata_DATA)
 
 # Note: we don't use normal automake SUBDIRS because the example
 # makefiles don't understand all the recursive automake targets.
@@ -35,7 +29,17 @@
 abs_top_builddir=@abs_top_builddir@
 abs_top_srcdir=@abs_top_srcdir@
 
-VERIFY=$(abs_top_srcdir)/examples/verify
+VERIFY=$(top_srcdir)/../bin/verify
+PYTHON_EXAMPLES=$(top_srcdir)/../python/examples
+EXAMPLES= \
+	examples/pub-sub \
+	examples/fanout \
+	examples/direct \
+	examples/request-response \
+	$(PYTHON_EXAMPLES)/pubsub \
+	$(PYTHON_EXAMPLES)/fanout \
+	$(PYTHON_EXAMPLES)/direct \
+	$(PYTHON_EXAMPLES)/request-response
 
 # Build the examples in the source tree.
 all-local:
@@ -43,7 +47,7 @@
 
 # Verify the examples in the buid tree.
 check-local: all-local
-	cd examples && QPIDD=$(abs_top_builddir)/src/qpidd $(VERIFY)
+	QPID_DATA_DIR= QPIDD=$(top_builddir)/src/qpidd $(VERIFY) $(EXAMPLES)
 
 # Build and verify the installed examples, then clean up to avoid rpmbuild warnings.
 EXAMPLE_FLAGS=-I$(DESTDIR)$(includedir) -L$(DESTDIR)$(libdir) -Wl,-rpath,$(DESTDIR)$(libdir)
@@ -53,7 +57,3 @@
 	cd $(EXAMPLE_DIR) && QPIDD=$(sbindir)/qpidd $(VERIFY)
 	cd $(EXAMPLE_DIR) && $(MAKE) clean
 
-# Tarball with verify script that can be untarred & run on
-# installed examples.
-verify.tar: $(VERIFY_SCRIPT)
-	tar cf verify.tar $(VERIFY_SCRIPT)

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/qpidc.spec.in
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/qpidc.spec.in?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/qpidc.spec.in (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/qpidc.spec.in Mon Feb 11 04:11:03 2008
@@ -52,7 +52,7 @@
 Summary: An AMQP message broker daemon
 Group: System Environment/Daemons
 Requires: %name = %version-%release
-@SPEC_REQUIRES_OPENAIS@
+Requires: openais
 
 %description -n %{qpidd}
 A message broker daemon that receives stores and routes messages using
@@ -63,7 +63,7 @@
 Group: Development/System
 Requires: %name-devel = %version-%release
 Requires: %{qpidd} = %version-%release
-@SPEC_REQUIRES_OPENAIS_DEVEL@
+Requires: openais-devel
 
 %description -n %{qpidd}-devel
 Libraries and header files for developing extensions to the
@@ -73,7 +73,7 @@
 %setup -q
 
 %build
-%configure --disable-static @SPEC_CONFIGURE_OPTS@ CXXFLAGS="-O3 -DNDEBUG"
+%configure --disable-static --without-cpg CXXFLAGS="-O3 -DNDEBUG"
 make %{?_smp_mflags}
 # Remove this generated perl file, we don't need it and it upsets rpmlint.
 rm docs/api/html/installdox
@@ -82,6 +82,7 @@
 rm -rf %{buildroot}
 make install DESTDIR=%{buildroot}
 install  -Dp -m0755 etc/qpidd %{buildroot}%{_initrddir}/qpidd
+install -d -m0755 %{buildroot}%{_localstatedir}/qpidd
 rm -f %{buildroot}%_libdir/*.a
 rm -f %{buildroot}%_libdir/*.la
 
@@ -98,6 +99,7 @@
 %_libdir/libqpidcommon.so.0.1.0
 %_libdir/libqpidclient.so.0
 %_libdir/libqpidclient.so.0.1.0
+%_localstatedir/qpidd
 %config(noreplace) %_sysconfdir/qpidd.conf
 
 %files devel
@@ -155,10 +157,10 @@
 
 %changelog
 
-* Mon Jan 21 2008 Gordon Sim <gs...@redhat.com> - 0.2-18                                                                       
+* Mon Jan 21 2008 Gordon Sim <gs...@redhat.com> - 0.2-18
 - bump up rev for recent changes to plugin modules & mgmt
 
-* Thu Jan 03 2008 Nuno Santos <ns...@redhat.com> - 0.2-17                                                                       
+* Thu Jan 03 2008 Nuno Santos <ns...@redhat.com> - 0.2-17
 - add missing header file SessionManager.h
 
 * Thu Jan 03 2008 Nuno Santos <ns...@redhat.com> - 0.2-16

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/Makefile.am
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/Makefile.am?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/Makefile.am (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/Makefile.am Mon Feb 11 04:11:03 2008
@@ -111,7 +111,6 @@
   qpid/framing/Array.cpp \
   qpid/framing/BodyHolder.cpp \
   qpid/framing/BodyHandler.cpp \
-  qpid/framing/ChannelAdapter.cpp \
   qpid/framing/Buffer.cpp \
   qpid/framing/FieldTable.cpp \
   qpid/framing/FieldValue.cpp \
@@ -141,6 +140,7 @@
   qpid/sys/SystemInfo.cpp \
   qpid/sys/Serializer.cpp \
   qpid/sys/Shlib.cpp \
+  qpid/DataDir.cpp \
   qpid/Options.cpp \
   qpid/log/Options.cpp \
   qpid/log/Selector.cpp \
@@ -156,6 +156,7 @@
   qpid/broker/Exchange.cpp \
   qpid/broker/Queue.cpp \
   qpid/broker/PersistableMessage.cpp \
+  qpid/broker/Bridge.cpp \
   qpid/broker/Connection.cpp \
   qpid/broker/ConnectionHandler.cpp \
   qpid/broker/ConnectionFactory.cpp \
@@ -236,6 +237,7 @@
 nobase_include_HEADERS = \
   $(platform_hdr) \
   qpid/assert.h \
+  qpid/DataDir.h \
   qpid/Exception.h \
   qpid/Msg.h \
   qpid/Options.h \
@@ -253,6 +255,7 @@
   qpid/broker/Exchange.h \
   qpid/broker/Queue.h \
   qpid/broker/BrokerSingleton.h \
+  qpid/broker/Bridge.h \
   qpid/broker/Connection.h \
   qpid/broker/ConnectionFactory.h \
   qpid/broker/ConnectionHandler.h \
@@ -358,7 +361,6 @@
   qpid/framing/BodyHandler.h \
   qpid/framing/Buffer.h \
   qpid/framing/ChannelHandler.h \
-  qpid/framing/ChannelAdapter.h \
   qpid/framing/FieldTable.h \
   qpid/framing/FieldValue.h \
   qpid/framing/FrameDefaultVisitor.h \
@@ -367,7 +369,6 @@
   qpid/framing/FrameSet.h \
   qpid/framing/FramingContent.h \
   qpid/framing/Handler.h \
-  qpid/framing/HandlerUpdater.h \
   qpid/framing/HeaderProperties.h \
   qpid/framing/InitiationHandler.h \
   qpid/framing/Invoker.h \
@@ -438,4 +439,8 @@
 # Force build of qpidd during dist phase so help2man will work.
 dist-hook: $(BUILT_SOURCES)
 	$(MAKE) qpidd
+
+# Create the default data directory
+install-data-local:
+	$(mkinstalldirs) $(DESTDIR)/$(localstatedir)/lib/qpidd
 

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/cluster.mk
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/cluster.mk?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/cluster.mk (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/cluster.mk Mon Feb 11 04:11:03 2008
@@ -3,24 +3,22 @@
 # 
 lib_LTLIBRARIES += libqpidcluster.la
 
-# if CLUSTER
+if CPG
 
-# libqpidcluster_la_SOURCES = \
-#   qpid/cluster/Cluster.cpp \
-#   qpid/cluster/Cluster.h \
-#   qpid/cluster/Cpg.cpp \
-#   qpid/cluster/Cpg.h \
-#   qpid/cluster/Dispatchable.h \
-#   qpid/cluster/ClusterPlugin.cpp \
-#   qpid/cluster/ClassifierHandler.h \
-#   qpid/cluster/ClassifierHandler.cpp \
-#   qpid/cluster/SessionManager.h \
-#   qpid/cluster/SessionManager.cpp
+libqpidcluster_la_SOURCES = \
+  qpid/cluster/Cluster.cpp \
+  qpid/cluster/Cluster.h \
+  qpid/cluster/Cpg.cpp \
+  qpid/cluster/Cpg.h \
+  qpid/cluster/Dispatchable.h \
+  qpid/cluster/ClusterPlugin.cpp \
+  qpid/cluster/ClassifierHandler.h \
+  qpid/cluster/ClassifierHandler.cpp 
 
-# libqpidcluster_la_LIBADD= -lcpg libqpidbroker.la
+libqpidcluster_la_LIBADD= -lcpg libqpidbroker.la
 
-# else
+else
 # Empty stub library to satisfy rpm spec file.
 libqpidcluster_la_SOURCES = 
 
-#endif
+endif

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/IList.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/IList.h?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/IList.h (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/IList.h Mon Feb 11 04:11:03 2008
@@ -57,6 +57,8 @@
     }
   friend class IList<T,N>;
   public:
+    typedef IList<T,N> IListType;
+    
     IListNode(IListNode* p=0) : prev(p), next(p) {}
     T* getNext() { return next ? next->self() : 0; }
     T* getPrev() { return prev ? prev->self() : 0; }
@@ -97,7 +99,7 @@
 
   public:
     IList() {}
-    ~IList() { clear(); }
+    ~IList() { clear(); anchor.erase(); }
     typedef size_t size_type;
     typedef T value_type;
     /// pointer type is an intrusive_ptr
@@ -120,6 +122,7 @@
 
     /// Note: takes a non-const reference, unlike standard containers.
     void insert(iterator pos, reference x) { x.Node::insert(pos.ptr); }
+    void insert(iterator pos, pointer x) { x->Node::insert(pos.ptr); }
     void erase(iterator pos) { pos.ptr->erase(); }
     void swap(IList &x) { anchor.swap(x.anchor); }
 
@@ -128,12 +131,14 @@
     void pop_back() { assert(!empty()); erase(last()); }
     /// Note: takes a non-const reference, unlike standard containers.
     void push_back(reference x) { insert(end(), x); }
+    void push_back(pointer x) { insert(end(), x); }
 
     reference front() { assert(!empty()); return *begin(); }
     const_reference front() const { assert(!empty()); return *begin(); }
     void pop_front() { assert(!empty()); erase(begin()); }
     /// Note: takes a non-const reference, unlike standard containers.
     void push_front(reference x) { insert(begin(), x); }
+    void push_front(pointer x) { insert(begin(), x); }
 
     bool empty() const { return begin() == end(); }
     void clear() { while (!empty()) { pop_front(); } }

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Plugin.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Plugin.h?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Plugin.h (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Plugin.h Mon Feb 11 04:11:03 2008
@@ -70,15 +70,17 @@
 
     /**
      * Initialize Plugin functionality on a Target.
-     * 
      * Plugins should ignore targets they don't recognize.
+     *
+     * Called before the target itself is initialized.
      */
     virtual void earlyInitialize(Target&) = 0;
 
     /**
      * Initialize Plugin functionality on a Target.
-     * 
      * Plugins should ignore targets they don't recognize.
+     *
+     * Called after the target is fully initialized.
      */
     virtual void initialize(Target&) = 0;
 

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.cpp?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.cpp (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.cpp Mon Feb 11 04:11:03 2008
@@ -16,20 +16,68 @@
  *
  */
 
-#include "Url.h"
+#include "qpid/Url.h"
+#include "qpid/Exception.h"
+#include "qpid/Msg.h"
+
 #include <sstream>
 #include <boost/spirit.hpp>
 #include <boost/spirit/actor.hpp>
 
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <unistd.h>
+#include <arpa/inet.h>
+#include <stdio.h>
+#include <errno.h>
+
 using namespace boost::spirit;
 using namespace std;
 
 namespace qpid {
 
+std::ostream& operator<<(std::ostream& os, const TcpAddress& a) {
+    return os << "tcp:" << a.host << ":" << a.port;
+}
+
+std::istream& operator>>(std::istream&, const TcpAddress&);
+
+Url Url::getHostNameUrl(uint16_t port) {
+    char name[HOST_NAME_MAX];
+    if (::gethostname(name, sizeof(name)) != 0)
+        throw InvalidUrl(QPID_MSG("Cannot get host name: " << strError(errno)));
+    return Url(TcpAddress(name, port));
+}
+
+static const string LOCALHOST("127.0.0.1");
+
+Url Url::getIpAddressesUrl(uint16_t port) {
+    Url url;
+    int s = socket (PF_INET, SOCK_STREAM, 0);
+    for (int i=1;;i++) {
+        struct ifreq ifr;
+        ifr.ifr_ifindex = i;
+        if (::ioctl (s, SIOCGIFNAME, &ifr) < 0)
+            break;
+        /* now ifr.ifr_name is set */
+        if (::ioctl (s, SIOCGIFADDR, &ifr) < 0)
+            continue;
+        struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr;
+        string addr(inet_ntoa(sin->sin_addr));
+        if (addr != LOCALHOST)
+            url.push_back(TcpAddress(addr, port));
+    }
+    close (s);
+    return url;
+}
+
 string Url::str() const {
-    ostringstream os;
-    os << *this;
-    return os.str();
+    if (cache.empty() && !this->empty()) {
+        ostringstream os;
+        os << *this;
+        cache = os.str();
+    }
+    return cache;
 }
 
 ostream& operator<<(ostream& os, const Url& url) {
@@ -101,13 +149,22 @@
 };
 
 void Url::parse(const char* url) {
+    cache.clear();
     if (!boost::spirit::parse(url, UrlGrammar(*this)).full)
         throw InvalidUrl(string("Invalid AMQP url: ")+url);
 }
 
 void Url::parseNoThrow(const char* url) {
+    cache.clear();
     if (!boost::spirit::parse(url, UrlGrammar(*this)).full)
         clear();
+}
+
+std::istream& operator>>(std::istream& is, Url& url) {
+    std::string s;
+    is >> s;
+    url.parse(s);
+    return is;
 }
 
 } // namespace qpid

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.h?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.h (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/Url.h Mon Feb 11 04:11:03 2008
@@ -42,16 +42,21 @@
     return y.host==x.host && y.port == x.port;
 }
 
-inline std::ostream& operator<<(std::ostream& os, const TcpAddress& a) {
-    return os << "tcp:" << a.host << ":" << a.port;
-}
+std::ostream& operator<<(std::ostream& os, const TcpAddress& a);
 
-/** Address is a variant of all address types. */
+/** Address is a variant of all address types, more coming in future. */
 typedef boost::variant<TcpAddress> Address;
 
-
 /** An AMQP URL contains a list of addresses */
 struct Url : public std::vector<Address> {
+
+    /** Url with the hostname as returned by gethostname(2)  */
+    static Url getHostNameUrl(uint16_t port);
+
+    /** Url with local IP address(es), may be more than one address
+     * on a multi-homed host. */
+    static Url getIpAddressesUrl(uint16_t port);
+
     struct InvalidUrl : public Exception {
         InvalidUrl(const std::string& s) : Exception(s) {}
     };
@@ -71,20 +76,30 @@
     /** Parse url, throw InvalidUrl if invalid. */
     explicit Url(const char* url) { parse(url); }
 
+    template<class T> Url& operator=(T s) { parse(s); return *this; }
+    
     /** Replace contents with parsed URL as defined in
      * https://wiki.108.redhat.com/jira/browse/AMQP-95
      *@exception InvalidUrl if the url is invalid.
      */
     void parse(const char* url);
+    void parse(const std::string& url) { parse(url.c_str()); }
 
     /** Replace contesnts with parsed URL as defined in
      * https://wiki.108.redhat.com/jira/browse/AMQP-95
      * url.empty() will be true if url is invalid.
      */
     void parseNoThrow(const char* url);
+
+  private:
+    mutable std::string cache;  // cache string form for efficiency.
 };
 
+inline bool operator==(const Url& a, const Url& b) { return a.str()==b.str(); }
+inline bool operator!=(const Url& a, const Url& b) { return a.str()!=b.str(); }
+
 std::ostream& operator<<(std::ostream& os, const Url& url);
+std::istream& operator>>(std::istream& is, Url& url);
 
 } // namespace qpid
 

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.cpp?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.cpp (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.cpp Mon Feb 11 04:11:03 2008
@@ -33,9 +33,7 @@
 #include "qpid/management/ArgsBrokerEcho.h"
 
 #include "qpid/log/Statement.h"
-#include "qpid/Url.h"
 #include "qpid/framing/AMQFrame.h"
-#include "qpid/framing/HandlerUpdater.h"
 #include "qpid/framing/ProtocolInitiation.h"
 #include "qpid/sys/Acceptor.h"
 #include "qpid/sys/ConnectionInputHandler.h"
@@ -49,7 +47,6 @@
 #include <memory>
 
 using qpid::sys::Acceptor;
-using qpid::framing::HandlerUpdater;
 using qpid::framing::FrameHandler;
 using qpid::framing::ChannelId;
 using qpid::management::ManagementAgent;
@@ -63,18 +60,21 @@
 
 Broker::Options::Options(const std::string& name) :
     qpid::Options(name),
-    port(TcpAddress::DEFAULT_PORT),
+    dataDir("/var/lib/qpidd"),
+    port(DEFAULT_PORT),
     workerThreads(5),
     maxConnections(500),
     connectionBacklog(10),
     stagingThreshold(5000000),
-    enableMgmt(0),
+    enableMgmt(1),
     mgmtPubInterval(10),
     ack(0)
 {
     int c = sys::SystemInfo::concurrency();
     workerThreads=std::max(2,c);
     addOptions()
+        ("data-dir", optValue(dataDir,"DIR"),
+         "Directory to contain persistent data generated by the broker")
         ("port,p", optValue(port,"PORT"),
          "Tells the broker to listen on PORT")
         ("worker-threads", optValue(workerThreads, "N"),
@@ -85,7 +85,7 @@
          "Sets the connection backlog limit for the server socket")
         ("staging-threshold", optValue(stagingThreshold, "N"),
          "Stages messages over N bytes to disk")
-        ("mgmt,m", optValue(enableMgmt,"yes|no"),
+        ("mgmt-enable,m", optValue(enableMgmt,"yes|no"),
          "Enable Management")
         ("mgmt-pub-interval", optValue(mgmtPubInterval, "SECONDS"),
          "Management Publish Interval")
@@ -103,6 +103,7 @@
 Broker::Broker(const Broker::Options& conf) :
     config(conf),
     store(0),
+    dataDir(conf.dataDir),
     factory(*this),
     sessionManager(conf.ack)
 {
@@ -211,22 +212,21 @@
 }
 
 void Broker::shutdown() {
+    // NB: this function must be async-signal safe, it must not
+    // call any function that is not async-signal safe.
+    // Any unsafe shutdown actions should be done in the destructor.
     if (acceptor)
         acceptor->shutdown();
-    ManagementAgent::shutdown ();
 }
 
 Broker::~Broker() {
     shutdown();
+    ManagementAgent::shutdown ();
     delete store;    
 }
 
 uint16_t Broker::getPort() const  { return getAcceptor().getPort(); }
 
-std::string Broker::getUrl() const {
-    return Url(TcpAddress(getAcceptor().getHost(), getPort())).str();
-}
-               
 Acceptor& Broker::getAcceptor() const {
     if (!acceptor) {
         const_cast<Acceptor::shared_ptr&>(acceptor) =
@@ -238,17 +238,6 @@
     return *acceptor;
 }
 
-void Broker::add(const shared_ptr<HandlerUpdater>& updater) {
-    QPID_LOG(debug, "Broker added HandlerUpdater");
-    handlerUpdaters.push_back(updater);
-}
-
-void Broker::update(ChannelId channel, FrameHandler::Chains& chains) {
-    for_each(handlerUpdaters.begin(), handlerUpdaters.end(),
-             boost::bind(&HandlerUpdater::update, _1,
-                         channel, boost::ref(chains)));
-}
-
 ManagementObject::shared_ptr Broker::GetManagementObject(void) const
 {
     return dynamic_pointer_cast<ManagementObject> (mgmtObject);
@@ -260,7 +249,7 @@
 }
 
 Manageable::status_t Broker::ManagementMethod (uint32_t methodId,
-                                               Args&    /*_args*/)
+                                               Args&    args)
 {
     Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
 
@@ -271,6 +260,10 @@
     case management::Broker::METHOD_ECHO :
         status = Manageable::STATUS_OK;
         break;
+    case management::Broker::METHOD_CONNECT :
+        connect(dynamic_cast<management::ArgsBrokerConnect&>(args));
+        status = Manageable::STATUS_OK;
+        break;
 
     case management::Broker::METHOD_JOINCLUSTER :
     case management::Broker::METHOD_LEAVECLUSTER :
@@ -279,6 +272,11 @@
     }
 
     return status;
+}
+
+void Broker::connect(management::ArgsBrokerConnect& args)
+{
+    getAcceptor().connect(args.i_host, args.i_port, &factory);
 }
 
 }} // namespace qpid::broker

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.h?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.h (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Broker.h Mon Feb 11 04:11:03 2008
@@ -34,9 +34,10 @@
 #include "qpid/management/Manageable.h"
 #include "qpid/management/ManagementAgent.h"
 #include "qpid/management/Broker.h"
+#include "qpid/management/ArgsBrokerConnect.h"
 #include "qpid/Options.h"
 #include "qpid/Plugin.h"
-#include "qpid/Url.h"
+#include "qpid/DataDir.h"
 #include "qpid/framing/FrameHandler.h"
 #include "qpid/framing/OutputHandler.h"
 #include "qpid/framing/ProtocolInitiation.h"
@@ -46,13 +47,10 @@
 #include <vector>
 
 namespace qpid { 
-
-namespace framing {
-class HandlerUpdater;
-}
-
 namespace broker {
 
+static const  uint16_t DEFAULT_PORT=5672;
+
 /**
  * A broker instance. 
  */
@@ -62,7 +60,8 @@
 
     struct Options : public qpid::Options {
         Options(const std::string& name="Broker Options");
-        
+
+        std::string dataDir;
         uint16_t port;
         int workerThreads;
         int maxConnections;
@@ -77,7 +76,7 @@
 
     Broker(const Options& configuration);
     static shared_ptr<Broker> create(const Options& configuration);
-    static shared_ptr<Broker> create(int16_t port = TcpAddress::DEFAULT_PORT);
+    static shared_ptr<Broker> create(int16_t port = DEFAULT_PORT);
 
     /**
      * Return listening port. If called before bind this is
@@ -87,9 +86,6 @@
      */
     virtual uint16_t getPort() const;
 
-    /** Return the broker's URL. */
-    virtual std::string getUrl() const;
-    
     /**
      * Run the broker. Implements Runnable::run() so the broker
      * can be run in a separate thread.
@@ -99,18 +95,13 @@
     /** Shut down the broker */
     virtual void shutdown();
 
-    /** Register a handler updater. */
-    void add(const shared_ptr<framing::HandlerUpdater>&);
-    
-    /** Apply all handler updaters to a handler chain pair. */
-    void update(framing::ChannelId, framing::FrameHandler::Chains&); 
-
     void setStore (MessageStore*);
     MessageStore& getStore() { return *store; }
     QueueRegistry& getQueues() { return queues; }
     ExchangeRegistry& getExchanges() { return exchanges; }
     uint64_t getStagingThreshold() { return config.stagingThreshold; }
     DtxManager& getDtxManager() { return dtxManager; }
+    DataDir& getDataDir() { return dataDir; }
 
     SessionManager& getSessionManager() { return sessionManager; }
 
@@ -125,19 +116,19 @@
     Options config;
     sys::Acceptor::shared_ptr acceptor;
     MessageStore* store;
-    typedef std::vector<shared_ptr<framing::HandlerUpdater> > HandlerUpdaters;
+    DataDir dataDir;
 
     QueueRegistry queues;
     ExchangeRegistry exchanges;
     ConnectionFactory factory;
     DtxManager dtxManager;
-    HandlerUpdaters handlerUpdaters;
     SessionManager sessionManager;
     management::ManagementAgent::shared_ptr managementAgent;
     management::Broker::shared_ptr mgmtObject;
     Vhost::shared_ptr              vhostObject;
 
     void declareStandardExchange(const std::string& name, const std::string& type);
+    void connect(management::ArgsBrokerConnect& args);
 };
 
 }}

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/BrokerAdapter.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/BrokerAdapter.h?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/BrokerAdapter.h (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/BrokerAdapter.h Mon Feb 11 04:11:03 2008
@@ -31,7 +31,6 @@
 class Channel;
 class Connection;
 class Broker;
-class ChannelHandler;
 class ConnectionHandler;
 class BasicHandler;
 class ExchangeHandler;
@@ -86,7 +85,6 @@
     ExecutionHandler* getExecutionHandler() { BADHANDLER(); }
     ConnectionHandler* getConnectionHandler() { BADHANDLER(); }
     SessionHandler* getSessionHandler() { BADHANDLER(); }
-    ChannelHandler* getChannelHandler() { BADHANDLER(); }
 #undef BADHANDLER
 
   private:

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.cpp?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.cpp (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.cpp Mon Feb 11 04:11:03 2008
@@ -21,6 +21,7 @@
 #include "Connection.h"
 #include "SessionState.h"
 #include "BrokerAdapter.h"
+#include "Bridge.h"
 #include "SemanticHandler.h"
 
 #include "qpid/log/Statement.h"
@@ -29,6 +30,7 @@
 #include "qpid/management/ManagementAgent.h"
 
 #include <boost/bind.hpp>
+#include <boost/ptr_container/ptr_vector.hpp>
 
 #include <algorithm>
 #include <iostream>
@@ -47,7 +49,43 @@
 namespace qpid {
 namespace broker {
 
-    Connection::Connection(ConnectionOutputHandler* out_, Broker& broker_, const Socket& s) :
+class Connection::MgmtClient : public Connection::MgmtWrapper
+{
+    management::Client::shared_ptr mgmtClient;
+
+public:
+    MgmtClient(Connection* conn, Manageable* parent, ManagementAgent::shared_ptr agent, const std::string& mgmtId);
+    ~MgmtClient();
+    void received(framing::AMQFrame& frame);
+    management::ManagementObject::shared_ptr getManagementObject() const;
+    void closing();
+};
+
+class Connection::MgmtLink : public Connection::MgmtWrapper
+{
+    typedef boost::ptr_vector<Bridge> Bridges;
+
+    management::Link::shared_ptr mgmtLink;
+    Bridges created;//holds list of bridges pending creation
+    Bridges cancelled;//holds list of bridges pending cancellation
+    Bridges active;//holds active bridges
+    uint channelCounter;
+    sys::Mutex lock;
+
+    void cancel(Bridge*);
+
+public:
+    MgmtLink(Connection* conn, Manageable* parent, ManagementAgent::shared_ptr agent, const std::string& mgmtId);
+    ~MgmtLink();
+    void received(framing::AMQFrame& frame);
+    management::ManagementObject::shared_ptr getManagementObject() const;
+    void closing();
+    void processPending();
+    void process(Connection& connection, const management::Args& args);
+};
+
+
+Connection::Connection(ConnectionOutputHandler* out_, Broker& broker_, const std::string& mgmtId_) :
     broker(broker_),
     outputTasks(*out_),
     out(out_),
@@ -56,7 +94,11 @@
     client(0),
     stagingThreshold(broker.getStagingThreshold()),
     adapter(*this),
-    mgmtClosing(0)
+    mgmtClosing(0),
+    mgmtId(mgmtId_)
+{}
+
+void Connection::initMgmt(bool asLink)
 {
     Manageable* parent = broker.GetVhostObject ();
 
@@ -66,18 +108,16 @@
 
         if (agent.get () != 0)
         {
-            mgmtObject = management::Client::shared_ptr
-                (new management::Client (this, parent, s.getPeerAddress ()));
-            agent->addObject (mgmtObject);
+            if (asLink) {
+                mgmtWrapper = std::auto_ptr<MgmtWrapper>(new MgmtLink(this, parent, agent, mgmtId));
+            } else {
+                mgmtWrapper = std::auto_ptr<MgmtWrapper>(new MgmtClient(this, parent, agent, mgmtId));
+            }
         }
     }
 }
 
-Connection::~Connection ()
-{
-    if (mgmtObject.get () != 0)
-        mgmtObject->resourceDestroy ();
-}
+Connection::~Connection () {}
 
 void Connection::received(framing::AMQFrame& frame){
     if (mgmtClosing)
@@ -88,12 +128,8 @@
     } else {
         getChannel(frame.getChannel()).in(frame);
     }
-
-    if (mgmtObject.get () != 0)
-    {
-        mgmtObject->inc_framesFromClient ();
-        mgmtObject->inc_bytesFromClient (frame.size ());
-    }
+    
+    if (mgmtWrapper.get()) mgmtWrapper->received(frame);
 }
 
 void Connection::close(
@@ -107,6 +143,7 @@
 void Connection::initiated(const framing::ProtocolInitiation& header) {
     version = ProtocolVersion(header.getMajor(), header.getMinor());
     adapter.init(header);
+    initMgmt();
 }
 
 void Connection::idleOut(){}
@@ -133,8 +170,12 @@
 }
 
 bool Connection::doOutput()
-{
+{    
     try{
+        //process any pending mgmt commands:
+        if (mgmtWrapper.get()) mgmtWrapper->processPending();
+
+        //then do other output as needed:
         return outputTasks.doOutput();
     }catch(ConnectionException& e){
         close(e.code, e.what(), 0, 0);
@@ -159,11 +200,11 @@
 
 ManagementObject::shared_ptr Connection::GetManagementObject (void) const
 {
-    return dynamic_pointer_cast<ManagementObject> (mgmtObject);
+    return mgmtWrapper.get() ? mgmtWrapper->getManagementObject() : ManagementObject::shared_ptr();
 }
 
 Manageable::status_t Connection::ManagementMethod (uint32_t methodId,
-                                                   Args&    /*args*/)
+                                                   Args&    args)
 {
     Manageable::status_t status = Manageable::STATUS_UNKNOWN_METHOD;
 
@@ -173,7 +214,13 @@
     {
     case management::Client::METHOD_CLOSE :
         mgmtClosing = 1;
-        mgmtObject->set_closing (1);
+        if (mgmtWrapper.get()) mgmtWrapper->closing();
+        status = Manageable::STATUS_OK;
+        break;
+    case management::Link::METHOD_BRIDGE :
+        //queue this up and request chance to do output (i.e. get connections thread of control):
+        mgmtWrapper->process(*this, args);
+        out->activateOutput();
         status = Manageable::STATUS_OK;
         break;
     }
@@ -181,6 +228,117 @@
     return status;
 }
 
+void Connection::setUserId(const string& uid)
+{
+    userId = uid;
+    QPID_LOG (debug, "UserId is " << userId);
+}
+
+const string& Connection::getUserId() const
+{
+    return userId;
+}
+
+Connection::MgmtLink::MgmtLink(Connection* conn, Manageable* parent, ManagementAgent::shared_ptr agent, const std::string& mgmtId) 
+    : channelCounter(1)
+{
+    mgmtLink = management::Link::shared_ptr
+        (new management::Link(conn, parent, mgmtId));
+    agent->addObject (mgmtLink);
+}
+
+Connection::MgmtLink::~MgmtLink()
+{
+    if (mgmtLink.get () != 0)
+        mgmtLink->resourceDestroy ();
+}
+
+void Connection::MgmtLink::received(framing::AMQFrame& frame)
+{
+    if (mgmtLink.get () != 0)
+    {
+        mgmtLink->inc_framesFromPeer ();
+        mgmtLink->inc_bytesFromPeer (frame.size ());
+    }
+}
+
+management::ManagementObject::shared_ptr Connection::MgmtLink::getManagementObject() const
+{
+    return dynamic_pointer_cast<ManagementObject>(mgmtLink);
+}
+
+void Connection::MgmtLink::closing()
+{
+    if (mgmtLink) mgmtLink->set_closing (1);
+}
+
+void Connection::MgmtLink::processPending()
+{
+    //process any pending creates
+    if (!created.empty()) {
+        for (Bridges::iterator i = created.begin(); i != created.end(); ++i) {
+            i->create();
+        }
+        active.transfer(active.end(), created.begin(), created.end(), created);
+    }
+    if (!cancelled.empty()) {
+        //process any pending cancellations
+        for (Bridges::iterator i = cancelled.begin(); i != cancelled.end(); ++i) {
+            i->cancel();
+        }
+        cancelled.clear();
+    }
+}
+
+void Connection::MgmtLink::process(Connection& connection, const management::Args& args)
+{   
+    created.push_back(new Bridge(channelCounter++, connection, 
+                                 boost::bind(&MgmtLink::cancel, this, _1),
+                                 dynamic_cast<const management::ArgsLinkBridge&>(args)));
+}
+
+void Connection::MgmtLink::cancel(Bridge* b)
+{   
+    //need to take this out the active map and add it to the cancelled map
+    for (Bridges::iterator i = active.begin(); i != active.end(); i++) {
+        if (&(*i) == b) {
+            cancelled.transfer(cancelled.end(), i, active);
+            break;
+        }
+    }
+}
+
+Connection::MgmtClient::MgmtClient(Connection* conn, Manageable* parent, ManagementAgent::shared_ptr agent, const std::string& mgmtId)
+{
+    mgmtClient = management::Client::shared_ptr
+        (new management::Client (conn, parent, mgmtId));
+    agent->addObject (mgmtClient);
+}
+
+Connection::MgmtClient::~MgmtClient()
+{
+    if (mgmtClient.get () != 0)
+        mgmtClient->resourceDestroy ();
+}
+
+void Connection::MgmtClient::received(framing::AMQFrame& frame)
+{
+    if (mgmtClient.get () != 0)
+    {
+        mgmtClient->inc_framesFromClient ();
+        mgmtClient->inc_bytesFromClient (frame.size ());
+    }
+}
+
+management::ManagementObject::shared_ptr Connection::MgmtClient::getManagementObject() const
+{
+    return dynamic_pointer_cast<ManagementObject>(mgmtClient);
+}
+
+void Connection::MgmtClient::closing()
+{
+    if (mgmtClient) mgmtClient->set_closing (1);
+}
 
 }}
 

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.h
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.h?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.h (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/Connection.h Mon Feb 11 04:11:03 2008
@@ -21,6 +21,7 @@
 #ifndef _Connection_
 #define _Connection_
 
+#include <memory>
 #include <sstream>
 #include <vector>
 
@@ -41,6 +42,7 @@
 #include "SessionHandler.h"
 #include "qpid/management/Manageable.h"
 #include "qpid/management/Client.h"
+#include "qpid/management/Link.h"
 
 #include <boost/ptr_container/ptr_map.hpp>
 
@@ -52,7 +54,7 @@
                    public management::Manageable
 {
   public:
-    Connection(sys::ConnectionOutputHandler* out, Broker& broker, const sys::Socket& s);
+    Connection(sys::ConnectionOutputHandler* out, Broker& broker, const std::string& mgmtId);
     ~Connection ();
 
     /** Get the SessionHandler for channel. Create if it does not already exist */
@@ -87,6 +89,7 @@
     void idleIn();
     void closed();
     bool doOutput();
+    framing::ProtocolInitiation getInitiation() { return framing::ProtocolInitiation(version); }
 
     void closeChannel(framing::ChannelId channel);
 
@@ -95,10 +98,34 @@
     management::Manageable::status_t
         ManagementMethod (uint32_t methodId, management::Args& args);
 
+    void setUserId(const string& uid);
+    const string& getUserId() const;
+
+    void initMgmt(bool asLink = false);
+
   private:
     typedef boost::ptr_map<framing::ChannelId, SessionHandler> ChannelMap;
     typedef std::vector<Queue::shared_ptr>::iterator queue_iterator;
 
+    /**
+     * Connection may appear, for the purposes of management, as a
+     * normal client initiated connection or as an agent initiated
+     * inter-broker link. This wrapper abstracts the common interface
+     * for both.
+     */
+    class MgmtWrapper
+    {
+    public:
+        virtual ~MgmtWrapper(){}
+        virtual void received(framing::AMQFrame& frame) = 0;
+        virtual management::ManagementObject::shared_ptr getManagementObject() const = 0;
+        virtual void closing() = 0;
+        virtual void processPending(){}
+        virtual void process(Connection&, const management::Args&){}
+    };
+    class MgmtClient;
+    class MgmtLink;
+
     framing::ProtocolVersion version;
     ChannelMap channels;
     sys::ConnectionOutputHandler* out;
@@ -107,8 +134,10 @@
     framing::AMQP_ClientProxy::Connection* client;
     uint64_t stagingThreshold;
     ConnectionHandler adapter;
-    management::Client::shared_ptr mgmtObject;
+    std::auto_ptr<MgmtWrapper> mgmtWrapper;
     bool mgmtClosing;
+    string userId;
+    const std::string mgmtId;
 };
 
 }}

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionFactory.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionFactory.cpp?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionFactory.cpp (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionFactory.cpp Mon Feb 11 04:11:03 2008
@@ -38,7 +38,7 @@
 ConnectionFactory::create(qpid::sys::ConnectionOutputHandler* out,
                           const qpid::sys::Socket& s)
 {
-    return new Connection(out, broker, s);
+    return new Connection(out, broker, s.getPeerAddress());
 }
 
 }} // namespace qpid::broker

Modified: incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp?rev=620468&r1=620467&r2=620468&view=diff
==============================================================================
--- incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp (original)
+++ incubator/qpid/branches/thegreatmerge/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp Mon Feb 11 04:11:03 2008
@@ -23,16 +23,25 @@
 #include "ConnectionHandler.h"
 #include "Connection.h"
 #include "qpid/framing/ConnectionStartBody.h"
+#include "qpid/framing/ClientInvoker.h"
 #include "qpid/framing/ServerInvoker.h"
 
 using namespace qpid;
 using namespace qpid::broker;
 using namespace qpid::framing;
 
+
+namespace 
+{
+const std::string PLAIN = "PLAIN";
+const std::string en_US = "en_US";
+}
+
 void ConnectionHandler::init(const framing::ProtocolInitiation& header) {
     FieldTable properties;
-    string mechanisms("PLAIN");
-    string locales("en_US");
+    string mechanisms(PLAIN);
+    string locales(en_US);
+    handler->serverMode = true;
     handler->client.start(header.getMajor(), header.getMinor(), properties, mechanisms, locales);
 }
 
@@ -45,8 +54,13 @@
 {
     AMQMethodBody* method=frame.getBody()->getMethod();
     try{
-        if (!invoke(*handler.get(), *method))
-            throw ChannelErrorException(QPID_MSG("Class can't be accessed over channel 0"));
+        if (handler->serverMode) {
+            if (!invoke(static_cast<AMQP_ServerOperations::ConnectionHandler&>(*handler.get()), *method))
+                throw ChannelErrorException(QPID_MSG("Class can't be accessed over channel 0"));
+        } else {
+            if (!invoke(static_cast<AMQP_ClientOperations::ConnectionHandler&>(*handler.get()), *method))
+                throw ChannelErrorException(QPID_MSG("Class can't be accessed over channel 0"));
+        }
     }catch(ConnectionException& e){
         handler->client.close(e.code, e.what(), method->amqpClassId(), method->amqpMethodId());
     }catch(std::exception& e){
@@ -56,12 +70,24 @@
 
 ConnectionHandler::ConnectionHandler(Connection& connection)  : handler(new Handler(connection)) {}
 
-ConnectionHandler::Handler:: Handler(Connection& c) : client(c.getOutput()), connection(c) {}
+ConnectionHandler::Handler:: Handler(Connection& c) : client(c.getOutput()), server(c.getOutput()), 
+                                                      connection(c), serverMode(false) {}
 
-void ConnectionHandler::Handler::startOk(const FieldTable& /*clientProperties*/,
-    const string& /*mechanism*/, 
-    const string& /*response*/, const string& /*locale*/)
-{
+void ConnectionHandler::Handler::startOk(const framing::FieldTable& /*clientProperties*/,
+    const string& mechanism, 
+    const string& response, const string& /*locale*/)
+{
+    //TODO: handle SASL mechanisms more cleverly
+    if (mechanism == PLAIN) {
+        if (response.size() > 0 && response[0] == (char) 0) {
+            string temp = response.substr(1);
+            string::size_type i = temp.find((char)0);
+            string uid = temp.substr(0, i);
+            string pwd = temp.substr(i + 1);
+            //TODO: authentication
+            connection.setUserId(uid);
+        }
+    }
     client.tune(framing::CHANNEL_MAX, connection.getFrameMax(), connection.getHeartbeat());
 }
         
@@ -92,3 +118,41 @@
 void ConnectionHandler::Handler::closeOk(){
     connection.getOutput().close();
 } 
+
+
+void ConnectionHandler::Handler::start(uint8_t /*versionMajor*/,
+                                       uint8_t /*versionMinor*/,
+                                       const FieldTable& /*serverProperties*/,
+                                       const string& /*mechanisms*/,
+                                       const string& /*locales*/)
+{
+    string uid = "qpidd";
+    string pwd = "qpidd";
+    string response = ((char)0) + uid + ((char)0) + pwd;
+    server.startOk(FieldTable(), PLAIN, response, en_US);
+    connection.initMgmt(true);
+}
+
+void ConnectionHandler::Handler::secure(const string& /*challenge*/)
+{
+    server.secureOk("");
+}
+
+void ConnectionHandler::Handler::tune(uint16_t channelMax,
+                                      uint32_t frameMax,
+                                      uint16_t heartbeat)
+{
+    connection.setFrameMax(frameMax);
+    connection.setHeartbeat(heartbeat);
+    server.tuneOk(channelMax, frameMax, heartbeat);
+    server.open("/", "", true);
+}
+
+void ConnectionHandler::Handler::openOk(const string& /*knownHosts*/)
+{
+}
+
+void ConnectionHandler::Handler::redirect(const string& /*host*/, const string& /*knownHosts*/)
+{
+    
+}