// C++ examples list (doxygen format)
//
// For a tutorial-style description of the examples see tutorial.dox.
// To build the full HTML tutorial and documentation, in your build directory do:
//
//     make docs-cpp
//
// then open proton-c/bindings/cpp/docs/html/tutorial.html in your browser.

// DEVELOPER NOTE: If you add or modify examples, please add/update a short
// description below and (if appropriate) extend/update tutorial.dox.

/** @example helloworld.cpp

Connects to a broker on 127.0.0.1:5672, establishes a subscription
from the 'examples' node, and creates a sending link to the same
node. Sends one message and receives it back.

*/

/** @example simple_send.cpp

An example of sending a fixed number of messages and tracking their
(asynchronous) acknowledgement. Messages are sent through the 'examples' node on
an intermediary accessible on 127.0.0.1:5672.

*/

/** @example simple_recv.cpp

Subscribes to the 'examples' node on an intermediary accessible
on 127.0.0.1:5672. Simply prints out the body of received messages.

*/

/** @example message_properties.cpp

Shows how to set and examine message properties.

*/

/** @example direct_send.cpp

Accepts an incoming connection and then sends like `simple_send`.  You can
connect directly to `direct_send` *without* a broker using @ref simple_recv.cpp.
Make sure to stop the broker first or use a different port for `direct_send`.

*/

/** @example direct_recv.cpp

Accepts an incoming connection and then receives like `simple_recv`.  You can
connect directly to `direct_recv` *without* a broker using @ref simple_send.cpp.
Make sure to stop the broker first or use a different port for `direct_recv`.

*/

/// @cond INTERNAL
/** @example encode_decode.cpp

Shows how C++ data types can be converted to and from AMQP types.

*/
/// @endcond

/** @example client.cpp

The client part of a request-response example. Sends requests and
prints out responses. Requires an intermediary that supports the AMQP
1.0 dynamic nodes on which the responses are received. The requests
are sent through the 'examples' node.

*/

/** @example server.cpp

The server part of a request-response example, that receives requests
via the examples node, converts the body to uppercase and sends the
result back to the indicated reply address.

*/

/** @example server_direct.cpp

A variant of the server part of a request-response example that
accepts incoming connections and does not need an intermediary. Much
like the original server, it receives incoming requests, converts the
body to uppercase and sends the result back to the indicated reply
address. Can be used in conjunction with any of the client
alternatives.

*/

/** @example broker.cpp

A broker using the `proton::container`. You can use this to run other examples
that require an intermediary, or you can use any AMQP 1.0 broker. This broker
creates queues automatically when a client tries to send or subscribe.

*/

/** @example scheduled_send.cpp

Shows how to use proton::container::schedule to schedule a timed callback.
This version uses std::function and so requires C++11 or better. For a C++03 compatible
approach see @ref scheduled_send_03.cpp.

*/

/** @example scheduled_send_03.cpp

Shows how to use proton::container::schedule to schedule a timed callback in a
C++03 compatible way. See @ref scheduled_send.cpp for a more convenient approach
using std::function if you have C++11.

*/

/** @example service_bus.cpp

A working example for accessing Service Bus session-enabled queues.
Also provides some general notes on Service Bus usage.

*/

/** @example multithreaded_client.cpp

A multithreaded sender and receiver.

__Requires C++11__

*/

/** @example multithreaded_client_flow_control.cpp

A multithreaded sender and receiver enhanced for flow control.

__Requires C++11__

*/
