diff options
| author | Alan Conway <aconway@apache.org> | 2006-10-12 18:52:49 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2006-10-12 18:52:49 +0000 |
| commit | c256b20602a42a3d33f36bb0e8d9692906d282a6 (patch) | |
| tree | 0fba6619fbb98c3511785143ca30647c5e6a4469 /cpp/broker/inc/Broker.h | |
| parent | 1e6a034ccd8e260e615195bf193aed7d37b928a8 (diff) | |
| download | qpid-python-c256b20602a42a3d33f36bb0e8d9692906d282a6.tar.gz | |
Converted broker to a class for use in tests, plugins etc.
qpid::Exception base class for all exceptions, inherits std::exception.
Require boost on all platforms: http://www.boost.org, 'yum boost' on fedora.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@463376 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/broker/inc/Broker.h')
| -rw-r--r-- | cpp/broker/inc/Broker.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/cpp/broker/inc/Broker.h b/cpp/broker/inc/Broker.h new file mode 100644 index 0000000000..0cd2bd749e --- /dev/null +++ b/cpp/broker/inc/Broker.h @@ -0,0 +1,86 @@ +#ifndef _Broker_ +#define _Broker_ + +/* + * + * Copyright (c) 2006 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "Acceptor.h" +#include "Configuration.h" +#include "Runnable.h" +#include "SessionHandlerFactoryImpl.h" +#include <boost/noncopyable.hpp> +#include <tr1/memory> + +namespace qpid { + namespace broker { + /** + * A broker instance. + */ + class Broker : public qpid::concurrent::Runnable, private boost::noncopyable { + Broker(const Configuration& config); // Private, use create() + std::auto_ptr<qpid::io::Acceptor> acceptor; + SessionHandlerFactoryImpl factory; + int16_t port; + bool isBound; + + public: + static const int16_t DEFAULT_PORT; + + virtual ~Broker(); + typedef std::tr1::shared_ptr<Broker> shared_ptr; + + /** + * Create a broker. + * @param port Port to listen on or 0 to pick a port dynamically. + */ + static shared_ptr create(int port = DEFAULT_PORT); + + /** + * Create a broker from a Configuration. + */ + static shared_ptr create(const Configuration& config); + + /** + * Bind to the listening port. + * @return The port number bound. + */ + virtual int16_t bind(); + + /** + * Return listening port. If called before bind this is + * the configured port. If called after it is the actual + * port, which will be different if the configured port is + * 0. + */ + virtual int16_t getPort() { return port; } + + /** + * Run the broker. Implements Runnable::run() so the broker + * can be run in a separate thread. + */ + virtual void run(); + + /** Shut down the broker */ + virtual void shutdown(); + }; + } +} + + + +#endif /*!_Broker_*/ |
