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*/)
+{
+
+}