http://git-wip-us.apache.org/repos/asf/qpid-site/blob/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s03.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s03.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s03.html.in new file mode 100644 index 0000000..a4f9cf2 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612073669760"></a>1.3. A Simple Messaging Program in .NET C#</h2></div></div></div><p>The following .NET C# + <a class="footnote" href="#ftn.idm140612073668768" id="idm140612073668768"><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="idm140612073667520"></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.idm140612073668768"><p><a class="para" href="#idm140612073668768"><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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s08.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s08.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s08.html.in new file mode 100644 index 0000000..f538d03 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067926880"></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="idm140612067924000"></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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s09.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s09.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s09.html.in new file mode 100644 index 0000000..8615991 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067918192"></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.idm140612067916864" id="idm140612067916864"><sup class="footnote">[8]</sup></a> + + .</p><div class="example"><a id="idm140612067915952"></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.idm140612067916864"><p><a class="para" href="#idm140612067916864"><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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s12.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s12.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s12.html.in new file mode 100644 index 0000000..6ba9081 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067760944"></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="idm140612067758816"></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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s13.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s13.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s13.html.in new file mode 100644 index 0000000..a0c1710 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067750560"></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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s14.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s14.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s14.html.in new file mode 100644 index 0000000..2d84b24 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067741872"></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.idm140612067740624" id="idm140612067740624"><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="idm140612067739088"></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.idm140612067740624"><p><a class="para" href="#idm140612067740624"><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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s15.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s15.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch01s15.html.in new file mode 100644 index 0000000..12911f0 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067733584"></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="idm140612067732448"></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="idm140612067727440"></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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02.html.in new file mode 100644 index 0000000..1760683 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067657696"></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#idm140612067656496">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#idm140612067592256">2.3.1. .NET Binding >for the C++ Messaging API Class: Address</a></span></dt><dt><span >class="section"><a href="ch02s03.html#idm140612067521424">2.3.2. .NET Binding >for the C++ Messaging API Class: Connection</a></span></dt><dt><span >class="section"><a href="ch02s03.html#idm140612067446304">2.3.3. .NET Binding >for the C++ Messaging API Class: Duration</a></span></dt><dt><span >class="section"><a href="ch02s03.html#idm140612067396976">2.3.4. .NET Binding >for the C++ Messaging API Class: FailoverUpdates</a></span></dt><dt><span >class="section"><a href="ch02s03.html#idm140612067375856">2.3.5. .NET Binding >for the C++ Messaging API Class: Message</a></span></dt><dt><span >class="section"><a href="ch02s03.html#idm140612067237616">2.3.6. .NET Binding >for the C++ Messaging API Class: Receiver</a ></span></dt><dt><span class="section"><a >href="ch02s03.html#idm140612067162192">2.3.7. .NET Binding for the C++ >Messaging API Class: Sender</a></span></dt><dt><span class="section"><a >href="ch02s03.html#idm140612067105680">2.3.8. .NET Binding for the C++ >Messaging API Class: Session</a></span></dt><dt><span class="section"><a >href="ch02s03.html#idm140612066993296">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="idm140612067656496"></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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02s02.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02s02.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02s02.html.in new file mode 100644 index 0000000..9060260 --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067642848"></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/c3ab60f6/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02s03.html.in ---------------------------------------------------------------------- diff --git a/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02s03.html.in b/input/releases/qpid-cpp-1.39.0/messaging-api/book/ch02s03.html.in new file mode 100644 index 0000000..046dcbd --- /dev/null +++ b/input/releases/qpid-cpp-1.39.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="idm140612067593504"></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="idm140612067592256"></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="idm140612067521424"></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="idm140612067446304"></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="idm140612067396976"></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="idm140612067375856"></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="idm140612067237616"></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="idm140612067162192"></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="idm140612067105680"></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="idm140612066993296"></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: [email protected] For additional commands, e-mail: [email protected]
