summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Makefile.am4
-rw-r--r--cpp/src/qpid/client/AckPolicy.h1
-rw-r--r--cpp/src/qpid/client/Completion.h18
-rw-r--r--cpp/src/qpid/client/Connection.cpp4
-rw-r--r--cpp/src/qpid/client/Connection.h23
-rw-r--r--cpp/src/qpid/client/Connector.h1
-rw-r--r--cpp/src/qpid/client/Demux.h2
-rw-r--r--cpp/src/qpid/client/Dispatcher.h3
-rw-r--r--cpp/src/qpid/client/Exchange.cpp34
-rw-r--r--cpp/src/qpid/client/Exchange.h113
-rw-r--r--cpp/src/qpid/client/Execution.h3
-rw-r--r--cpp/src/qpid/client/Future.h1
-rw-r--r--cpp/src/qpid/client/FutureCompletion.h1
-rw-r--r--cpp/src/qpid/client/FutureResult.h1
-rw-r--r--cpp/src/qpid/client/LocalQueue.h28
-rw-r--r--cpp/src/qpid/client/Message.cpp71
-rw-r--r--cpp/src/qpid/client/Message.h26
-rw-r--r--cpp/src/qpid/client/MessageListener.h12
-rw-r--r--cpp/src/qpid/client/Queue.cpp58
-rw-r--r--cpp/src/qpid/client/Queue.h103
-rw-r--r--cpp/src/qpid/client/Results.h1
-rw-r--r--cpp/src/qpid/client/SessionBase_0_10.h2
-rw-r--r--cpp/src/qpid/client/SessionImpl.h1
-rw-r--r--cpp/src/qpid/client/StateManager.h1
-rw-r--r--cpp/src/qpid/client/SubscriptionManager.h15
-rw-r--r--cpp/src/qpid/client/TypedResult.h12
-rw-r--r--cpp/src/qpid/doxygen_mainpage.h59
-rw-r--r--cpp/src/qpid/framing/TransferContent.h18
-rw-r--r--cpp/src/tests/FramingTest.cpp2
29 files changed, 188 insertions, 430 deletions
diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am
index d498b1f60e..cc594b0f3b 100644
--- a/cpp/src/Makefile.am
+++ b/cpp/src/Makefile.am
@@ -321,14 +321,12 @@ libqpidclient_la_SOURCES = \
qpid/client/ConnectionSettings.cpp \
qpid/client/Demux.cpp \
qpid/client/Dispatcher.cpp \
- qpid/client/Exchange.cpp \
qpid/client/Future.cpp \
qpid/client/FutureCompletion.cpp \
qpid/client/FutureResult.cpp \
qpid/client/LocalQueue.cpp \
qpid/client/Message.cpp \
qpid/client/MessageListener.cpp \
- qpid/client/Queue.cpp \
qpid/client/Results.cpp \
qpid/client/SessionBase_0_10.cpp \
qpid/client/SessionBase_0_10.h \
@@ -444,7 +442,6 @@ nobase_include_HEADERS = \
qpid/client/ChainableFrameHandler.h \
qpid/client/Demux.h \
qpid/client/Dispatcher.h \
- qpid/client/Exchange.h \
qpid/client/Execution.h \
qpid/client/Future.h \
qpid/client/FutureCompletion.h \
@@ -453,7 +450,6 @@ nobase_include_HEADERS = \
qpid/client/Message.h \
qpid/client/MessageListener.h \
qpid/client/MessageQueue.h \
- qpid/client/Queue.h \
qpid/client/Results.h \
qpid/client/SessionBase_0_10.h \
qpid/client/Session.h \
diff --git a/cpp/src/qpid/client/AckPolicy.h b/cpp/src/qpid/client/AckPolicy.h
index 2faa600556..b34f1d15d1 100644
--- a/cpp/src/qpid/client/AckPolicy.h
+++ b/cpp/src/qpid/client/AckPolicy.h
@@ -30,6 +30,7 @@ namespace client {
/**
* Policy for automatic acknowledgement of messages.
+ *
*
* \ingroup clientapi
*/
diff --git a/cpp/src/qpid/client/Completion.h b/cpp/src/qpid/client/Completion.h
index 22cc70607a..c4979d7934 100644
--- a/cpp/src/qpid/client/Completion.h
+++ b/cpp/src/qpid/client/Completion.h
@@ -30,9 +30,13 @@ namespace qpid {
namespace client {
/**
- * Returned by asynchronous commands that do not return any result.
- * You can use this to wait for an individual command to complete.
- * \clientapi
+ * Asynchronous commands that do not return a result will return a
+ * Completion. You can use the completion to wait for that specific
+ * command to complete.
+ *
+ *@see TypedResult
+ *
+ *\ingroup clientapi
*/
class Completion
{
@@ -41,11 +45,17 @@ protected:
shared_ptr<SessionImpl> session;
public:
+ ///@internal
Completion() {}
+ ///@internal
Completion(Future f, shared_ptr<SessionImpl> s) : future(f), session(s) {}
- /** Wait for the command to complete */
+ /** Wait for the asynchronous command that returned this
+ *Completion to complete.
+ *
+ *@exception If the command returns an error, get() throws an exception.
+ */
void wait()
{
future.wait(*session);
diff --git a/cpp/src/qpid/client/Connection.cpp b/cpp/src/qpid/client/Connection.cpp
index 752cb9095c..6572794516 100644
--- a/cpp/src/qpid/client/Connection.cpp
+++ b/cpp/src/qpid/client/Connection.cpp
@@ -27,6 +27,7 @@
#include "qpid/log/Options.h"
#include "qpid/log/Statement.h"
#include "qpid/shared_ptr.h"
+#include "qpid/framing/AMQP_HighestVersion.h"
#include <algorithm>
#include <iostream>
@@ -42,8 +43,7 @@ using namespace qpid::sys;
namespace qpid {
namespace client {
-Connection::Connection(framing::ProtocolVersion _version) :
- channelIdCounter(0), version(_version) {}
+Connection::Connection() : channelIdCounter(0), version(framing::highestProtocolVersion) {}
Connection::~Connection(){ }
diff --git a/cpp/src/qpid/client/Connection.h b/cpp/src/qpid/client/Connection.h
index 81a7ffa008..a476f2d880 100644
--- a/cpp/src/qpid/client/Connection.h
+++ b/cpp/src/qpid/client/Connection.h
@@ -25,27 +25,16 @@
#include <string>
#include "ConnectionImpl.h"
#include "qpid/client/Session.h"
-#include "qpid/framing/AMQP_HighestVersion.h"
namespace qpid {
-
-/**
- * The client namespace contains all classes that make up a client
- * implementation of the AMQP protocol. The key classes that form
- * the basis of the client API to be used by applications are
- * Connection and Channel.
- */
namespace client {
class ConnectionSettings;
-/**
- * \defgroup clientapi Application API for an AMQP client.
- */
/**
* Represents a connection to an AMQP broker. All communication is
- * initiated by establishing a connection, then opening one or
- * more Channels over that connection.
+ * initiated by establishing a connection, then creating one or more
+ * Session objecst using the connection. @see newSession()
*
* \ingroup clientapi
*/
@@ -60,12 +49,10 @@ class Connection
public:
/**
- * Creates a connection object, but does not open the
- * connection.
- *
- * @param _version the version of the protocol to connect with.
+ * Creates a connection object, but does not open the connection.
+ * @see open()
*/
- Connection(framing::ProtocolVersion=framing::highestProtocolVersion);
+ Connection();
~Connection();
/**
diff --git a/cpp/src/qpid/client/Connector.h b/cpp/src/qpid/client/Connector.h
index f5628b9bcc..b35e77c726 100644
--- a/cpp/src/qpid/client/Connector.h
+++ b/cpp/src/qpid/client/Connector.h
@@ -48,6 +48,7 @@ class Bounds;
class ConnectionSettings;
class ConnectionImpl;
+///@internal
class Connector : public framing::OutputHandler,
private sys::Runnable
{
diff --git a/cpp/src/qpid/client/Demux.h b/cpp/src/qpid/client/Demux.h
index dce24223f2..5c640f99d2 100644
--- a/cpp/src/qpid/client/Demux.h
+++ b/cpp/src/qpid/client/Demux.h
@@ -32,6 +32,7 @@
namespace qpid {
namespace client {
+///@internal
class ByTransferDest
{
const std::string dest;
@@ -40,6 +41,7 @@ public:
bool operator()(const framing::FrameSet& frameset) const;
};
+///@internal
class Demux
{
public:
diff --git a/cpp/src/qpid/client/Dispatcher.h b/cpp/src/qpid/client/Dispatcher.h
index 1b31ddf4cf..7d42bf8793 100644
--- a/cpp/src/qpid/client/Dispatcher.h
+++ b/cpp/src/qpid/client/Dispatcher.h
@@ -35,6 +35,7 @@
namespace qpid {
namespace client {
+///@internal
class Subscriber : public MessageListener
{
AsyncSession session;
@@ -48,8 +49,10 @@ public:
};
+///@internal
typedef framing::Handler<framing::FrameSet> FrameSetHandler;
+///@internal
class Dispatcher : public sys::Runnable
{
typedef std::map<std::string, Subscriber::shared_ptr> Listeners;
diff --git a/cpp/src/qpid/client/Exchange.cpp b/cpp/src/qpid/client/Exchange.cpp
deleted file mode 100644
index e7fbdeb47e..0000000000
--- a/cpp/src/qpid/client/Exchange.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 "Exchange.h"
-
-qpid::client::Exchange::Exchange(std::string _name, std::string _type) : name(_name), type(_type){}
-const std::string& qpid::client::Exchange::getName() const { return name; }
-const std::string& qpid::client::Exchange::getType() const { return type; }
-
-const std::string qpid::client::Exchange::DIRECT_EXCHANGE = "direct";
-const std::string qpid::client::Exchange::TOPIC_EXCHANGE = "topic";
-const std::string qpid::client::Exchange::HEADERS_EXCHANGE = "headers";
-
-const qpid::client::Exchange qpid::client::Exchange::DEFAULT_EXCHANGE("", DIRECT_EXCHANGE);
-const qpid::client::Exchange qpid::client::Exchange::STANDARD_DIRECT_EXCHANGE("amq.direct", DIRECT_EXCHANGE);
-const qpid::client::Exchange qpid::client::Exchange::STANDARD_TOPIC_EXCHANGE("amq.topic", TOPIC_EXCHANGE);
-const qpid::client::Exchange qpid::client::Exchange::STANDARD_HEADERS_EXCHANGE("amq.headers", HEADERS_EXCHANGE);
diff --git a/cpp/src/qpid/client/Exchange.h b/cpp/src/qpid/client/Exchange.h
deleted file mode 100644
index f30881c94b..0000000000
--- a/cpp/src/qpid/client/Exchange.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 <string>
-
-#ifndef _Exchange_
-#define _Exchange_
-
-namespace qpid {
-namespace client {
-
- /**
- * DEPRECATED
- *
- * A 'handle' used to represent an AMQP exchange in the Channel
- * methods. Exchanges are the destinations to which messages are
- * published.
- *
- * There are different types of exchange (the standard types are
- * available as static constants, see DIRECT_EXCHANGE,
- * TOPIC_EXCHANGE and HEADERS_EXCHANGE). A Queue can be bound to
- * an exchange using Channel::bind() and messages published to
- * that exchange are then routed to the queue based on the details
- * of the binding and the type of exchange.
- *
- * There are some standard exchange instances that are predeclared
- * on all AMQP brokers. These are defined as static members
- * STANDARD_DIRECT_EXCHANGE, STANDARD_TOPIC_EXCHANGE and
- * STANDARD_HEADERS_EXCHANGE. There is also the 'default' exchange
- * (member DEFAULT_EXCHANGE) which is nameless and of type
- * 'direct' and has every declared queue bound to it by queue
- * name.
- */
- class Exchange{
- const std::string name;
- const std::string type;
-
- public:
- /**
- * A direct exchange routes messages published with routing
- * key X to any queue bound with key X (i.e. an exact match is
- * used).
- */
- static const std::string DIRECT_EXCHANGE;
- /**
- * A topic exchange treats the key with which a queue is bound
- * as a pattern and routes all messages whose routing keys
- * match that pattern to the bound queue. The routing key for
- * a message must consist of zero or more alpha-numeric words
- * delimited by dots. The pattern is of a similar form, but *
- * can be used to match exactly one word and # can be used to
- * match zero or more words.
- */
- static const std::string TOPIC_EXCHANGE;
-
- /**
- *
- */
-
- static const std::string XML_EXCHANGE;
-
- /**
- * The headers exchange routes messages based on whether their
- * headers match the binding arguments specified when
- * binding. (see the AMQP spec for more details).
- */
- static const std::string HEADERS_EXCHANGE;
-
- /**
- * The 'default' exchange, nameless and of type 'direct', has
- * every declared queue bound to it by name.
- */
- static const Exchange DEFAULT_EXCHANGE;
- /**
- * The standard direct exchange, named amq.direct.
- */
- static const Exchange STANDARD_DIRECT_EXCHANGE;
- /**
- * The standard topic exchange, named amq.topic.
- */
- static const Exchange STANDARD_TOPIC_EXCHANGE;
- /**
- * The standard headers exchange, named amq.header.
- */
- static const Exchange STANDARD_HEADERS_EXCHANGE;
-
- Exchange(std::string name, std::string type = DIRECT_EXCHANGE);
- const std::string& getName() const;
- const std::string& getType() const;
- };
-
-}
-}
-
-
-#endif
diff --git a/cpp/src/qpid/client/Execution.h b/cpp/src/qpid/client/Execution.h
index b8c8a4292d..10674afde0 100644
--- a/cpp/src/qpid/client/Execution.h
+++ b/cpp/src/qpid/client/Execution.h
@@ -27,7 +27,8 @@
namespace qpid {
namespace client {
-/**
+/**@internal
+ *
* Provides access to more detailed aspects of the session
* implementation.
*/
diff --git a/cpp/src/qpid/client/Future.h b/cpp/src/qpid/client/Future.h
index faf68c9104..67f39cdf3f 100644
--- a/cpp/src/qpid/client/Future.h
+++ b/cpp/src/qpid/client/Future.h
@@ -34,6 +34,7 @@
namespace qpid {
namespace client {
+/**@internal */
class Future : private framing::StructHelper
{
framing::SequenceNumber command;
diff --git a/cpp/src/qpid/client/FutureCompletion.h b/cpp/src/qpid/client/FutureCompletion.h
index 1897230230..4248ddeab8 100644
--- a/cpp/src/qpid/client/FutureCompletion.h
+++ b/cpp/src/qpid/client/FutureCompletion.h
@@ -28,6 +28,7 @@
namespace qpid {
namespace client {
+///@internal
class FutureCompletion
{
protected:
diff --git a/cpp/src/qpid/client/FutureResult.h b/cpp/src/qpid/client/FutureResult.h
index f889706493..e97d80476d 100644
--- a/cpp/src/qpid/client/FutureResult.h
+++ b/cpp/src/qpid/client/FutureResult.h
@@ -31,6 +31,7 @@ namespace client {
class SessionImpl;
+///@internal
class FutureResult : public FutureCompletion
{
std::string result;
diff --git a/cpp/src/qpid/client/LocalQueue.h b/cpp/src/qpid/client/LocalQueue.h
index 58887077f6..c76d0756eb 100644
--- a/cpp/src/qpid/client/LocalQueue.h
+++ b/cpp/src/qpid/client/LocalQueue.h
@@ -30,23 +30,45 @@ namespace qpid {
namespace client {
/**
- * Local representation of a remote queue.
+ * A local queue to collect messages retrieved from a remote broker
+ * queue. Create a queue and subscribe it using the SubscriptionManager.
+ * Messages from the remote queue on the broker will be stored in the
+ * local queue until you retrieve them.
*
* \ingroup clientapi
*/
class LocalQueue
{
public:
- LocalQueue(AckPolicy=AckPolicy());
+ /** Create a local queue. Subscribe the local queue to a remote broker
+ * queue with a SubscriptionManager.
+ *
+ * LocalQueue is an alternative to implementing a MessageListener.
+ *
+ *@param ackPolicy Policy for acknowledging messages. @see AckPolicy.
+ */
+ LocalQueue(AckPolicy ackPolicy=AckPolicy());
+
~LocalQueue();
- /** Pop the next message off the queue.
+ /** Pop the next message off the local queue.
*@exception ClosedException if subscription has been closed.
*/
Message pop();
+
+ /** Synonym for get(). */
+ Message get() { return pop(); }
+
+ /** Return true if local queue is empty. */
bool empty() const;
+
+ /** Number of messages on the local queue */
size_t size() const;
+
+ /** Set the message acknowledgement policy. @see AckPolicy. */
void setAckPolicy(AckPolicy);
+
+ /** Get the message acknowledgement policy. @see AckPolicy. */
AckPolicy& getAckPolicy();
private:
diff --git a/cpp/src/qpid/client/Message.cpp b/cpp/src/qpid/client/Message.cpp
index 58d8fb142a..d5464594ee 100644
--- a/cpp/src/qpid/client/Message.cpp
+++ b/cpp/src/qpid/client/Message.cpp
@@ -24,45 +24,50 @@
namespace qpid {
namespace client {
- Message::Message(const std::string& data_,
- const std::string& routingKey,
- const std::string& exchange) : TransferContent(data_, routingKey, exchange) {}
+Message::Message(const std::string& data_,
+ const std::string& routingKey,
+ const std::string& exchange) : TransferContent(data_, routingKey, exchange) {}
- std::string Message::getDestination() const
- {
- return method.getDestination();
- }
+std::string Message::getDestination() const
+{
+ return method.getDestination();
+}
- bool Message::isRedelivered() const
- {
- return hasDeliveryProperties() && getDeliveryProperties().getRedelivered();
- }
+bool Message::isRedelivered() const
+{
+ return hasDeliveryProperties() && getDeliveryProperties().getRedelivered();
+}
- void Message::setRedelivered(bool redelivered)
- {
- getDeliveryProperties().setRedelivered(redelivered);
- }
+void Message::setRedelivered(bool redelivered)
+{
+ getDeliveryProperties().setRedelivered(redelivered);
+}
- framing::FieldTable& Message::getHeaders()
- {
- return getMessageProperties().getApplicationHeaders();
- }
+framing::FieldTable& Message::getHeaders()
+{
+ return getMessageProperties().getApplicationHeaders();
+}
- const framing::MessageTransferBody& Message::getMethod() const
- {
- return method;
- }
+const framing::FieldTable& Message::getHeaders() const
+{
+ return getMessageProperties().getApplicationHeaders();
+}
- const framing::SequenceNumber& Message::getId() const
- {
- return id;
- }
+const framing::MessageTransferBody& Message::getMethod() const
+{
+ return method;
+}
- /**@internal for incoming messages */
- Message::Message(const framing::FrameSet& frameset) :
- method(*frameset.as<framing::MessageTransferBody>()), id(frameset.getId())
- {
- populate(frameset);
- }
+const framing::SequenceNumber& Message::getId() const
+{
+ return id;
+}
+
+/**@internal for incoming messages */
+Message::Message(const framing::FrameSet& frameset) :
+ method(*frameset.as<framing::MessageTransferBody>()), id(frameset.getId())
+{
+ populate(frameset);
+}
}}
diff --git a/cpp/src/qpid/client/Message.h b/cpp/src/qpid/client/Message.h
index 3c22d202ee..4e6ed49bb4 100644
--- a/cpp/src/qpid/client/Message.h
+++ b/cpp/src/qpid/client/Message.h
@@ -30,26 +30,48 @@ namespace qpid {
namespace client {
/**
- * A representation of messages sent or received through the
- * client api.
+ * A message sent to or received from the broker.
*
* \ingroup clientapi
*/
class Message : public framing::TransferContent
{
public:
+ /** Create a Message.
+ *@param data Data for the message body.
+ *@param routingKey Passed to the exchange that routes the message.
+ *@param exchange Name of the exchange that should route the message.
+ */
Message(const std::string& data=std::string(),
const std::string& routingKey=std::string(),
const std::string& exchange=std::string());
+
+ /** The destination of messages sent to the broker is the exchange
+ * name. The destination of messages received from the broker is
+ * the delivery tag identifyig the local subscription (often this
+ * is the name of the subscribed queue.)
+ */
std::string getDestination() const;
+
+ /** Check the redelivered flag. */
bool isRedelivered() const;
+ /** Set the redelivered flag. */
void setRedelivered(bool redelivered);
+
+ /** Get a modifyable reference to the message headers. */
framing::FieldTable& getHeaders();
+
+ /** Get a non-modifyable reference to the message headers. */
+ const framing::FieldTable& getHeaders() const;
+
+ ///@internal
const framing::MessageTransferBody& getMethod() const;
+ ///@internal
const framing::SequenceNumber& getId() const;
/**@internal for incoming messages */
Message(const framing::FrameSet& frameset);
+
private:
//method and id are only set for received messages:
framing::MessageTransferBody method;
diff --git a/cpp/src/qpid/client/MessageListener.h b/cpp/src/qpid/client/MessageListener.h
index 86e5dd63dc..76e1d17445 100644
--- a/cpp/src/qpid/client/MessageListener.h
+++ b/cpp/src/qpid/client/MessageListener.h
@@ -29,16 +29,20 @@ namespace qpid {
namespace client {
/**
- * An interface through which asynchronously delivered messages
- * can be received by an application.
- *
- * @see Channel::consume()
+ * Implement a subclass of MessageListener and subscribe it using
+ * the SubscriptionManager to receive messages.
+ *
+ * Another way to receive messages is by using a LocalQueue.
*
* \ingroup clientapi
*/
class MessageListener{
public:
virtual ~MessageListener();
+
+ /** Called for each message arriving from the broker. Override
+ * in your own subclass to process messages.
+ */
virtual void received(Message& msg) = 0;
};
diff --git a/cpp/src/qpid/client/Queue.cpp b/cpp/src/qpid/client/Queue.cpp
deleted file mode 100644
index 1752a48a3a..0000000000
--- a/cpp/src/qpid/client/Queue.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 "Queue.h"
-
-qpid::client::Queue::Queue() : name(""), autodelete(true), exclusive(true), durable(false){}
-
-qpid::client::Queue::Queue(std::string _name) : name(_name), autodelete(false), exclusive(false), durable(false){}
-
-qpid::client::Queue::Queue(std::string _name, bool temp) : name(_name), autodelete(temp), exclusive(temp), durable(false){}
-
-qpid::client::Queue::Queue(std::string _name, bool _autodelete, bool _exclusive, bool _durable)
- : name(_name), autodelete(_autodelete), exclusive(_exclusive), durable(_durable){}
-
-const std::string& qpid::client::Queue::getName() const{
- return name;
-}
-
-void qpid::client::Queue::setName(const std::string& _name){
- name = _name;
-}
-
-bool qpid::client::Queue::isAutoDelete() const{
- return autodelete;
-}
-
-bool qpid::client::Queue::isExclusive() const{
- return exclusive;
-}
-
-bool qpid::client::Queue::isDurable() const{
- return durable;
-}
-
-void qpid::client::Queue::setDurable(bool _durable){
- durable = _durable;
-}
-
-
-
-
diff --git a/cpp/src/qpid/client/Queue.h b/cpp/src/qpid/client/Queue.h
deleted file mode 100644
index baaa890464..0000000000
--- a/cpp/src/qpid/client/Queue.h
+++ /dev/null
@@ -1,103 +0,0 @@
-#ifndef _client_Queue_h
-#define _client_Queue_h
-
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 <string>
-
-namespace qpid {
-namespace client {
-
- /**
- * DEPRECATED
- *
- * A 'handle' used to represent an AMQP queue in the Channel
- * methods. Creating an instance of this class does not cause the
- * queue to be created on the broker. Rather, an instance of this
- * class should be passed to Channel::declareQueue() to ensure
- * that the queue exists or is created.
- *
- * Queues hold messages and allow clients to consume
- * (see Channel::consume()) or get (see Channel::get()) those messages. A
- * queue receives messages by being bound to one or more Exchange.
- * Messages published to that exchange may then be routed to the
- * queue based on the details of the binding and the type of the
- * exchange (see Channel::bind()).
- *
- * Queues are identified by a name. They can be exclusive (in which
- * case they can only be used in the context of the connection
- * over which they were declared, and are deleted when that
- * connection closes), or they can be shared. Shared queues can be
- * automatically deleted when they have no consumers.
- *
- * The term 'temporary queue' refers to an exclusive
- * queue.
- */
- class Queue{
- std::string name;
- const bool autodelete;
- const bool exclusive;
- bool durable;
-
- public:
-
- /**
- * Creates an unnamed, non-durable, temporary queue. A name
- * will be assigned to this queue instance by a call to
- * Channel::declareQueue().
- */
- Queue();
- /**
- * Creates a shared, non-durable queue with a given name,
- * that will not be automatically deleted.
- *
- * @param name the name of the queue.
- */
- Queue(std::string name);
- /**
- * Creates a non-durable queue with a given name.
- *
- * @param name the name of the queue
- *
- * @param temp if true the queue will be a temporary queue, if
- * false it will be shared and not automatically deleted.
- */
- Queue(std::string name, bool temp);
- /**
- * This constructor allows the AutoDelete, Exclusive and
- * Durable properties to be explictly set. Note however that if
- * Exclusive is true, AutoDelete has no meaning as Exclusive
- * queues are always destroyed when the connection that
- * created them is closed.
- */
- Queue(std::string name, bool autodelete, bool exclusive, bool durable);
- const std::string& getName() const;
- void setName(const std::string&);
- bool isAutoDelete() const;
- bool isExclusive() const;
- bool isDurable() const;
- void setDurable(bool durable);
- };
-
-}
-}
-
-#endif /*!_client_Queue_h*/
diff --git a/cpp/src/qpid/client/Results.h b/cpp/src/qpid/client/Results.h
index c325dcf1c5..667f35089c 100644
--- a/cpp/src/qpid/client/Results.h
+++ b/cpp/src/qpid/client/Results.h
@@ -31,6 +31,7 @@ namespace client {
class FutureResult;
+///@internal
class Results
{
public:
diff --git a/cpp/src/qpid/client/SessionBase_0_10.h b/cpp/src/qpid/client/SessionBase_0_10.h
index 3b54b733c8..8634164dd1 100644
--- a/cpp/src/qpid/client/SessionBase_0_10.h
+++ b/cpp/src/qpid/client/SessionBase_0_10.h
@@ -48,6 +48,7 @@ using framing::SequenceNumberSet;
using qpid::SessionId;
using framing::Xid;
+/** Unit of message credit: messages or bytes */
enum CreditUnit { MESSAGE_CREDIT=0, BYTE_CREDIT=1, UNLIMITED_CREDIT=0xFFFFFFFF };
/**
@@ -61,6 +62,7 @@ class SessionBase_0_10 {
typedef framing::TransferContent DefaultContent;
+ ///@internal
SessionBase_0_10();
~SessionBase_0_10();
diff --git a/cpp/src/qpid/client/SessionImpl.h b/cpp/src/qpid/client/SessionImpl.h
index 3e46dc6b3a..55031a94ae 100644
--- a/cpp/src/qpid/client/SessionImpl.h
+++ b/cpp/src/qpid/client/SessionImpl.h
@@ -53,6 +53,7 @@ namespace client {
class Future;
class ConnectionImpl;
+///@internal
class SessionImpl : public framing::FrameHandler::InOutHandler,
public Execution,
private framing::AMQP_ClientOperations::SessionHandler,
diff --git a/cpp/src/qpid/client/StateManager.h b/cpp/src/qpid/client/StateManager.h
index 2f8ecb772c..b01664a0c1 100644
--- a/cpp/src/qpid/client/StateManager.h
+++ b/cpp/src/qpid/client/StateManager.h
@@ -27,6 +27,7 @@
namespace qpid {
namespace client {
+///@internal
class StateManager
{
int state;
diff --git a/cpp/src/qpid/client/SubscriptionManager.h b/cpp/src/qpid/client/SubscriptionManager.h
index 1a00e1beeb..930175564e 100644
--- a/cpp/src/qpid/client/SubscriptionManager.h
+++ b/cpp/src/qpid/client/SubscriptionManager.h
@@ -36,7 +36,10 @@ namespace qpid {
namespace client {
/**
- * Utility to assist with creating subscriptions.
+ * A class to help create and manage subscriptions.
+ *
+ * Set up your subscriptions, then call run() to have messages
+ * delivered.
*
* \ingroup clientapi
*/
@@ -58,10 +61,14 @@ class SubscriptionManager : public sys::Runnable
bool autoStop;
public:
+ /** Create a new SubscriptionManager associated with a session */
SubscriptionManager(const Session& session);
/**
* Subscribe a MessagesListener to receive messages from queue.
+ *
+ * Provide your own subclass of MessagesListener to process
+ * incoming messages. It will be called for each message received.
*
*@param listener Listener object to receive messages.
*@param queue Name of the queue to subscribe to.
@@ -69,12 +76,14 @@ class SubscriptionManager : public sys::Runnable
* If not specified, the queue name is used.
*/
void subscribe(MessageListener& listener,
- const std::string& queue,
- const std::string& tag=std::string());
+ const std::string& queue,
+ const std::string& tag=std::string());
/**
* Subscribe a LocalQueue to receive messages from queue.
*
+ * Incoming messages are stored in the queue for you to retrieve.
+ *
*@param queue Name of the queue to subscribe to.
*@param tag Unique destination tag for the listener.
* If not specified, the queue name is used.
diff --git a/cpp/src/qpid/client/TypedResult.h b/cpp/src/qpid/client/TypedResult.h
index 79df9d0e69..5306997d74 100644
--- a/cpp/src/qpid/client/TypedResult.h
+++ b/cpp/src/qpid/client/TypedResult.h
@@ -30,7 +30,7 @@ namespace client {
/**
* Returned by asynchronous commands that return a result.
* You can use get() to wait for completion and get the result value.
- * \clientapi
+ * \ingroup clientapi
*/
template <class T> class TypedResult : public Completion
{
@@ -38,9 +38,17 @@ template <class T> class TypedResult : public Completion
bool decoded;
public:
+ ///@internal
TypedResult(Future f, shared_ptr<SessionImpl> s) : Completion(f, s), decoded(false) {}
- /** Wait for command to complete and return the result */
+ /**
+ * Wait for the asynchronous command that returned this TypedResult to complete
+ * and return its result.
+ *
+ *@return The result returned by the command.
+ *@exception If the command returns an error, get() throws an exception.
+ *
+ */
T& get()
{
if (!decoded) {
diff --git a/cpp/src/qpid/doxygen_mainpage.h b/cpp/src/qpid/doxygen_mainpage.h
index b354238cd0..1502ef536e 100644
--- a/cpp/src/qpid/doxygen_mainpage.h
+++ b/cpp/src/qpid/doxygen_mainpage.h
@@ -1,45 +1,28 @@
// This header file is just for doxygen documentation purposes.
-/*!\mainpage Qpid C++ Developer Kit.
+/** \mainpage Qpid C++ Developer Kit.
*
- *\section intro_sec Introduction
- *
- * The <a href=http://incubator.apache.org/qpid/index.html>Qpid project</a> provides implementations of the <a href="http://amqp.org/">AMQP messaging specification</a> in several programming language.
- *
- * Qpidc provides APIs and libraries to implement AMQP
- * clients in C++. Qpidc clients can interact with any compliant AMQP
- * message broker. The Qpid project also provides an AMQP broker
- * daemon called qpidd that you can use with your qpidc clients.
- *
- *\section install_sec Installation
- *
- * If you are installing from the source distribution
- <pre>
- > ./configure && make
- > make install </pre>
- * This will build and install the client development kit and the broker
- * in standard places. Use
- * <code>./configure --help</code> for more options.
- *
- * You can also install from RPMs with the <code>rpm -i</code> command.
- * You will need
- * - <code>qpidc</code> for core libraries.
- * - <code>qpidc-devel</code> for header files and developer documentation.
- * - <code>qpidd</code> for the broker daemon.
- *
- *\section getstart_sec Getting Started
+ * The <a href=http://incubator.apache.org/qpid>Qpid project</a> provides implementations of the <a href="http://amqp.org/">AMQP messaging specification</a> in several programming language.
*
- * If you have installed in the standard places you should use
- * these compile flags:
- *
- *<code> -I/usr/include/qpidc -I/usr/include/qpidc/framing -I/usr/include/qpidc/sys</code>
- *
- * and these link flags:
- *
- *<code> -lqpidcommon -lqpidclient</code>
+ * Qpidc provides APIs and libraries to implement AMQP clients in
+ * C++. Qpidc clients can interact with any compliant AMQP message
+ * broker. The Qpid project also provides an AMQP broker daemon called
+ * qpidd that you can use with your qpidc clients.
*
- * If you have installed somewhere else you should modify the flags
- * appropriately.
+ * See the \ref clientapi "client API reference" to get started.
*
- * See the \ref clientapi "client API module" for more on the client API.
+ */
+
+
+/**
+ * \defgroup clientapi Application API for an AMQP client.
+ *
+ * A typical client takes the following steps:
+ * - Connect to the broker using qpid::client::Connection::open()
+ * - Create a qpid::client::Session object.
+ *
+ * Once a session is created the client can work with the broker:
+ * - Create and bind queues using the qpid::client::Session commands.
+ * - Send messages using qpid::client::Session::messageTransfer.
+ * - Subscribe to queues using qpid::client::SubscriptionManager
*/
diff --git a/cpp/src/qpid/framing/TransferContent.h b/cpp/src/qpid/framing/TransferContent.h
index f9f69da25e..7630421bd4 100644
--- a/cpp/src/qpid/framing/TransferContent.h
+++ b/cpp/src/qpid/framing/TransferContent.h
@@ -30,6 +30,7 @@
namespace qpid {
namespace framing {
+/** Message content */
class TransferContent : public MethodContent
{
AMQHeaderBody header;
@@ -39,19 +40,24 @@ public:
const std::string& routingKey = std::string(),
const std::string& exchange = std::string());
+ ///@internal
AMQHeaderBody getHeader() const;
- void setData(const std::string&);
- void appendData(const std::string&);
- MessageProperties& getMessageProperties();
- DeliveryProperties& getDeliveryProperties();
+ void setData(const std::string&);
const std::string& getData() const;
std::string& getData();
- const MessageProperties& getMessageProperties() const;
- const DeliveryProperties& getDeliveryProperties() const;
+
+ void appendData(const std::string&);
+
bool hasMessageProperties() const;
+ MessageProperties& getMessageProperties();
+ const MessageProperties& getMessageProperties() const;
+
bool hasDeliveryProperties() const;
+ DeliveryProperties& getDeliveryProperties();
+ const DeliveryProperties& getDeliveryProperties() const;
+ ///@internal
void populate(const FrameSet& frameset);
};
diff --git a/cpp/src/tests/FramingTest.cpp b/cpp/src/tests/FramingTest.cpp
index 21918f2bdd..f82507c0a7 100644
--- a/cpp/src/tests/FramingTest.cpp
+++ b/cpp/src/tests/FramingTest.cpp
@@ -18,8 +18,6 @@
* under the License.
*
*/
-#include "qpid/client/Exchange.h"
-#include "qpid/client/Queue.h"
#include "qpid/client/Connection.h"
#include "qpid/client/Connector.h"
#include "qpid/framing/AMQP_HighestVersion.h"