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.&#160;A Simple Messaging Program in .NET C#</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s02.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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&#160;1.3.&#160;"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 &gt; 0 ? args[0] : "localhost:5672";
+	  String address = args.Length &gt; 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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="section-addresses.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.2.&#160;A Simple Messaging Program in Python&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.4.&#160;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.&#160;Receiving Messages from Multiple Sources</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="acknowledgements.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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">&#8220;<span class="quote">next receiver</span>&#8221;</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.&#160;Receiver Capacity (Prefetch)">Section&#160;1.6, &#8220;Receiver Capacity (Prefetch)&#8221;</a> for more on this.</p><div class="example"><a id="idm140160709075008"></a><p class="title"><strong>Example&#160;1.12.&#160;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 &lt;&lt; message.getContent() &lt;&lt; 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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="ch01s09.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.7.&#160;Acknowledging Received Messages&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.9.&#160;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.&#160;Transactions</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s08.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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&#160;1.13.&#160;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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="connections.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.8.&#160;Receiving Messages from Multiple Sources&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.10.&#160;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.&#160;The Request / Response Pattern</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="section-Maps.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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&#160;1.9.&#160;Mapping to AMQP 0-10 Message Properties">Table&#160;1.9, &#8220;Mapping to AMQP 0-10 Message Properties&#8221;</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&#160;1.18.&#160;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;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 &lt;&lt; request.getContent() &lt;&lt; " -&gt; " &lt;&lt; response.getContent() &lt;&lt; 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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="ch01s13.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.11.&#160;Maps and Lists in Message Content&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.13.&#160;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.&#160;Performance Tips</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s12.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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.&#160;Receiver Capacity (Prefetch)">Section&#160;1.6, &#8220;Receiver Capacity (Prefetch)&#8221;</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.&#160;Acknowledging Received Messages">Section&#160;1.7, &#8220;Acknowledging Received Messages&#8221;</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.&#160;Sender Capacity and Replay">Section&#160;1.5, &#8220;Sender Capacity and Replay&#8221;</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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="ch01s14.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.12.&#160;The Request / Response Pattern&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.14.&#160;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.&#160;Cluster Failover</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s13.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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&#160;1.19.&#160;Tracking cluster membership</strong></p><div class="example-contents"><p>In C++:</p><pre class="programlisting">
+	#include &lt;qpid/messaging/FailoverUpdates.h&gt;
+	...
+	Connection connection("localhost:5672");
+	connection.setOption("reconnect", true);
+	try {
+	connection.open();
+	std::auto_ptr&lt;FailoverUpdates&gt; 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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="ch01s15.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.13.&#160;Performance Tips&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.15.&#160;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.&#160;Logging</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s14.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;1.&#160;Using the Qpid Messaging API</th><td align="right" width="20%">&#160;<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.&#160;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.&#160;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.&#160;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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="using-the-qpid-messaging-api.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="section-amqp0-10-mapping.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.14.&#160;Cluster Failover&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;1.16.&#160;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&#160;2.&#160;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>&#160;</td><th align="center" width="60%">&#160;</th><td align="right" width="20%">&#160;<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&#160;2.&#160;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.&#160;.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&#160;2.1.&#160;.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>&#160;</td><td align="center" width="20%">&#160;</td><td align="right" width="40%">&#160;<a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.17.&#160;Using Message Groups&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;2.2.&#160;.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.&#160;.NET Binding for the C++ Messaging Client Examples</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch02.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;2.&#160;The .NET Binding for the C++ Messaging Client</th><td align="right" width="20%">&#160;<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.&#160;.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&#160;2.2.&#160;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&#160;2.3.&#160;Example : Map Sender &#8211; Map Receiver</strong></p><div class="table-contents"><table border="1" class="table" summary="Example : Map Sender &#8211; 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&#160;2.4.&#160;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&#160;2.5.&#160;Example : Map Callback Sender &#8211; Map Callback Receiver</strong></p><div class="table-contents"><table border="1" class="table" summary="Example : Map Callback Sender &#8211; 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&#160;2.6.&#160;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&#160;2.7.&#160;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&#160;2.8.&#160;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>&#160;</td><td align="center" width=
 "20%"><a accesskey="u" href="ch02.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">Chapter&#160;2.&#160;The .NET Binding for the C++ Messaging Client&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;2.3.&#160;.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.&#160;.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>&#160;</td><th align="center" width="60%">Chapter&#160;2.&#160;The .NET Binding for the C++ Messaging Client</th><td align="right" width="20%">&#160;</td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140160708744416"></a>2.3.&#160;.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.&#160;.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&#160;2.9.&#160;.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&amp; 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&amp; name, const std::string&amp; subject, const qpid::types::Variant::Map&amp; options, const std::string&amp; type = "");</td></tr><tr><td>.NET</td><td>public Address(string name, string subject, Dictionary&lt;string, object&gt; options);</td></tr><tr><td>.NET</td><td>public Address(string name, string subject, Dictionary&lt;string, object&gt; options, string type);</td></tr><tr><td align="center" colspan="2">Copy constructor</td></tr><tr><td>C++</td><td>Address(const Address&amp; 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&amp; operator=(const Address&amp;);</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&amp; getName() const;</td></tr><tr><td>C++</td><td>void setName(const std::string&amp;);</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&amp; getSubject() const;</td></tr><tr><td>C++</td><td>void setSubject(const std::string&amp;);</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&amp; getOptions() const;</td></tr><tr><td>C++</td><td>qpid::types::Variant::
 Map&amp; getOptions();</td></tr><tr><td>C++</td><td>void setOptions(const qpid::types::Variant::Map&amp;);</td></tr><tr><td>.NET</td><td>public Dictionary&lt;string, object&gt; 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&amp;);</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.&#160;.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&#160;2.10.&#160;.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&lt;ConnectionImpl&gt;</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&amp; url, const qpid::types::Variant::Map&amp; 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&lt;string, object&gt; options);</td></tr><tr><td align="center" colspan="2">Constructor</td></tr><tr><td>C++</td><td>Connection(const std::string&amp; url, const std::string&amp; 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&amp;);</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&amp; operator=(const Connection&amp;);</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&amp; name, const qpid::types::Variant&amp; 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&amp; 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&amp; 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&amp; 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.&#160;.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&#160;2.11.&#160;.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&amp; 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&amp; 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.&#160;.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&#160;2.12.&#160;.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&amp; 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.&#160;.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&#160;2.13.&#160;.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&amp; 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&lt;System::Byte&gt; ^ 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&amp;);</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&amp; operator=(const Message&amp;);</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&amp;);</td></tr><tr><td>C++</td><td>const Address&amp; 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&amp;);</td></tr><tr><td>C++</td><td>const std::string&amp
 ; 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&amp;);</td></tr><tr><td>C++</td><td>const std::string&amp; 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&amp;);</td></tr><tr><td>C++</td><td>const std::string&amp; 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&amp;);</td></tr><tr><td>C++</td><td>const std::string&amp; 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&amp;);</td></tr><tr><td>C++</td><td>const std::string&amp; 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&amp;, const qpid::types::Variant&amp;);</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&amp; getProperties() const;</td></tr><tr><td>C++</td><td>qpid::types::Variant::Map&amp; getProperties();</td></tr><tr><td>.NET</td><td>public Dictionary&lt;string, object&gt; 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&amp;);</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&lt;object&gt; __p1);</td></tr><tr><td>.NET</td><td>public void GetContent(Dictionary&lt;string, object&gt; 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&amp; message, qpid::types::Variant::Map&amp; map,	const std::string&amp; encoding = std::string());</td></tr><tr><td>C++</td><td>void decode(const Message&amp; message, qpid::types::Variant::List&amp; list, const std::string&amp; 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&amp; map, Message&amp; message, const std::string&amp; encoding = std::string());</td></tr><tr><td>C++</td><td>void encode(const qpid::types::Variant::List&amp; list, Message&amp; message, const std::string&amp; 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&lt;object&gt; list);</td></tr><tr><td>.NET</td><td>public string MapAsString(Dictionary&lt;string, object&gt; 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.&#160;.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&#160;2.14.&#160;.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&amp;);</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&amp; operator=(const Receiver&amp;);</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&amp; 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&amp; 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&amp; 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.&#160;.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&#160;2.15.&#160;.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&amp;);</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&amp; operator=(const Sender&amp;);</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&amp; 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&amp; 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.&#160;.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&#160;2.16.&#160;.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&amp;);</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&amp; 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&amp;, 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&amp;);</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&amp;);</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&amp;, 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&amp; 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&amp; 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&amp; 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&amp; 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&amp; 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&amp; 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.&#160;.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>&#160;</td><td align="center" width="20%"><a accesskey="u" href="ch02.html">Up</a></td><td align="right" width="40%">&#160;</td></tr><tr><td align="left" valign="top" width="40%">2.2.&#160;.NET Binding for the C++ Messaging Client Examples&#160;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%">&#160;</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