summaryrefslogtreecommitdiff
path: root/cpp/broker/inc/Broker.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2006-10-12 18:52:49 +0000
committerAlan Conway <aconway@apache.org>2006-10-12 18:52:49 +0000
commitc256b20602a42a3d33f36bb0e8d9692906d282a6 (patch)
tree0fba6619fbb98c3511785143ca30647c5e6a4469 /cpp/broker/inc/Broker.h
parent1e6a034ccd8e260e615195bf193aed7d37b928a8 (diff)
downloadqpid-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.h86
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_*/