You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jr...@apache.org on 2018/04/03 22:57:42 UTC
[03/51] [partial] qpid-site git commit: QPID-8048: Update the site
for the Qpid C++ 1.38.0 release
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s03.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s03.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s03.html.in
new file mode 100644
index 0000000..e8ff32c
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s03.html.in
@@ -0,0 +1,48 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.3. A Simple Messaging Program in .NET C#</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s02.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="section-addresses.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160714816384"></a>1.3. A Simple Messaging Program in .NET C#</h2></div></div></div><p>The following .NET C#
+ <a class="footnote" href="#ftn.idm140160714815392" id="idm140160714815392"><sup class="footnote">[1]</sup></a>
+ program shows how to create a connection,
+ create a session, send messages using a sender, and receive
+ messages using a receiver.
+ </p><div class="example"><a id="idm140160709323712"></a><p class="title"><strong>Example 1.3. "Hello world!" in .NET C#</strong></p><div class="example-contents"><pre class="programlisting" lang="c++" xml:lang="c++">
+ using System;
+ using Org.Apache.Qpid.Messaging; <a class="co" href="ch01s03.html#callout-csharp-using" id="hello-csharp-using">(1)</a>
+
+ namespace Org.Apache.Qpid.Messaging {
+ class Program {
+ static void Main(string[] args) {
+ String broker = args.Length > 0 ? args[0] : "localhost:5672";
+ String address = args.Length > 1 ? args[1] : "amq.topic";
+
+ Connection connection = null;
+ try {
+ connection = new Connection(broker);
+ connection.Open(); <a class="co" href="ch01s03.html#callout-csharp-open" id="hello-csharp-open">(2)</a>
+ Session session = connection.CreateSession(); <a class="co" href="ch01s03.html#callout-csharp-session" id="hello-csharp-session">(3)</a>
+
+ Receiver receiver = session.CreateReceiver(address); <a class="co" href="ch01s03.html#callout-csharp-receiver" id="hello-csharp-receiver">(4)</a>
+ Sender sender = session.CreateSender(address); <a class="co" href="ch01s03.html#callout-csharp-sender" id="hello-csharp-sender">(5)</a>
+
+ sender.Send(new Message("Hello world!"));
+
+ Message message = new Message();
+ message = receiver.Fetch(DurationConstants.SECOND * 1); <a class="co" href="ch01s03.html#callout-csharp-fetch" id="hello-csharp-fetch">(6)</a>
+ Console.WriteLine("{0}", message.GetContent());
+ session.Acknowledge(); <a class="co" href="ch01s03.html#callout-csharp-acknowledge" id="hello-csharp-acknowledge">(7)</a>
+
+ connection.Close(); <a class="co" href="ch01s03.html#callout-csharp-close" id="hello-csharp-close">(8)</a>
+ } catch (Exception e) {
+ Console.WriteLine("Exception {0}.", e);
+ if (null != connection)
+ connection.Close();
+ }
+ }
+ }
+ }
+
+ </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-using"></a><a href="#hello-csharp-using">(1)</a> </p></td><td align="left" valign="top"><p> Permits use of Org.Apache.Qpid.Messaging types and methods without explicit namespace qualification. Any .NET project must have a project reference to the assembly file <code class="literal">Org.Apache.Qpid.Messaging.dll</code> in order to obtain the definitions of the .NET Binding for Qpid Messaging namespace.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-open"></a><a href="#hello-csharp-open">(2)</a> </p></td><td align="left" valign="top"><p>Establishes the connection with the messaging broker.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-session"></a><a href="#hello-csharp-session">(3)</a> </p></td><td align="left" valign="top"><p>Creates a session object on which messages wi
ll be sent and received.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-receiver"></a><a href="#hello-csharp-receiver">(4)</a> </p></td><td align="left" valign="top"><p>Creates a receiver that receives messages from the given address.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-sender"></a><a href="#hello-csharp-sender">(5)</a> </p></td><td align="left" valign="top"><p>Creates a sender that sends to the given address.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-fetch"></a><a href="#hello-csharp-fetch">(6)</a> </p></td><td align="left" valign="top"><p>Receives the next message. The duration is optional, if omitted, will wait indefinitely for the next message.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-acknowledge"></a><a href="#hello-csharp-acknowledge">(7)</a> </p></td><td align="left" valign="top"><p>Acknowledges receipt of all fe
tched messages on the
+ session. This informs the broker that the messages were
+ transfered and processed by the client successfully.</p></td></tr><tr><td align="left" valign="top" width="5%"><p><a id="callout-csharp-close"></a><a href="#hello-csharp-close">(8)</a> </p></td><td align="left" valign="top"><p>Closes the connection, all sessions managed by the connection, and all senders and receivers managed by each session.</p></td></tr></table></div></div></div><br class="example-break" /><div class="footnotes"><br /><hr align="left" width="100" /><div class="footnote" id="ftn.idm140160714815392"><p><a class="para" href="#idm140160714815392"><sup class="para">[1] </sup></a>
+ The .NET binding for the Qpid C++ Messaging API
+ applies to all .NET Framework managed code languages. C# was chosen
+ for illustration purposes only.
+ </p></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s02.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="section-addresses.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.2. A Simple Messaging Program in Python </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.4. Addresses</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s08.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s08.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s08.html.in
new file mode 100644
index 0000000..fe18491
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s08.html.in
@@ -0,0 +1,37 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.8. Receiving Messages from Multiple Sources</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="acknowledgements.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="ch01s09.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160709077888"></a>1.8. Receiving Messages from Multiple Sources</h2></div></div></div><p>A receiver can only read from one source, but many
+ programs need to be able to read messages from many sources. In
+ the Qpid Messaging API, a program can ask a session for
+ the <span class="quote">“<span class="quote">next receiver</span>”</span>; that is, the receiver that is
+ responsible for the next available message. The following
+ examples show how this is done in C++, Python, and .NET C#.
+ </p><p>Note that to use this pattern you must enable prefetching
+ for each receiver of interest so that the broker will send
+ messages before a fetch call is made. See
+ <a class="xref" href="prefetch.html" title="1.6. Receiver Capacity (Prefetch)">Section 1.6, “Receiver Capacity (Prefetch)”</a> for more on this.</p><div class="example"><a id="idm140160709075008"></a><p class="title"><strong>Example 1.12. Receiving Messages from Multiple Sources</strong></p><div class="example-contents"><p>C++:</p><pre class="programlisting">
+ Receiver receiver1 = session.createReceiver(address1);
+ receiver1.setCapacity(10);
+ Receiver receiver2 = session.createReceiver(address2);
+ receiver2.setCapacity(10);
+
+ Message message = session.nextReceiver().fetch();
+ std::cout << message.getContent() << std::endl;
+ session.acknowledge(); // acknowledge message receipt
+ </pre><p>Python:</p><pre class="programlisting">
+ receiver1 = session.receiver(address1)
+ receiver1.capacity = 10
+ receiver2 = session.receiver(address)
+ receiver2.capacity = 10
+ message = session.next_receiver().fetch()
+ print message.content
+ session.acknowledge()
+ </pre><p>.NET C#:</p><pre class="programlisting">
+ Receiver receiver1 = session.CreateReceiver(address1);
+ receiver1.Capacity = 10;
+ Receiver receiver2 = session.CreateReceiver(address2);
+ receiver2.Capacity = 10;
+
+ Message message = new Message();
+ message = session.NextReceiver().Fetch();
+ Console.WriteLine("{0}", message.GetContent());
+ session.Acknowledge();
+ </pre></div></div><br class="example-break" /></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="acknowledgements.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="ch01s09.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.7. Acknowledging Received Messages </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.9. Transactions</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s09.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s09.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s09.html.in
new file mode 100644
index 0000000..604a29e
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s09.html.in
@@ -0,0 +1,33 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.9. Transactions</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s08.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="connections.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160709069200"></a>1.9. Transactions</h2></div></div></div><p>Sometimes it is useful to be able to group messages
+ transfers - sent and/or received - on a session into atomic
+ grouping. This can be done be creating the session as
+ transactional. On a transactional session sent messages only
+ become available at the target address on commit. Likewise any
+ received and acknowledged messages are only discarded at their
+ source on commit
+
+ <a class="footnote" href="#ftn.idm140160709067872" id="idm140160709067872"><sup class="footnote">[8]</sup></a>
+
+ .</p><div class="example"><a id="idm140160709066960"></a><p class="title"><strong>Example 1.13. Transactions</strong></p><div class="example-contents"><p>C++:</p><pre class="programlisting">
+ Connection connection(broker);
+ Session session = connection.createTransactionalSession();
+ ...
+ if (smellsOk())
+ session.commit();
+ else
+ session.rollback();
+ </pre><p>
+ .NET C#:
+ </p><pre class="programlisting">
+ Connection connection = new Connection(broker);
+ Session session = connection.CreateTransactionalSession();
+ ...
+ if (smellsOk())
+ session.Commit();
+ else
+ session.Rollback();
+ </pre></div></div><br class="example-break" /><div class="footnotes"><br /><hr align="left" width="100" /><div class="footnote" id="ftn.idm140160709067872"><p><a class="para" href="#idm140160709067872"><sup class="para">[8] </sup></a>Note that this currently is only true for
+ messages received using a reliable mode
+ e.g. at-least-once. Messages sent by a broker to a receiver in
+ unreliable receiver will be discarded immediately regardless of
+ transctionality.</p></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s08.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="connections.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.8. Receiving Messages from Multiple Sources </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.10. Connections</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s12.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s12.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s12.html.in
new file mode 100644
index 0000000..90a30b6
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s12.html.in
@@ -0,0 +1,42 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.12. The Request / Response Pattern</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="section-Maps.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="ch01s13.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708911856"></a>1.12. The Request / Response Pattern</h2></div></div></div><p>Request / Response applications use the reply-to property,
+ described in <a class="xref" href="section-amqp0-10-mapping.html#table-amqp0-10-message-properties" title="Table 1.9. Mapping to AMQP 0-10 Message Properties">Table 1.9, “Mapping to AMQP 0-10 Message Properties”</a>, to allow a server
+ to respond to the client that sent a message. A server sets up a
+ service queue, with a name known to clients. A client creates a
+ private queue for the server's response, creates a message for a
+ request, sets the request's reply-to property to the address of
+ the client's response queue, and sends the request to the
+ service queue. The server sends the response to the address
+ specified in the request's reply-to property.
+ </p><div class="example"><a id="idm140160708909728"></a><p class="title"><strong>Example 1.18. Request / Response Applications in C++</strong></p><div class="example-contents"><p>This example shows the C++ code for a client and server
+ that use the request / response pattern.</p><p>The server creates a service queue and waits for a
+ message to arrive. If it receives a message, it sends a
+ message back to the sender.</p><pre class="programlisting">Receiver receiver = session.createReceiver("service_queue; {create: always}");
+
+ Message request = receiver.fetch();
+ const Address&amp; address = request.getReplyTo(); // Get "reply-to" from request ...
+ if (address) {
+ Sender sender = session.createSender(address); // ... send response to "reply-to"
+ Message response("pong!");
+ sender.send(response);
+ session.acknowledge();
+ }
+ </pre><p>The client creates a sender for the service queue, and
+ also creates a response queue that is deleted when the
+ client closes the receiver for the response queue. In the C++
+ client, if the address starts with the character
+ <code class="literal">#</code>, it is given a unique name.</p><pre class="programlisting">
+ Sender sender = session.createSender("service_queue");
+
+ Address responseQueue("#response-queue; {create:always, delete:always}");
+ Receiver receiver = session.createReceiver(responseQueue);
+
+ Message request;
+ request.setReplyTo(responseQueue);
+ request.setContent("ping");
+ sender.send(request);
+ Message response = receiver.fetch();
+ std::cout << request.getContent() << " -> " << response.getContent() << std::endl;
+ </pre><p>The client sends the string <code class="literal">ping</code> to
+ the server. The server sends the response
+ <code class="literal">pong</code> back to the same client, using the
+ <code class="varname">replyTo</code> property.</p></div></div><br class="example-break" /></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="section-Maps.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="ch01s13.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.11. Maps and Lists in Message Content </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.13. Performance Tips</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s13.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s13.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s13.html.in
new file mode 100644
index 0000000..72500f9
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s13.html.in
@@ -0,0 +1,22 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.13. Performance Tips</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s12.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="ch01s14.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708901472"></a>1.13. Performance Tips</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Consider prefetching messages for receivers (see
+ <a class="xref" href="prefetch.html" title="1.6. Receiver Capacity (Prefetch)">Section 1.6, “Receiver Capacity (Prefetch)”</a>). This helps eliminate roundtrips
+ and increases throughput. Prefetch is disabled by default,
+ and enabling it is the most effective means of improving
+ throughput of received messages.</p></li><li class="listitem"><p>Send messages asynchronously. Again, this helps
+ eliminate roundtrips and increases throughput. The C++ and
+ .NET clients send asynchronously by default, however the
+ python client defaults to synchronous sends. </p></li><li class="listitem"><p>Acknowledge messages in batches (see
+ <a class="xref" href="acknowledgements.html" title="1.7. Acknowledging Received Messages">Section 1.7, “Acknowledging Received Messages”</a>). Rather than
+ acknowledging each message individually, consider issuing
+ acknowledgements after n messages and/or after a particular
+ duration has elapsed.</p></li><li class="listitem"><p>Tune the sender capacity (see
+ <a class="xref" href="replay.html" title="1.5. Sender Capacity and Replay">Section 1.5, “Sender Capacity and Replay”</a>). If the capacity is too low the
+ sender may block waiting for the broker to confirm receipt
+ of messages, before it can free up more capacity.</p></li><li class="listitem"><p>If you are setting a reply-to address on messages
+ being sent by the c++ client, make sure the address type is
+ set to either queue or topic as appropriate. This avoids the
+ client having to determine which type of node is being
+ refered to, which is required when hanling reply-to in AMQP
+ 0-10. </p></li><li class="listitem"><p>For latency sensitive applications, setting tcp-nodelay
+ on qpidd and on client connections can help reduce the
+ latency.</p></li></ul></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s12.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="ch01s14.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.12. The Request / Response Pattern </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.14. Cluster Failover</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s14.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s14.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s14.html.in
new file mode 100644
index 0000000..b9c8dc7
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s14.html.in
@@ -0,0 +1,34 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.14. Cluster Failover</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s13.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="ch01s15.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708892784"></a>1.14. Cluster Failover</h2></div></div></div><p>The messaging broker can be run in clustering mode, which provides high reliability through replicating state between brokers in the cluster. If one broker in a cluster fails, clients can choose another broker in the cluster and continue their work. Each broker in the cluster also advertises the addresses of all known brokers
+
+ <a class="footnote" href="#ftn.idm140160708891536" id="idm140160708891536"><sup class="footnote">[11]</sup></a>
+
+ . A client can use this information to dynamically keep the list of reconnection urls up to date.</p><p>In C++, the <code class="classname">FailoverUpdates</code> class provides this functionality:</p><div class="example"><a id="idm140160708890000"></a><p class="title"><strong>Example 1.19. Tracking cluster membership</strong></p><div class="example-contents"><p>In C++:</p><pre class="programlisting">
+ #include <qpid/messaging/FailoverUpdates.h>
+ ...
+ Connection connection("localhost:5672");
+ connection.setOption("reconnect", true);
+ try {
+ connection.open();
+ std::auto_ptr<FailoverUpdates> updates(new FailoverUpdates(connection));
+
+ </pre><p>In python:</p><pre class="programlisting">
+ import qpid.messaging.util
+ ...
+ connection = Connection("localhost:5672")
+ connection.reconnect = True
+ try:
+ connection.open()
+ auto_fetch_reconnect_urls(connection)
+
+ </pre><p>
+ In .NET C#:
+ </p><pre class="programlisting">
+ using Org.Apache.Qpid.Messaging;
+ ...
+ connection = new Connection("localhost:5672");
+ connection.SetOption("reconnect", true);
+ try {
+ connection.Open();
+ FailoverUpdates failover = new FailoverUpdates(connection);
+
+ </pre></div></div><br class="example-break" /><div class="footnotes"><br /><hr align="left" width="100" /><div class="footnote" id="ftn.idm140160708891536"><p><a class="para" href="#idm140160708891536"><sup class="para">[11] </sup></a>This is done via the amq.failover exchange in AMQP 0-10</p></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s13.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="ch01s15.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.13. Performance Tips </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.15. Logging</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s15.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s15.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s15.html.in
new file mode 100644
index 0000000..ba66f03
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch01s15.html.in
@@ -0,0 +1,26 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.15. Logging</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s14.html">Prev</a> </td><th align="center" width="60%">Chapter 1. Using the Qpid Messaging API</th><td align="right" width="20%"> <a accesskey="n" href="section-amqp0-10-mapping.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708884496"></a>1.15. Logging</h2></div></div></div><p>To simplify debugging, Qpid provides a logging facility
+ that prints out messaging events.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708883360"></a>1.15.1. Logging in C++</h3></div></div></div><p>
+ The Qpidd broker and C++ clients can both use environment variables to enable logging. Linux and Windows systems use the same named environment variables and values.
+ </p><p>Use QPID_LOG_ENABLE to set the level of logging you are interested in (trace, debug, info, notice, warning, error, or critical):
+ </p><pre class="screen">
+ export QPID_LOG_ENABLE="warning+"
+ </pre><p>
+ The Qpidd broker and C++ clients use QPID_LOG_OUTPUT to determine where logging output should be sent. This is either a file name or the special values stderr, stdout, or syslog:
+ </p><pre class="screen">
+ export QPID_LOG_TO_FILE="/tmp/myclient.out"
+ </pre><p>
+ From a Windows command prompt, use the following command format to set the environment variables:
+ </p><pre class="screen">
+ set QPID_LOG_ENABLE=warning+
+ set QPID_LOG_TO_FILE=D:\tmp\myclient.out
+ </pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708878352"></a>1.15.2. Logging in Python</h3></div></div></div><p>
+ The Python client library supports logging using the standard Python logging module. The easiest way to do logging is to use the <span class="command"><strong>basicConfig()</strong></span>, which reports all warnings and errors:
+ </p><pre class="programlisting">from logging import basicConfig
+ basicConfig()
+ </pre><p>
+ Qpidd also provides a convenience method that makes it easy to specify the level of logging desired. For instance, the following code enables logging at the <span class="command"><strong>DEBUG</strong></span> level:
+ </p><pre class="programlisting">from qpid.log import enable, DEBUG
+ enable("qpid.messaging.io", DEBUG)
+ </pre><p>
+ For more information on Python logging, see <a class="ulink" href="http://docs.python.org/lib/node425.html" target="_top">http://docs.python.org/lib/node425.html</a>. For more information on Qpid logging, use <span class="command"><strong>$ pydoc qpid.log</strong></span>.
+ </p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s14.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="section-amqp0-10-mapping.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.14. Cluster Failover </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.16. The AMQP 0-10 mapping</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02.html.in
new file mode 100644
index 0000000..fdf8266
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02.html.in
@@ -0,0 +1,41 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Chapter 2. The .NET Binding for the C++ Messaging Client</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="Message-Groups-Guide.html">Prev</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="idm140160708808608"></a>Chapter 2. The .NET Binding for the C++ Messaging Client</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ch02.html#idm140160708807408">2.1. .NET Binding for the C++ Messaging Client Component Architecture</a></span></dt><dt><span class="section"><a href="ch02s02.html">2.2. .NET Binding for the C++ Messaging Client Examples</a></span></dt><dt
><span class="section"><a href="ch02s03.html">2.3. .NET Binding Class Mapping to Underlying C++ Messaging API</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s03.html#idm140160708743168">2.3.1. .NET Binding for the C++ Messaging API Class: Address</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708672336">2.3.2. .NET Binding for the C++ Messaging API Class: Connection</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708597216">2.3.3. .NET Binding for the C++ Messaging API Class: Duration</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708547888">2.3.4. .NET Binding for the C++ Messaging API Class: FailoverUpdates</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708526768">2.3.5. .NET Binding for the C++ Messaging API Class: Message</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708388528">2.3.6. .NET Binding for the C++ Messaging API Class: Receiver</a
></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708313104">2.3.7. .NET Binding for the C++ Messaging API Class: Sender</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708256592">2.3.8. .NET Binding for the C++ Messaging API Class: Session</a></span></dt><dt><span class="section"><a href="ch02s03.html#idm140160708144208">2.3.9. .NET Binding Class: SessionReceiver</a></span></dt></dl></dd></dl></div><p>
+ The .NET Binding for the C++ Qpid Messaging Client is a library that gives
+ any .NET program access to Qpid C++ Messaging objects and methods.
+ </p><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708807408"></a>2.1. .NET Binding for the C++ Messaging Client Component Architecture</h2></div></div></div><pre class="programlisting">
+ +----------------------------+
+ | Dotnet examples |
+ | Managed C# |
+ +------+---------------+-----+
+ | |
+ V |
+ +---------------------------+ |
+ | .NET Managed Callback | |
+ | org.apache.qpid.messaging.| |
+ | sessionreceiver.dll | |
+ +----------------------+----+ |
+ | |
+managed V V
+(.NET) +--------------------------------+
+:::::::::::::::::::::::| .NET Binding Library |::::::::::::
+unmanaged | org.apache.qpid.messaging.dll |
+(Native Win32/64) +---------------+----------------+
+ |
+ |
+ +----------------+ |
+ | Native examples| |
+ | Unmanaged C++ | |
+ +--------+-------+ |
+ | |
+ V V
+ +----------------------------------+
+ | QPID Messaging C++ Libraries |
+ | qpid*.dll qmf*.dll |
+ +--------+--------------+----------+
+</pre><p>This diagram illustrates the code and library components of the binding
+and the hierarchical relationships between them.</p><div class="table"><a id="table-Dotnet-Binding-Component-Architecture"></a><p class="title"><strong>Table 2.1. .NET Binding for the C++ Messaging Client Component Architecture</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging Client Component Architecture"><colgroup><col /><col /></colgroup><thead><tr><th>Component Name</th><th>Component Function</th></tr></thead><tbody><tr><td>QPID Messaging C++ Libraries</td><td>The QPID Messaging C++ core run time system</td></tr><tr><td>Unmanaged C++ Example Source Programs</td><td>Ordinary C++ programs that illustrate using qpid/cpp Messaging directly
+ in a native Windows environment.</td></tr><tr><td>.NET Messaging Binding Library</td><td>The .NET Messaging Binding library provides interoprability between
+ managed .NET programs and the unmanaged, native Qpid Messaging C++ core
+ run time system. .NET programs create a Reference to this library thereby
+ exposing all of the native C++ Messaging functionality to programs
+ written in any .NET language.</td></tr><tr><td>.NET Messaging Managed Callback Library</td><td>An extension of the .NET Messaging Binding Library that provides message
+ callbacks in a managed .NET environment.</td></tr><tr><td>Managed C# .NET Example Source Programs</td><td>Various C# example programs that illustrate using .NET Binding for C++ Messaging in the .NET environment.</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="Message-Groups-Guide.html">Prev</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.17. Using Message Groups </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 2.2. .NET Binding for the C++ Messaging Client Examples</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s02.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s02.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s02.html.in
new file mode 100644
index 0000000..a65ee6b
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s02.html.in
@@ -0,0 +1,18 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">2.2. .NET Binding for the C++ Messaging Client Examples</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch02.html">Prev</a> </td><th align="center" width="60%">Chapter 2. The .NET Binding for the C++ Messaging Client</th><td align="right" width="20%"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708793760"></a>2.2. .NET Binding for the C++ Messaging Client Examples</h2></div></div></div><p>This chapter describes the various sample programs that
+ are available to illustrate common Qpid Messaging usage.</p><div class="table"><a id="table-Dotnet-Binding-Example-Client-Server"></a><p class="title"><strong>Table 2.2. Example : Client - Server</strong></p><div class="table-contents"><table border="1" class="table" summary="Example : Client - Server"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.server</td><td>Creates a Receiver and listens for messages.
+ Upon message reception the message content is converted to upper case
+ and forwarded to the received message's ReplyTo address.</td></tr><tr><td>csharp.example.client</td><td>Sends a series of messages to the Server and prints the original message
+ content and the received message content.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-Dotnet-Binding-Example-MapSender-MapReceiver"></a><p class="title"><strong>Table 2.3. Example : Map Sender – Map Receiver</strong></p><div class="table-contents"><table border="1" class="table" summary="Example : Map Sender – Map Receiver"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.map.receiver</td><td>Creates a Receiver and listens for a map message.
+ Upon message reception the message is decoded and displayed on the console.</td></tr><tr><td>csharp.map.sender</td><td>Creates a map message and sends it to map.receiver.
+ The map message contains values for every supported .NET Messaging
+ Binding data type.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-Dotnet-Binding-Example-Spout-Drain"></a><p class="title"><strong>Table 2.4. Example : Spout - Drain</strong></p><div class="table-contents"><table border="1" class="table" summary="Example : Spout - Drain"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.spout</td><td>Spout is a more complex example of code that generates a series of messages
+ and sends them to peer program Drain. Flexible command line arguments allow
+ the user to specify a variety of message and program options.</td></tr><tr><td>csharp.example.drain</td><td>Drain is a more complex example of code that receives a series of messages
+ and displays their contents on the console.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-Dotnet-Binding-Example-CallbackSender-CallbackReceiver"></a><p class="title"><strong>Table 2.5. Example : Map Callback Sender – Map Callback Receiver</strong></p><div class="table-contents"><table border="1" class="table" summary="Example : Map Callback Sender – Map Callback Receiver"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.map.callback.receiver</td><td>Creates a Receiver and listens for a map message.
+ Upon message reception the message is decoded and displayed on the console.
+ This example illustrates the use of the C# managed code callback mechanism
+ provided by .NET Messaging Binding Managed Callback Library.</td></tr><tr><td>csharp.map.callback.sender</td><td>Creates a map message and sends it to map_receiver.
+ The map message contains values for every supported .NET Messaging
+ Binding data type.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-Dotnet-Binding-Example-DeclareQueues"></a><p class="title"><strong>Table 2.6. Example - Declare Queues</strong></p><div class="table-contents"><table border="1" class="table" summary="Example - Declare Queues"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.declare_queues</td><td>A program to illustrate creating objects on a broker.
+ This program creates a queue used by spout and drain.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-Dotnet-Binding-Example-DirectSender-DirectReceiver"></a><p class="title"><strong>Table 2.7. Example: Direct Sender - Direct Receiver</strong></p><div class="table-contents"><table border="1" class="table" summary="Example: Direct Sender - Direct Receiver"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.direct.receiver</td><td>Creates a Receiver and listens for a messages.
+ Upon message reception the message is decoded and displayed on the console.</td></tr><tr><td>csharp.direct.sender</td><td> Creates a series of messages and sends them to csharp.direct.receiver.</td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="table-Dotnet-Binding-Example-Helloworld"></a><p class="title"><strong>Table 2.8. Example: Hello World</strong></p><div class="table-contents"><table border="1" class="table" summary="Example: Hello World"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.helloworld</td><td>A program to send a message and to receive the same message.</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch02.html">Prev</a> </td><td align="center" width=
"20%"><a accesskey="u" href="ch02.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">Chapter 2. The .NET Binding for the C++ Messaging Client </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 2.3. .NET Binding Class Mapping to Underlying C++ Messaging API</td></tr></table></div></div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/4dd03dd3/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s03.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s03.html.in b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s03.html.in
new file mode 100644
index 0000000..0090dcd
--- /dev/null
+++ b/input/releases/qpid-cpp-1.38.0/messaging-api/book/ch02s03.html.in
@@ -0,0 +1,39 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">2.3. .NET Binding Class Mapping to Underlying C++ Messaging API</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch02s02.html">Prev</a> </td><th align="center" width="60%">Chapter 2. The .NET Binding for the C++ Messaging Client</th><td align="right" width="20%"> </td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708744416"></a>2.3. .NET Binding Class Mapping to Underlying C++ Messaging API</h2></div></div></div><p>This chapter describes the specific mappings between
+ classes in the .NET Binding and the underlying C++ Messaging
+ API.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708743168"></a>2.3.1. .NET Binding for the C++ Messaging API Class: Address</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Address"></a><p class="title"><strong>Table 2.9. .NET Binding for the C++ Messaging API Class: Address</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: Address"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: Address</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Address</td></tr><tr><td>.NET</td><td>public ref class Address</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Address();</td></tr><tr><td>.NET</td><td>public Address();</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><t
d>C++</td><td>Address(const std::string& address);</td></tr><tr><td>.NET</td><td>public Address(string address);</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Address(const std::string& name, const std::string& subject, const qpid::types::Variant::Map& options, const std::string& type = "");</td></tr><tr><td>.NET</td><td>public Address(string name, string subject, Dictionary<string, object> options);</td></tr><tr><td>.NET</td><td>public Address(string name, string subject, Dictionary<string, object> options, string type);</td></tr><tr><td align="center" colspan="2">Copy constructor</td></tr><tr><td>C++</td><td>Address(const Address& address);</td></tr><tr><td>.NET</td><td>public Address(Address address);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~Address();</td></tr><tr><td>.NET</td><td>~Address();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td
>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!Address();</td></tr><tr><td align="center" colspan="2">Copy assignment operator</td></tr><tr><td>C++</td><td>Address& operator=(const Address&);</td></tr><tr><td>.NET</td><td>public Address op_Assign(Address rhs);</td></tr><tr><td align="center" colspan="2">Property: Name</td></tr><tr><td>C++</td><td>const std::string& getName() const;</td></tr><tr><td>C++</td><td>void setName(const std::string&);</td></tr><tr><td>.NET</td><td>public string Name { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Subject</td></tr><tr><td>C++</td><td>const std::string& getSubject() const;</td></tr><tr><td>C++</td><td>void setSubject(const std::string&);</td></tr><tr><td>.NET</td><td>public string Subject { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Options</td></tr><tr><td>C++</td><td>const qpid::types::Variant::Map& getOptions() const;</td></tr><tr><td>C++</td><td>qpid::types::Variant::
Map& getOptions();</td></tr><tr><td>C++</td><td>void setOptions(const qpid::types::Variant::Map&);</td></tr><tr><td>.NET</td><td>public Dictionary<string, object> Options { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Type</td></tr><tr><td>C++</td><td>std::string getType() const;</td></tr><tr><td>C++</td><td>void setType(const std::string&);</td></tr><tr><td>.NET</td><td>public string Type { get; set; }</td></tr><tr><td align="center" colspan="2">Miscellaneous</td></tr><tr><td>C++</td><td>std::string str() const;</td></tr><tr><td>.NET</td><td>public string ToStr();</td></tr><tr><td align="center" colspan="2">Miscellaneous</td></tr><tr><td>C++</td><td>operator bool() const;</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align="center" colspan="2">Miscellaneous</td></tr><tr><td>C++</td><td>bool operator !() const;</td></tr><tr><td>.NET</td><td>n/a</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div c
lass="titlepage"><div><div><h3 class="title"><a id="idm140160708672336"></a>2.3.2. .NET Binding for the C++ Messaging API Class: Connection</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Connection"></a><p class="title"><strong>Table 2.10. .NET Binding for the C++ Messaging API Class: Connection</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: Connection"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: Connection</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Connection : public qpid::messaging::Handle<ConnectionImpl></td></tr><tr><td>.NET</td><td>public ref class Connection</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Connection(ConnectionImpl* impl);</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align="ce
nter" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Connection();</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Connection(const std::string& url, const qpid::types::Variant::Map& options = qpid::types::Variant::Map());</td></tr><tr><td>.NET</td><td>public Connection(string url);</td></tr><tr><td>.NET</td><td>public Connection(string url, Dictionary<string, object> options);</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Connection(const std::string& url, const std::string& options);</td></tr><tr><td>.NET</td><td>public Connection(string url, string options); </td></tr><tr><td align="center" colspan="2">Copy Constructor</td></tr><tr><td>C++</td><td>Connection(const Connection&);</td></tr><tr><td>.NET</td><td>public Connection(Connection connection);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~Connect
ion();</td></tr><tr><td>.NET</td><td>~Connection();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!Connection();</td></tr><tr><td align="center" colspan="2">Copy assignment operator</td></tr><tr><td>C++</td><td>Connection& operator=(const Connection&);</td></tr><tr><td>.NET</td><td>public Connection op_Assign(Connection rhs);</td></tr><tr><td align="center" colspan="2">Method: SetOption</td></tr><tr><td>C++</td><td>void setOption(const std::string& name, const qpid::types::Variant& value);</td></tr><tr><td>.NET</td><td>public void SetOption(string name, object value);</td></tr><tr><td align="center" colspan="2">Method: open</td></tr><tr><td>C++</td><td>void open();</td></tr><tr><td>.NET</td><td>public void Open();</td></tr><tr><td align="center" colspan="2">Property: isOpen</td></tr><tr><td>C++</td><td>bool isOpen();</td></tr><tr><td>.NET</td><td>public bool IsOpen { get; }</td></tr><tr><td align=
"center" colspan="2">Method: close</td></tr><tr><td>C++</td><td>void close();</td></tr><tr><td>.NET</td><td>public void Close();</td></tr><tr><td align="center" colspan="2">Method: createTransactionalSession</td></tr><tr><td>C++</td><td>Session createTransactionalSession(const std::string& name = std::string());</td></tr><tr><td>.NET</td><td>public Session CreateTransactionalSession();</td></tr><tr><td>.NET</td><td>public Session CreateTransactionalSession(string name);</td></tr><tr><td align="center" colspan="2">Method: createSession</td></tr><tr><td>C++</td><td>Session createSession(const std::string& name = std::string());</td></tr><tr><td>.NET</td><td>public Session CreateSession();</td></tr><tr><td>.NET</td><td>public Session CreateSession(string name);</td></tr><tr><td align="center" colspan="2">Method: getSession</td></tr><tr><td>C++</td><td>Session getSession(const std::string& name) const;</td></tr><tr><td>.NET</td><td>public Session GetSession(string name);</td
></tr><tr><td align="center" colspan="2">Property: AuthenticatedUsername</td></tr><tr><td>C++</td><td>std::string getAuthenticatedUsername();</td></tr><tr><td>.NET</td><td>public string GetAuthenticatedUsername();</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708597216"></a>2.3.3. .NET Binding for the C++ Messaging API Class: Duration</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Duration"></a><p class="title"><strong>Table 2.11. .NET Binding for the C++ Messaging API Class: Duration</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: Duration"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: Duration</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Dur
ation</td></tr><tr><td>.NET</td><td>public ref class Duration</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>explicit Duration(uint64_t milliseconds);</td></tr><tr><td>.NET</td><td>public Duration(ulong mS);</td></tr><tr><td align="center" colspan="2">Copy constructor</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>public Duration(Duration rhs);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>default</td></tr><tr><td>.NET</td><td>default</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>default</td></tr><tr><td align="center" colspan="2">Property: Milliseconds</td></tr><tr><td>C++</td><td>uint64_t getMilliseconds() const;</td></tr><tr><td>.NET</td><td>public ulong Milliseconds { get; }</td></tr><tr><td align="center" colspan="2">Operator: *</td></tr><tr><td>C++</td><td>Duration operator*(const Duration& duration, uint64_t mul
tiplier);</td></tr><tr><td>.NET</td><td>public static Duration operator *(Duration dur, ulong multiplier);</td></tr><tr><td>.NET</td><td>public static Duration Multiply(Duration dur, ulong multiplier);</td></tr><tr><td>C++</td><td>Duration operator*(uint64_t multiplier, const Duration& duration);</td></tr><tr><td>.NET</td><td>public static Duration operator *(ulong multiplier, Duration dur);</td></tr><tr><td>.NET</td><td>public static Duration Multiply(ulong multiplier, Duration dur);</td></tr><tr><td align="center" colspan="2">Constants</td></tr><tr><td>C++</td><td>static const Duration FOREVER;</td></tr><tr><td>C++</td><td>static const Duration IMMEDIATE;</td></tr><tr><td>C++</td><td>static const Duration SECOND;</td></tr><tr><td>C++</td><td>static const Duration MINUTE;</td></tr><tr><td>.NET</td><td>public sealed class DurationConstants</td></tr><tr><td>.NET</td><td>public static Duration FORVER;</td></tr><tr><td>.NET</td><td>public static Duration IMMEDIATE;</td></tr><tr><td
>.NET</td><td>public static Duration MINUTE;</td></tr><tr><td>.NET</td><td>public static Duration SECOND;</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708547888"></a>2.3.4. .NET Binding for the C++ Messaging API Class: FailoverUpdates</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-FailoverUpdates"></a><p class="title"><strong>Table 2.12. .NET Binding for the C++ Messaging API Class: FailoverUpdates</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: FailoverUpdates"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: FailoverUpdates</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class FailoverUpdates</td></tr><tr><td>.NET</td><td>public ref class FailoverUpdat
es</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>FailoverUpdates(Connection& connection);</td></tr><tr><td>.NET</td><td>public FailoverUpdates(Connection connection);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~FailoverUpdates();</td></tr><tr><td>.NET</td><td>~FailoverUpdates();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!FailoverUpdates();</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708526768"></a>2.3.5. .NET Binding for the C++ Messaging API Class: Message</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Message"></a><p class="title"><strong>Table 2.13. .NET Binding for the C++ Messaging API Class: Message</strong></p><div class="table-contents"><table border="1" class="table" sum
mary=".NET Binding for the C++ Messaging API Class: Message"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: Message</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Message</td></tr><tr><td>.NET</td><td>public ref class Message</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Message(const std::string& bytes = std::string());</td></tr><tr><td>.NET</td><td>Message();</td></tr><tr><td>.NET</td><td>Message(System::String ^ theStr);</td></tr><tr><td>.NET</td><td>Message(System::Object ^ theValue);</td></tr><tr><td>.NET</td><td>Message(array<System::Byte> ^ bytes);</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Message(const char*, size_t);</td></tr><tr><td>.NET</td><td>public Message(byte[] bytes, int offset, int size);</td></tr><tr><td> </td><td>Copy constructor</td></tr><tr><td>C++</td><td>
Message(const Message&);</td></tr><tr><td>.NET</td><td>public Message(Message message);</td></tr><tr><td> </td><td>Copy assignment operator</td></tr><tr><td>C++</td><td>Message& operator=(const Message&);</td></tr><tr><td>.NET</td><td>public Message op_Assign(Message rhs);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~Message();</td></tr><tr><td>.NET</td><td>~Message();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!Message()</td></tr><tr><td align="center" colspan="2">Property: ReplyTo</td></tr><tr><td>C++</td><td>void setReplyTo(const Address&);</td></tr><tr><td>C++</td><td>const Address& getReplyTo() const;</td></tr><tr><td>.NET</td><td>public Address ReplyTo { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Subject</td></tr><tr><td>C++</td><td>void setSubject(const std::string&);</td></tr><tr><td>C++</td><td>const std::string&
; getSubject() const;</td></tr><tr><td>.NET</td><td>public string Subject { get; set; }</td></tr><tr><td align="center" colspan="2">Property: ContentType</td></tr><tr><td>C++</td><td>void setContentType(const std::string&);</td></tr><tr><td>C++</td><td>const std::string& getContentType() const;</td></tr><tr><td>.NET</td><td>public string ContentType { get; set; }</td></tr><tr><td align="center" colspan="2">Property: MessageId</td></tr><tr><td>C++</td><td>void setMessageId(const std::string&);</td></tr><tr><td>C++</td><td>const std::string& getMessageId() const;</td></tr><tr><td>.NET</td><td>public string MessageId { get; set; }</td></tr><tr><td align="center" colspan="2">Property: UserId</td></tr><tr><td>C++</td><td>void setUserId(const std::string&);</td></tr><tr><td>C++</td><td>const std::string& getUserId() const;</td></tr><tr><td>.NET</td><td>public string UserId { get; set; }</td></tr><tr><td align="center" colspan="2">Property: CorrelationId</td></tr><t
r><td>C++</td><td>void setCorrelationId(const std::string&);</td></tr><tr><td>C++</td><td>const std::string& getCorrelationId() const;</td></tr><tr><td>.NET</td><td>public string CorrelationId { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Priority</td></tr><tr><td>C++</td><td>void setPriority(uint8_t);</td></tr><tr><td>C++</td><td>uint8_t getPriority() const;</td></tr><tr><td>.NET</td><td>public byte Priority { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Ttl</td></tr><tr><td>C++</td><td>void setTtl(Duration ttl);</td></tr><tr><td>C++</td><td>Duration getTtl() const;</td></tr><tr><td>.NET</td><td>public Duration Ttl { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Durable</td></tr><tr><td>C++</td><td>void setDurable(bool durable);</td></tr><tr><td>C++</td><td>bool getDurable() const;</td></tr><tr><td>.NET</td><td>public bool Durable { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Redelivered</t
d></tr><tr><td>C++</td><td>bool getRedelivered() const;</td></tr><tr><td>C++</td><td>void setRedelivered(bool);</td></tr><tr><td>.NET</td><td>public bool Redelivered { get; set; }</td></tr><tr><td align="center" colspan="2">Method: SetProperty</td></tr><tr><td>C++</td><td>void setProperty(const std::string&, const qpid::types::Variant&);</td></tr><tr><td>.NET</td><td>public void SetProperty(string name, object value);</td></tr><tr><td align="center" colspan="2">Property: Properties</td></tr><tr><td>C++</td><td>const qpid::types::Variant::Map& getProperties() const;</td></tr><tr><td>C++</td><td>qpid::types::Variant::Map& getProperties();</td></tr><tr><td>.NET</td><td>public Dictionary<string, object> Properties { get; set; }</td></tr><tr><td align="center" colspan="2">Method: SetContent</td></tr><tr><td>C++</td><td>void setContent(const std::string&);</td></tr><tr><td>C++</td><td>void setContent(const char* chars, size_t count);</td></tr><tr><td>.NET</td><td
>public void SetContent(byte[] bytes);</td></tr><tr><td>.NET</td><td>public void SetContent(string content);</td></tr><tr><td>.NET</td><td>public void SetContent(byte[] bytes, int offset, int size);</td></tr><tr><td align="center" colspan="2">Method: GetContent</td></tr><tr><td>C++</td><td>std::string getContent() const;</td></tr><tr><td>.NET</td><td>public string GetContent();</td></tr><tr><td>.NET</td><td>public void GetContent(byte[] arr);</td></tr><tr><td>.NET</td><td>public void GetContent(Collection<object> __p1);</td></tr><tr><td>.NET</td><td>public void GetContent(Dictionary<string, object> dict);</td></tr><tr><td align="center" colspan="2">Method: GetContentPtr</td></tr><tr><td>C++</td><td>const char* getContentPtr() const;</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align="center" colspan="2">Property: ContentSize</td></tr><tr><td>C++</td><td>size_t getContentSize() const;</td></tr><tr><td>.NET</td><td>public ulong ContentSize { get; }</td></tr><tr><td a
lign="center" colspan="2">Struct: EncodingException</td></tr><tr><td>C++</td><td>struct EncodingException : qpid::types::Exception</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align="center" colspan="2">Method: decode</td></tr><tr><td>C++</td><td>void decode(const Message& message, qpid::types::Variant::Map& map, const std::string& encoding = std::string());</td></tr><tr><td>C++</td><td>void decode(const Message& message, qpid::types::Variant::List& list, const std::string& encoding = std::string());</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align="center" colspan="2">Method: encode</td></tr><tr><td>C++</td><td>void encode(const qpid::types::Variant::Map& map, Message& message, const std::string& encoding = std::string());</td></tr><tr><td>C++</td><td>void encode(const qpid::types::Variant::List& list, Message& message, const std::string& encoding = std::string());</td></tr><tr><td>.NET</td><td>n/a</td></tr><tr><td align
="center" colspan="2">Method: AsString</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>public string AsString(object obj);</td></tr><tr><td>.NET</td><td>public string ListAsString(Collection<object> list);</td></tr><tr><td>.NET</td><td>public string MapAsString(Dictionary<string, object> dict);</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708388528"></a>2.3.6. .NET Binding for the C++ Messaging API Class: Receiver</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Receiver"></a><p class="title"><strong>Table 2.14. .NET Binding for the C++ Messaging API Class: Receiver</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: Receiver"><colgroup><col class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding C
lass: Receiver</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Receiver</td></tr><tr><td>.NET</td><td>public ref class Receiver</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>.NET</td><td>Constructed object is returned by Session.CreateReceiver</td></tr><tr><td align="center" colspan="2">Copy constructor</td></tr><tr><td>C++</td><td>Receiver(const Receiver&);</td></tr><tr><td>.NET</td><td>public Receiver(Receiver receiver);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~Receiver();</td></tr><tr><td>.NET</td><td>~Receiver();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!Receiver()</td></tr><tr><td align="center" colspan="2">Copy assignment operator</td></tr><tr><td>C++</td><td>Receiver& operator=(const Receiver&);</td></tr><tr><td>.NET</td><td>public Receiver op_Assign(Receiver rhs);</td></tr><tr
><td align="center" colspan="2">Method: Get</td></tr><tr><td>C++</td><td>bool get(Message& message, Duration timeout=Duration::FOREVER);</td></tr><tr><td>.NET</td><td>public bool Get(Message mmsgp);</td></tr><tr><td>.NET</td><td>public bool Get(Message mmsgp, Duration durationp);</td></tr><tr><td align="center" colspan="2">Method: Get</td></tr><tr><td>C++</td><td>Message get(Duration timeout=Duration::FOREVER);</td></tr><tr><td>.NET</td><td>public Message Get();</td></tr><tr><td>.NET</td><td>public Message Get(Duration durationp);</td></tr><tr><td align="center" colspan="2">Method: Fetch</td></tr><tr><td>C++</td><td>bool fetch(Message& message, Duration timeout=Duration::FOREVER);</td></tr><tr><td>.NET</td><td>public bool Fetch(Message mmsgp);</td></tr><tr><td>.NET</td><td>public bool Fetch(Message mmsgp, Duration duration);</td></tr><tr><td align="center" colspan="2">Method: Fetch</td></tr><tr><td>C++</td><td>Message fetch(Duration timeout=Duration::FOREVER);</td></tr><tr><
td>.NET</td><td>public Message Fetch();</td></tr><tr><td>.NET</td><td>public Message Fetch(Duration durationp);</td></tr><tr><td align="center" colspan="2">Property: Capacity</td></tr><tr><td>C++</td><td>void setCapacity(uint32_t);</td></tr><tr><td>C++</td><td>uint32_t getCapacity();</td></tr><tr><td>.NET</td><td>public uint Capacity { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Available</td></tr><tr><td>C++</td><td>uint32_t getAvailable();</td></tr><tr><td>.NET</td><td>public uint Available { get; }</td></tr><tr><td align="center" colspan="2">Property: Unsettled</td></tr><tr><td>C++</td><td>uint32_t getUnsettled();</td></tr><tr><td>.NET</td><td>public uint Unsettled { get; }</td></tr><tr><td align="center" colspan="2">Method: Close</td></tr><tr><td>C++</td><td>void close();</td></tr><tr><td>.NET</td><td>public void Close();</td></tr><tr><td align="center" colspan="2">Property: IsClosed</td></tr><tr><td>C++</td><td>bool isClosed() const;</td></tr><tr><td>.NET<
/td><td>public bool IsClosed { get; }</td></tr><tr><td align="center" colspan="2">Property: Name</td></tr><tr><td>C++</td><td>const std::string& getName() const;</td></tr><tr><td>.NET</td><td>public string Name { get; }</td></tr><tr><td align="center" colspan="2">Property: Session</td></tr><tr><td>C++</td><td>Session getSession() const;</td></tr><tr><td>.NET</td><td>public Session Session { get; }</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708313104"></a>2.3.7. .NET Binding for the C++ Messaging API Class: Sender</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Sender"></a><p class="title"><strong>Table 2.15. .NET Binding for the C++ Messaging API Class: Sender</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: Sender"><colgroup><col class="c1" /><col class=
"c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: Sender</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Sender</td></tr><tr><td>.NET</td><td>public ref class Sender</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>.NET</td><td>Constructed object is returned by Session.CreateSender</td></tr><tr><td align="center" colspan="2">Copy constructor</td></tr><tr><td>C++</td><td>Sender(const Sender&);</td></tr><tr><td>.NET</td><td>public Sender(Sender sender);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~Sender();</td></tr><tr><td>.NET</td><td>~Sender();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!Sender()</td></tr><tr><td align="center" colspan="2">Copy assignment operator</td></tr><tr><td>C++</td><td>Sender& operator=(const Sender&);</td></tr><tr><td>.NET</td><td>public
Sender op_Assign(Sender rhs);</td></tr><tr><td align="center" colspan="2">Method: Send</td></tr><tr><td>C++</td><td>void send(const Message& message, bool sync=false);</td></tr><tr><td>.NET</td><td>public void Send(Message mmsgp);</td></tr><tr><td>.NET</td><td>public void Send(Message mmsgp, bool sync);</td></tr><tr><td align="center" colspan="2">Method: Close</td></tr><tr><td>C++</td><td>void close();</td></tr><tr><td>.NET</td><td>public void Close();</td></tr><tr><td align="center" colspan="2">Property: Capacity</td></tr><tr><td>C++</td><td>void setCapacity(uint32_t);</td></tr><tr><td>C++</td><td>uint32_t getCapacity();</td></tr><tr><td>.NET</td><td>public uint Capacity { get; set; }</td></tr><tr><td align="center" colspan="2">Property: Available</td></tr><tr><td>C++</td><td>uint32_t getAvailable();</td></tr><tr><td>.NET</td><td>public uint Available { get; }</td></tr><tr><td align="center" colspan="2">Property: Unsettled</td></tr><tr><td>C++</td><td>uint32_t getUnsettled();</
td></tr><tr><td>.NET</td><td>public uint Unsettled { get; }</td></tr><tr><td align="center" colspan="2">Property: Name</td></tr><tr><td>C++</td><td>const std::string& getName() const;</td></tr><tr><td>.NET</td><td>public string Name { get; }</td></tr><tr><td align="center" colspan="2">Property: Session</td></tr><tr><td>C++</td><td>Session getSession() const;</td></tr><tr><td>.NET</td><td>public Session Session { get; }</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708256592"></a>2.3.8. .NET Binding for the C++ Messaging API Class: Session</h3></div></div></div><div class="table"><a id="table-Dotnet-Binding-Session"></a><p class="title"><strong>Table 2.16. .NET Binding for the C++ Messaging API Class: Session</strong></p><div class="table-contents"><table border="1" class="table" summary=".NET Binding for the C++ Messaging API Class: Session"><colgroup><co
l class="c1" /><col class="c2" /></colgroup><thead><tr><th align="center" colspan="2">.NET Binding Class: Session</th></tr><tr><th>Language</th><th>Syntax</th></tr></thead><tbody><tr><td>C++</td><td>class Session</td></tr><tr><td>.NET</td><td>public ref class Session</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>.NET</td><td>Constructed object is returned by Connection.CreateSession</td></tr><tr><td align="center" colspan="2">Copy constructor</td></tr><tr><td>C++</td><td>Session(const Session&);</td></tr><tr><td>.NET</td><td>public Session(Session session);</td></tr><tr><td align="center" colspan="2">Destructor</td></tr><tr><td>C++</td><td>~Session();</td></tr><tr><td>.NET</td><td>~Session();</td></tr><tr><td align="center" colspan="2">Finalizer</td></tr><tr><td>C++</td><td>n/a</td></tr><tr><td>.NET</td><td>!Session()</td></tr><tr><td align="center" colspan="2">Copy assignment operator</td></tr><tr><td>C++</td><td>Session& operator=(const Session&a
mp;);</td></tr><tr><td>.NET</td><td>public Session op_Assign(Session rhs);</td></tr><tr><td align="center" colspan="2">Method: Close</td></tr><tr><td>C++</td><td>void close();</td></tr><tr><td>.NET</td><td>public void Close();</td></tr><tr><td align="center" colspan="2">Method: Commit</td></tr><tr><td>C++</td><td>void commit();</td></tr><tr><td>.NET</td><td>public void Commit();</td></tr><tr><td align="center" colspan="2">Method: Rollback</td></tr><tr><td>C++</td><td>void rollback();</td></tr><tr><td>.NET</td><td>public void Rollback();</td></tr><tr><td align="center" colspan="2">Method: Acknowledge</td></tr><tr><td>C++</td><td>void acknowledge(bool sync=false);</td></tr><tr><td>C++</td><td>void acknowledge(Message&, bool sync=false);</td></tr><tr><td>.NET</td><td>public void Acknowledge();</td></tr><tr><td>.NET</td><td>public void Acknowledge(bool sync);</td></tr><tr><td>.NET</td><td>public void Acknowledge(Message __p1);</td></tr><tr><td>.NET</td><td>public void Acknowledge(Me
ssage __p1, bool __p2);</td></tr><tr><td align="center" colspan="2">Method: Reject</td></tr><tr><td>C++</td><td>void reject(Message&);</td></tr><tr><td>.NET</td><td>public void Reject(Message __p1);</td></tr><tr><td align="center" colspan="2">Method: Release</td></tr><tr><td>C++</td><td>void release(Message&);</td></tr><tr><td>.NET</td><td>public void Release(Message __p1);</td></tr><tr><td align="center" colspan="2">Method: Sync</td></tr><tr><td>C++</td><td>void sync(bool block=true);</td></tr><tr><td>.NET</td><td>public void Sync();</td></tr><tr><td>.NET</td><td>public void Sync(bool block);</td></tr><tr><td align="center" colspan="2">Property: Receivable</td></tr><tr><td>C++</td><td>uint32_t getReceivable();</td></tr><tr><td>.NET</td><td>public uint Receivable { get; }</td></tr><tr><td align="center" colspan="2">Property: UnsettledAcks</td></tr><tr><td>C++</td><td>uint32_t getUnsettledAcks();</td></tr><tr><td>.NET</td><td>public uint UnsetledAcks { get; }</td></tr><tr><td
align="center" colspan="2">Method: NextReceiver</td></tr><tr><td>C++</td><td>bool nextReceiver(Receiver&, Duration timeout=Duration::FOREVER);</td></tr><tr><td>.NET</td><td>public bool NextReceiver(Receiver rcvr);</td></tr><tr><td>.NET</td><td>public bool NextReceiver(Receiver rcvr, Duration timeout);</td></tr><tr><td align="center" colspan="2">Method: NextReceiver</td></tr><tr><td>C++</td><td>Receiver nextReceiver(Duration timeout=Duration::FOREVER);</td></tr><tr><td>.NET</td><td>public Receiver NextReceiver();</td></tr><tr><td>.NET</td><td>public Receiver NextReceiver(Duration timeout);</td></tr><tr><td align="center" colspan="2">Method: CreateSender</td></tr><tr><td>C++</td><td>Sender createSender(const Address& address);</td></tr><tr><td>.NET</td><td>public Sender CreateSender(Address address);</td></tr><tr><td align="center" colspan="2">Method: CreateSender</td></tr><tr><td>C++</td><td>Sender createSender(const std::string& address);</td></tr><tr><td>.NET</td><td>p
ublic Sender CreateSender(string address);</td></tr><tr><td align="center" colspan="2">Method: CreateReceiver</td></tr><tr><td>C++</td><td>Receiver createReceiver(const Address& address);</td></tr><tr><td>.NET</td><td>public Receiver CreateReceiver(Address address);</td></tr><tr><td align="center" colspan="2">Method: CreateReceiver</td></tr><tr><td>C++</td><td>Receiver createReceiver(const std::string& address);</td></tr><tr><td>.NET</td><td>public Receiver CreateReceiver(string address);</td></tr><tr><td align="center" colspan="2">Method: GetSender</td></tr><tr><td>C++</td><td>Sender getSender(const std::string& name) const;</td></tr><tr><td>.NET</td><td>public Sender GetSender(string name);</td></tr><tr><td align="center" colspan="2">Method: GetReceiver</td></tr><tr><td>C++</td><td>Receiver getReceiver(const std::string& name) const;</td></tr><tr><td>.NET</td><td>public Receiver GetReceiver(string name);</td></tr><tr><td align="center" colspan="2">Property: Connect
ion</td></tr><tr><td>C++</td><td>Connection getConnection() const;</td></tr><tr><td>.NET</td><td>public Connection Connection { get; }</td></tr><tr><td align="center" colspan="2">Property: HasError</td></tr><tr><td>C++</td><td>bool hasError();</td></tr><tr><td>.NET</td><td>public bool HasError { get; }</td></tr><tr><td align="center" colspan="2">Method: CheckError</td></tr><tr><td>C++</td><td>void checkError();</td></tr><tr><td>.NET</td><td>public void CheckError();</td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140160708144208"></a>2.3.9. .NET Binding Class: SessionReceiver</h3></div></div></div><p>
+ The SessionReceiver class provides a convenient callback
+ mechanism for Messages received by all Receivers on a given
+ Session.
+ </p><p>
+ </p><pre class="programlisting">
+using Org.Apache.Qpid.Messaging;
+using System;
+
+namespace Org.Apache.Qpid.Messaging.SessionReceiver
+{
+ public interface ISessionReceiver
+ {
+ void SessionReceiver(Receiver receiver, Message message);
+ }
+
+ public class CallbackServer
+ {
+ public CallbackServer(Session session, ISessionReceiver callback);
+
+ public void Close();
+ }
+}
+
+ </pre><p>
+ </p><p>
+ To use this class a client program includes references to both
+ Org.Apache.Qpid.Messaging and Org.Apache.Qpid.Messaging.SessionReceiver.
+ The calling program creates a function that implements the
+ ISessionReceiver interface. This function will be called whenever
+ message is received by the session. The callback process is started
+ by creating a CallbackServer and will continue to run until the
+ client program calls the CallbackServer.Close function.
+ </p><p>
+ A complete operating example of using the SessionReceiver callback
+ is contained in cpp/bindings/qpid/dotnet/examples/csharp.map.callback.receiver.
+ </p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch02s02.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="ch02.html">Up</a></td><td align="right" width="40%"> </td></tr><tr><td align="left" valign="top" width="40%">2.2. .NET Binding for the C++ Messaging Client Examples </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> </td></tr></table></div></div>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org