blob: 1cf1f965b5be1277725974bb936dada6b3d9e367 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>activemq-cpp-3.4.0: cms::Session Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">activemq-cpp-3.4.0</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
</ul>
</div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('classcms_1_1_session.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle">
<h1>cms::Session Class Reference</h1> </div>
</div>
<div class="contents">
<!-- doxytag: class="cms::Session" --><!-- doxytag: inherits="cms::Closeable,cms::Startable,cms::Stoppable" -->
<p>A <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> object is a single-threaded context for producing and consuming messages.
<a href="#_details">More...</a></p>
<p><code>#include &lt;<a class="el" href="_session_8h_source.html">src/main/cms/Session.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for cms::Session:</div>
<div class="dyncontent">
<div class="center"><img src="classcms_1_1_session__inherit__graph.png" border="0" usemap="#cms_1_1_session_inherit__map" alt="Inheritance graph"/></div>
<map name="cms_1_1_session_inherit__map" id="cms_1_1_session_inherit__map">
<area shape="rect" id="node9" href="classactivemq_1_1cmsutil_1_1_pooled_session.html" title="A pooled session object that wraps around a delegate session." alt="" coords="5,160,256,189"/><area shape="rect" id="node11" href="classactivemq_1_1core_1_1_active_m_q_session.html" title="activemq::core::ActiveMQSession" alt="" coords="280,160,533,189"/><area shape="rect" id="node15" href="classcms_1_1_x_a_session.html" title="The XASession interface extends the capability of Session by adding access to a CMS provider&#39;s su..." alt="" coords="557,160,685,189"/><area shape="rect" id="node2" href="classcms_1_1_closeable.html" title="Interface for a class that implements the close method." alt="" coords="196,5,321,35"/><area shape="rect" id="node4" href="classcms_1_1_startable.html" title="Interface for a class that implements the start method." alt="" coords="345,5,468,35"/><area shape="rect" id="node6" href="classcms_1_1_stoppable.html" title="Interface for a class that implements the stop method." alt="" coords="492,5,617,35"/><area shape="rect" id="node13" href="classactivemq_1_1core_1_1_active_m_q_x_a_session.html" title="activemq::core::ActiveMQXASession" alt="" coords="379,237,648,267"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185">AcknowledgeMode</a> { <br/>
&#160;&#160;<a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185a7b7e3a3f19b48d7a48f5b1ce0396bf74">AUTO_ACKNOWLEDGE</a>,
<a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185a7ebcc0a26bfeaeb0b2f89fb6ef868d25">DUPS_OK_ACKNOWLEDGE</a>,
<a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185aad6c98099a50a183bc9817c9480a4429">CLIENT_ACKNOWLEDGE</a>,
<a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185a17a19a271db0053d22939cc8d187b349">SESSION_TRANSACTED</a>,
<br/>
&#160;&#160;<a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185a27fe5fbbf75ca610fdcaaa6b0a0ba6a6">INDIVIDUAL_ACKNOWLEDGE</a>
<br/>
}</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ae0fbde72a65fba5ef1781b2e8ad051c7">~Session</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ac7e43cd77c8250e75da9b92a0e5e9ef0">close</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Closes this session as well as any active child consumers or producers. <a href="#ac7e43cd77c8250e75da9b92a0e5e9ef0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a625a500d10a2a4421c4c1541674aef64">commit</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Commits all messages done in this transaction and releases any locks currently held. <a href="#a625a500d10a2a4421c4c1541674aef64"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a25767cf0d85fa20c6639fd70b0301afa">rollback</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rolls back all messages done in this transaction and releases any locks currently held. <a href="#a25767cf0d85fa20c6639fd70b0301afa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a64c3419771c38b86aaea85fc7be5ae95">recover</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops message delivery in this session, and restarts message delivery with the oldest unacknowledged message. <a href="#a64c3419771c38b86aaea85fc7be5ae95"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a42e6391ec5738e2d5ed523d493ccdcb7">createConsumer</a> (const <a class="el" href="classcms_1_1_destination.html">Destination</a> *destination)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> for the specified destination. <a href="#a42e6391ec5738e2d5ed523d493ccdcb7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a1a342184f514d4bdafd153380e206cce">createConsumer</a> (const <a class="el" href="classcms_1_1_destination.html">Destination</a> *destination, const std::string &amp;selector)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> for the specified destination, using a message selector. <a href="#a1a342184f514d4bdafd153380e206cce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#af9f33e820aa8e06dc9d7e6c77f80e1a9">createConsumer</a> (const <a class="el" href="classcms_1_1_destination.html">Destination</a> *destination, const std::string &amp;selector, bool noLocal)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> for the specified destination, using a message selector. <a href="#af9f33e820aa8e06dc9d7e6c77f80e1a9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ad6569edb337efe44ff487105442055be">createDurableConsumer</a> (const <a class="el" href="classcms_1_1_topic.html">Topic</a> *destination, const std::string &amp;name, const std::string &amp;selector, bool noLocal=false)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a durable subscriber to the specified topic, using a <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> selector. <a href="#ad6569edb337efe44ff487105442055be"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_message_producer.html">MessageProducer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a724667acd027967edf16952623baa7e0">createProducer</a> (const <a class="el" href="classcms_1_1_destination.html">Destination</a> *destination=NULL)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_message_producer.html" title="A client uses a MessageProducer object to send messages to a Destination.">MessageProducer</a> to send messages to the specified destination. <a href="#a724667acd027967edf16952623baa7e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_queue_browser.html">QueueBrowser</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a9934882565018d0d3506719b9b95a120">createBrowser</a> (const <a class="el" href="classcms_1_1_queue.html">cms::Queue</a> *queue)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_queue_browser.html" title="This class implements in interface for browsing the messages in a Queue without removing them...">QueueBrowser</a> to peek at Messages on the given <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a>. <a href="#a9934882565018d0d3506719b9b95a120"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_queue_browser.html">QueueBrowser</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ab88aa7fc210258c11c6c4e5f94a2ce0f">createBrowser</a> (const <a class="el" href="classcms_1_1_queue.html">cms::Queue</a> *queue, const std::string &amp;selector)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_queue_browser.html" title="This class implements in interface for browsing the messages in a Queue without removing them...">QueueBrowser</a> to peek at Messages on the given <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a>. <a href="#ab88aa7fc210258c11c6c4e5f94a2ce0f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_queue.html">Queue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ac4b49b86efe152da816f913a9adc8ef4">createQueue</a> (const std::string &amp;queueName)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a queue identity given a <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> name. <a href="#ac4b49b86efe152da816f913a9adc8ef4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_topic.html">Topic</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a2046d8340225e38af2b0931dae0b9b58">createTopic</a> (const std::string &amp;topicName)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a topic identity given a <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> name. <a href="#a2046d8340225e38af2b0931dae0b9b58"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_temporary_queue.html">TemporaryQueue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a083663cee372ae4bd7554e7c8dbf518a">createTemporaryQueue</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_temporary_queue.html" title="Defines a Temporary Queue based Destination.">TemporaryQueue</a> object. <a href="#a083663cee372ae4bd7554e7c8dbf518a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_temporary_topic.html">TemporaryTopic</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#aba682bb11582785968b7c772e99eed22">createTemporaryTopic</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_temporary_topic.html" title="Defines a Temporary Topic based Destination.">TemporaryTopic</a> object. <a href="#aba682bb11582785968b7c772e99eed22"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_message.html">Message</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a9e5ec4c52d8e38ccf9de2c56a2f599af">createMessage</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a>. <a href="#a9e5ec4c52d8e38ccf9de2c56a2f599af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_bytes_message.html">BytesMessage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ad6dcc324a92d5772423d28d77dcefa48">createBytesMessage</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_bytes_message.html" title="A BytesMessage object is used to send a message containing a stream of unsigned bytes.">BytesMessage</a>. <a href="#ad6dcc324a92d5772423d28d77dcefa48"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_bytes_message.html">BytesMessage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a2ef22c91df610826398a749da532e730">createBytesMessage</a> (const unsigned char *bytes, int bytesSize)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="classcms_1_1_bytes_message.html" title="A BytesMessage object is used to send a message containing a stream of unsigned bytes.">BytesMessage</a> and sets the payload to the passed value. <a href="#a2ef22c91df610826398a749da532e730"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_stream_message.html">StreamMessage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#ad1114ecfe5c88b7df802beb4f7b6875b">createStreamMessage</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_stream_message.html" title="Interface for a StreamMessage.">StreamMessage</a>. <a href="#ad1114ecfe5c88b7df802beb4f7b6875b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_text_message.html">TextMessage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#aeaa0ab1e454d8bf93f866e4511b2c931">createTextMessage</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_text_message.html" title="Interface for a text message.">TextMessage</a>. <a href="#aeaa0ab1e454d8bf93f866e4511b2c931"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_text_message.html">TextMessage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a9d9b16fef1140f5c781f5ca5096525dd">createTextMessage</a> (const std::string &amp;text)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_text_message.html" title="Interface for a text message.">TextMessage</a> and set the text to the value given. <a href="#a9d9b16fef1140f5c781f5ca5096525dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_map_message.html">MapMessage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a0cd95c8a62d8ca09793d67370b130085">createMapMessage</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new <a class="el" href="classcms_1_1_map_message.html" title="A MapMessage object is used to send a set of name-value pairs.">MapMessage</a>. <a href="#a0cd95c8a62d8ca09793d67370b130085"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185">AcknowledgeMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a373e7f70db09a28346ca01d8bd440f79">getAcknowledgeMode</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the acknowledgment mode of the session. <a href="#a373e7f70db09a28346ca01d8bd440f79"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a4a08ab1ee5077808a9213b221b805b3e">isTransacted</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets if the Sessions is a Transacted <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a>. <a href="#a4a08ab1ee5077808a9213b221b805b3e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcms_1_1_session.html#a9802c106d3598044f3d775e673294926">unsubscribe</a> (const std::string &amp;name)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Unsubscribes a durable subscription that has been created by a client. <a href="#a9802c106d3598044f3d775e673294926"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> object is a single-threaded context for producing and consuming messages. </p>
<p>A session serves several purposes:</p>
<ul>
<li>It is a factory for its message producers and consumers.</li>
<li>It supplies provider-optimized message factories.</li>
<li>It is a factory for TemporaryTopics and TemporaryQueues.</li>
<li>It provides a way to create <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> or <a class="el" href="classcms_1_1_topic.html" title="An interface encapsulating a provider-specific topic name.">Topic</a> objects for those clients that need to dynamically manipulate provider-specific destination names.</li>
<li>It supports a single series of transactions that combine work spanning its producers and consumers into atomic units.</li>
<li>It defines a serial order for the messages it consumes and the messages it produces.</li>
<li>It retains messages it consumes until they have been acknowledged.</li>
<li>It serializes execution of message listeners registered with its message consumers.</li>
</ul>
<p>A session can create and service multiple message producers and consumers.</p>
<p>One typical use is to have a thread block on a synchronous <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> until a message arrives. The thread may then use one or more of the Session's MessageProducers.</p>
<p>If a client desires to have one thread produce messages while others consume them, the client should use a separate session for its producing thread.</p>
<p>Certain rules apply to a session's <code>close</code> method and are detailed below.</p>
<ul>
<li>There is no need to close the producers and consumers of a closed session.</li>
<li>The close call will block until a receive call or message listener in progress has completed. A blocked message consumer receive call returns null when this session is closed.</li>
<li>Closing a transacted session must roll back the transaction in progress.</li>
<li>The close method is the only <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> method that can be called concurrently.</li>
<li>Invoking any other <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> method on a closed session must throw an <a class="el" href="classcms_1_1_illegal_state_exception.html" title="This exception is thrown when a method is invoked at an illegal or inappropriate time or if the provi...">IllegalStateException</a>. Closing a closed session must not throw any exceptions.</li>
</ul>
<p><b>Transacted Sessions</b></p>
<p>When a <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> is created it can be set to operate in a Transaction based mode. Each <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> then operates in a single transaction for all Producers and Consumers of that <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a>. Messages sent and received within a Transaction are grouped into an atomic unit that is committed or rolled back together.</p>
<p>For a <a class="el" href="classcms_1_1_message_producer.html" title="A client uses a MessageProducer object to send messages to a Destination.">MessageProducer</a> this implies that all messages sent by the producer are not sent to the Provider unit the commit call is made. Rolling back the Transaction results in all produced Messages being dropped.</p>
<p>For a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> this implies that all received messages are not Acknowledged until the Commit call is made. Rolling back the Transaction results in all Consumed <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> being redelivered to the client, the Provider may allow configuration that limits the Maximum number of redeliveries for a <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a>.</p>
<p>While the <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a> interface implements the <a class="el" href="classcms_1_1_startable.html" title="Interface for a class that implements the start method.">Startable</a> and <a class="el" href="classcms_1_1_stoppable.html" title="Interface for a class that implements the stop method.">Stoppable</a> interfaces it is not required to implement these methods and can throw an UnsupportedOperation exception if they are not available for the given CMS provider.</p>
<dl class="since"><dt><b>Since:</b></dt><dd>1.0 </dd></dl>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="ae2fd7b8b76928b465727760c78522185"></a><!-- doxytag: member="cms::Session::AcknowledgeMode" ref="ae2fd7b8b76928b465727760c78522185" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185">cms::Session::AcknowledgeMode</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ae2fd7b8b76928b465727760c78522185a7b7e3a3f19b48d7a48f5b1ce0396bf74"></a><!-- doxytag: member="AUTO_ACKNOWLEDGE" ref="ae2fd7b8b76928b465727760c78522185a7b7e3a3f19b48d7a48f5b1ce0396bf74" args="" -->AUTO_ACKNOWLEDGE</em>&nbsp;</td><td>
<p>With this acknowledgment mode, the session automatically acknowledges a client's receipt of a message either when the session has successfully returned from a call to receive or when the message listener the session has called to process the message successfully returns. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ae2fd7b8b76928b465727760c78522185a7ebcc0a26bfeaeb0b2f89fb6ef868d25"></a><!-- doxytag: member="DUPS_OK_ACKNOWLEDGE" ref="ae2fd7b8b76928b465727760c78522185a7ebcc0a26bfeaeb0b2f89fb6ef868d25" args="" -->DUPS_OK_ACKNOWLEDGE</em>&nbsp;</td><td>
<p>With this acknowledgment mode, the session automatically acknowledges a client's receipt of a message either when the session has successfully returned from a call to receive or when the message listener the session has called to process the message successfully returns. </p>
<p>Acknowledgments may be delayed in this mode to increase performance at the cost of the message being redelivered this client fails. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ae2fd7b8b76928b465727760c78522185aad6c98099a50a183bc9817c9480a4429"></a><!-- doxytag: member="CLIENT_ACKNOWLEDGE" ref="ae2fd7b8b76928b465727760c78522185aad6c98099a50a183bc9817c9480a4429" args="" -->CLIENT_ACKNOWLEDGE</em>&nbsp;</td><td>
<p>With this acknowledgment mode, the client acknowledges a consumed message by calling the message's acknowledge method. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ae2fd7b8b76928b465727760c78522185a17a19a271db0053d22939cc8d187b349"></a><!-- doxytag: member="SESSION_TRANSACTED" ref="ae2fd7b8b76928b465727760c78522185a17a19a271db0053d22939cc8d187b349" args="" -->SESSION_TRANSACTED</em>&nbsp;</td><td>
<p>Messages will be consumed when the transaction commits. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ae2fd7b8b76928b465727760c78522185a27fe5fbbf75ca610fdcaaa6b0a0ba6a6"></a><!-- doxytag: member="INDIVIDUAL_ACKNOWLEDGE" ref="ae2fd7b8b76928b465727760c78522185a27fe5fbbf75ca610fdcaaa6b0a0ba6a6" args="" -->INDIVIDUAL_ACKNOWLEDGE</em>&nbsp;</td><td>
<p><a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> will be acknowledged individually. </p>
<p>Normally the acks sent acknowledge the given message and all messages received before it, this mode only acknowledges one message. </p>
</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae0fbde72a65fba5ef1781b2e8ad051c7"></a><!-- doxytag: member="cms::Session::~Session" ref="ae0fbde72a65fba5ef1781b2e8ad051c7" args="()" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual cms::Session::~Session </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> throw ()<code> [virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ac7e43cd77c8250e75da9b92a0e5e9ef0"></a><!-- doxytag: member="cms::Session::close" ref="ac7e43cd77c8250e75da9b92a0e5e9ef0" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void cms::Session::close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Closes this session as well as any active child consumers or producers. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="classcms_1_1_closeable.html#a7780c263c5dbacaab5226e9c7343b778">cms::Closeable</a>.</p>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ab880e4c543bcd876ca781312d46d3061">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#ab9fe61844dfee30d1abb0c4bdf2e2167">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="a625a500d10a2a4421c4c1541674aef64"></a><!-- doxytag: member="cms::Session::commit" ref="a625a500d10a2a4421c4c1541674aef64" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void cms::Session::commit </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Commits all messages done in this transaction and releases any locks currently held. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_illegal_state_exception.html" title="This exception is thrown when a method is invoked at an illegal or inappropriate time or if the provi...">IllegalStateException</a></td><td>- if the method is not called by a transacted session. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aa515e62c9d5d142d112ff1a34f2fac3f">activemq::cmsutil::PooledSession</a>, <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#ad407cb37b79c994fbc3a1b1a14ec844c">activemq::core::ActiveMQSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_x_a_session.html#aff2c7ac6583e7e515ed2e2f255f8e858">activemq::core::ActiveMQXASession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aa515e62c9d5d142d112ff1a34f2fac3f">activemq::cmsutil::PooledSession::commit()</a>.</p>
</div>
</div>
<a class="anchor" id="a9934882565018d0d3506719b9b95a120"></a><!-- doxytag: member="cms::Session::createBrowser" ref="a9934882565018d0d3506719b9b95a120" args="(const cms::Queue *queue)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_queue_browser.html">QueueBrowser</a>* cms::Session::createBrowser </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_queue.html">cms::Queue</a> *&#160;</td>
<td class="paramname"><em>queue</em></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_queue_browser.html" title="This class implements in interface for browsing the messages in a Queue without removing them...">QueueBrowser</a> to peek at Messages on the given <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">queue</td><td>the <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> to browse </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>New <a class="el" href="classcms_1_1_queue_browser.html" title="This class implements in interface for browsing the messages in a Queue without removing them...">QueueBrowser</a> that is owned by the caller.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if the destination given is invalid. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aa65d341afe4c88b226b50b109dc2759e">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a275a9bf6ed8e4982dee07edcb98652eb">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="ab88aa7fc210258c11c6c4e5f94a2ce0f"></a><!-- doxytag: member="cms::Session::createBrowser" ref="ab88aa7fc210258c11c6c4e5f94a2ce0f" args="(const cms::Queue *queue, const std::string &amp;selector)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_queue_browser.html">QueueBrowser</a>* cms::Session::createBrowser </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_queue.html">cms::Queue</a> *&#160;</td>
<td class="paramname"><em>queue</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>selector</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_queue_browser.html" title="This class implements in interface for browsing the messages in a Queue without removing them...">QueueBrowser</a> to peek at Messages on the given <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">queue</td><td>the <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> to browse </td></tr>
<tr><td class="paramname">selector</td><td>the <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> selector to filter which messages are browsed. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>New <a class="el" href="classcms_1_1_queue_browser.html" title="This class implements in interface for browsing the messages in a Queue without removing them...">QueueBrowser</a> that is owned by the caller.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if the destination given is invalid. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ad0e8db28a59ef67f95e02c5aaa36231f">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a943401d839119e308301e106b83b4b46">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="ad6dcc324a92d5772423d28d77dcefa48"></a><!-- doxytag: member="cms::Session::createBytesMessage" ref="ad6dcc324a92d5772423d28d77dcefa48" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_bytes_message.html">BytesMessage</a>* cms::Session::createBytesMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_bytes_message.html" title="A BytesMessage object is used to send a message containing a stream of unsigned bytes.">BytesMessage</a>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#acabfde5f359c6f2de44f360e9c41fc2b">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#acedea2ee9a1368f1433372a0e6ae230d">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#acabfde5f359c6f2de44f360e9c41fc2b">activemq::cmsutil::PooledSession::createBytesMessage()</a>.</p>
</div>
</div>
<a class="anchor" id="a2ef22c91df610826398a749da532e730"></a><!-- doxytag: member="cms::Session::createBytesMessage" ref="a2ef22c91df610826398a749da532e730" args="(const unsigned char *bytes, int bytesSize)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_bytes_message.html">BytesMessage</a>* cms::Session::createBytesMessage </td>
<td>(</td>
<td class="paramtype">const unsigned char *&#160;</td>
<td class="paramname"><em>bytes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>bytesSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_bytes_message.html" title="A BytesMessage object is used to send a message containing a stream of unsigned bytes.">BytesMessage</a> and sets the payload to the passed value. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">bytes</td><td>an array of bytes to set in the message </td></tr>
<tr><td class="paramname">bytesSize</td><td>the size of the bytes array, or number of bytes to use</td></tr>
</table>
</dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ae862a52925c22ee51a2a7aae86c20627">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#aaec2501834bc0e0cf14b2068dbd929f7">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="a42e6391ec5738e2d5ed523d493ccdcb7"></a><!-- doxytag: member="cms::Session::createConsumer" ref="a42e6391ec5738e2d5ed523d493ccdcb7" args="(const Destination *destination)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a>* cms::Session::createConsumer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_destination.html">Destination</a> *&#160;</td>
<td class="paramname"><em>destination</em></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> for the specified destination. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">destination</td><td>the <a class="el" href="classcms_1_1_destination.html" title="A Destination object encapsulates a provider-specific address.">Destination</a> that this consumer receiving messages for. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to a new <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> that is owned by the caller ( caller deletes )</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if an invalid destination is specified. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a223262bf4be737b5fb0d3771cce09649">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#abd0c5285993abd9fde313842bc67260a">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a223262bf4be737b5fb0d3771cce09649">activemq::cmsutil::PooledSession::createConsumer()</a>.</p>
</div>
</div>
<a class="anchor" id="a1a342184f514d4bdafd153380e206cce"></a><!-- doxytag: member="cms::Session::createConsumer" ref="a1a342184f514d4bdafd153380e206cce" args="(const Destination *destination, const std::string &amp;selector)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a>* cms::Session::createConsumer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_destination.html">Destination</a> *&#160;</td>
<td class="paramname"><em>destination</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>selector</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> for the specified destination, using a message selector. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">destination</td><td>the <a class="el" href="classcms_1_1_destination.html" title="A Destination object encapsulates a provider-specific address.">Destination</a> that this consumer receiving messages for. </td></tr>
<tr><td class="paramname">selector</td><td>the <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> Selector to use </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to a new <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> that is owned by the caller ( caller deletes )</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if an invalid destination is specified. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_selector_exception.html" title="This exception must be thrown when a CMS client attempts to give a provider a message selector with i...">InvalidSelectorException</a></td><td>- if the message selector is invalid. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aaab049292687650a9467195913d957c3">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a763dba012516eaaa0461362a8946394a">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="af9f33e820aa8e06dc9d7e6c77f80e1a9"></a><!-- doxytag: member="cms::Session::createConsumer" ref="af9f33e820aa8e06dc9d7e6c77f80e1a9" args="(const Destination *destination, const std::string &amp;selector, bool noLocal)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a>* cms::Session::createConsumer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_destination.html">Destination</a> *&#160;</td>
<td class="paramname"><em>destination</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>selector</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>noLocal</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> for the specified destination, using a message selector. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">destination</td><td>the <a class="el" href="classcms_1_1_destination.html" title="A Destination object encapsulates a provider-specific address.">Destination</a> that this consumer receiving messages for. </td></tr>
<tr><td class="paramname">selector</td><td>the <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> Selector to use </td></tr>
<tr><td class="paramname">noLocal</td><td>if true, and the destination is a topic, inhibits the delivery of messages published by its own connection. The behavior for NoLocal is not specified if the destination is a queue. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to a new <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> that is owned by the caller ( caller deletes )</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if an invalid destination is specified. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_selector_exception.html" title="This exception must be thrown when a CMS client attempts to give a provider a message selector with i...">InvalidSelectorException</a></td><td>- if the message selector is invalid. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a066dd84095b9b6f0217a91bc3d32a784">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a7d06a50d17ec30a31c465a4f11dcd23a">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="ad6569edb337efe44ff487105442055be"></a><!-- doxytag: member="cms::Session::createDurableConsumer" ref="ad6569edb337efe44ff487105442055be" args="(const Topic *destination, const std::string &amp;name, const std::string &amp;selector, bool noLocal=false)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_message_consumer.html">MessageConsumer</a>* cms::Session::createDurableConsumer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_topic.html">Topic</a> *&#160;</td>
<td class="paramname"><em>destination</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>selector</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>noLocal</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a durable subscriber to the specified topic, using a <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> selector. </p>
<p>Sessions that create durable consumers must use the same client Id as was used the last time the subscription was created in order to receive all messages that were delivered while the client was offline.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">destination</td><td>the topic to subscribe to </td></tr>
<tr><td class="paramname">name</td><td>The name used to identify the subscription </td></tr>
<tr><td class="paramname">selector</td><td>the <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a> Selector to use </td></tr>
<tr><td class="paramname">noLocal</td><td>if true, and the destination is a topic, inhibits the delivery of messages published by its own connection. The behavior for NoLocal is not specified if the destination is a queue. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to a new durable <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> that is owned by the caller ( caller deletes )</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if an invalid destination is specified. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_selector_exception.html" title="This exception must be thrown when a CMS client attempts to give a provider a message selector with i...">InvalidSelectorException</a></td><td>- if the message selector is invalid. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a69524129f5faa86f1051281c41bfb9db">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a29d43f59bd99489c9a08ab1a0414515f">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a69524129f5faa86f1051281c41bfb9db">activemq::cmsutil::PooledSession::createDurableConsumer()</a>.</p>
</div>
</div>
<a class="anchor" id="a0cd95c8a62d8ca09793d67370b130085"></a><!-- doxytag: member="cms::Session::createMapMessage" ref="a0cd95c8a62d8ca09793d67370b130085" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_map_message.html">MapMessage</a>* cms::Session::createMapMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_map_message.html" title="A MapMessage object is used to send a set of name-value pairs.">MapMessage</a>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ad47c23e536562deea0a7d62f92f71a3a">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a99a7f904e18021491beb69babe744a10">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ad47c23e536562deea0a7d62f92f71a3a">activemq::cmsutil::PooledSession::createMapMessage()</a>.</p>
</div>
</div>
<a class="anchor" id="a9e5ec4c52d8e38ccf9de2c56a2f599af"></a><!-- doxytag: member="cms::Session::createMessage" ref="a9e5ec4c52d8e38ccf9de2c56a2f599af" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_message.html">Message</a>* cms::Session::createMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_message.html" title="Root of all messages.">Message</a>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a0ca5bb3e96f11bddb8519f5f056b9101">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a212ea862fb6c35ebf891a01e631bf300">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a0ca5bb3e96f11bddb8519f5f056b9101">activemq::cmsutil::PooledSession::createMessage()</a>.</p>
</div>
</div>
<a class="anchor" id="a724667acd027967edf16952623baa7e0"></a><!-- doxytag: member="cms::Session::createProducer" ref="a724667acd027967edf16952623baa7e0" args="(const Destination *destination=NULL)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_message_producer.html">MessageProducer</a>* cms::Session::createProducer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classcms_1_1_destination.html">Destination</a> *&#160;</td>
<td class="paramname"><em>destination</em> = <code>NULL</code></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_message_producer.html" title="A client uses a MessageProducer object to send messages to a Destination.">MessageProducer</a> to send messages to the specified destination. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">destination</td><td>the <a class="el" href="classcms_1_1_destination.html" title="A Destination object encapsulates a provider-specific address.">Destination</a> to send on </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>New <a class="el" href="classcms_1_1_message_producer.html" title="A client uses a MessageProducer object to send messages to a Destination.">MessageProducer</a> that is owned by the caller.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_invalid_destination_exception.html" title="This exception must be thrown when a destination either is not understood by a provider or is no long...">InvalidDestinationException</a></td><td>- if an invalid destination is specified. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ac04cceaf6c74741e157cdba184d88303">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a4e1ee905a7e2e4eab6d2fb79fe334026">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ac04cceaf6c74741e157cdba184d88303">activemq::cmsutil::PooledSession::createProducer()</a>.</p>
</div>
</div>
<a class="anchor" id="ac4b49b86efe152da816f913a9adc8ef4"></a><!-- doxytag: member="cms::Session::createQueue" ref="ac4b49b86efe152da816f913a9adc8ef4" args="(const std::string &amp;queueName)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_queue.html">Queue</a>* cms::Session::createQueue </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>queueName</em></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a queue identity given a <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> name. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">queueName</td><td>the name of the new <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>new <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> pointer that is owned by the caller.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#af7285382b2910d5137d4535899f54fd5">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#abcb5da1d27001c4352885b9dce40d314">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#af7285382b2910d5137d4535899f54fd5">activemq::cmsutil::PooledSession::createQueue()</a>.</p>
</div>
</div>
<a class="anchor" id="ad1114ecfe5c88b7df802beb4f7b6875b"></a><!-- doxytag: member="cms::Session::createStreamMessage" ref="ad1114ecfe5c88b7df802beb4f7b6875b" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_stream_message.html">StreamMessage</a>* cms::Session::createStreamMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_stream_message.html" title="Interface for a StreamMessage.">StreamMessage</a>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a8d7e005cbf5b89c9cc5e4e70f3849d10">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a4c59cb5be9c759c96c498fbeab810479">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a8d7e005cbf5b89c9cc5e4e70f3849d10">activemq::cmsutil::PooledSession::createStreamMessage()</a>.</p>
</div>
</div>
<a class="anchor" id="a083663cee372ae4bd7554e7c8dbf518a"></a><!-- doxytag: member="cms::Session::createTemporaryQueue" ref="a083663cee372ae4bd7554e7c8dbf518a" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_temporary_queue.html">TemporaryQueue</a>* cms::Session::createTemporaryQueue </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_temporary_queue.html" title="Defines a Temporary Queue based Destination.">TemporaryQueue</a> object. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>new <a class="el" href="classcms_1_1_temporary_queue.html" title="Defines a Temporary Queue based Destination.">TemporaryQueue</a> pointer that is owned by the caller.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aef31f21e3c739eb909a3049f9da02c60">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#afae31f68a8f9ad6653a5f20ed56bf212">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aef31f21e3c739eb909a3049f9da02c60">activemq::cmsutil::PooledSession::createTemporaryQueue()</a>.</p>
</div>
</div>
<a class="anchor" id="aba682bb11582785968b7c772e99eed22"></a><!-- doxytag: member="cms::Session::createTemporaryTopic" ref="aba682bb11582785968b7c772e99eed22" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_temporary_topic.html">TemporaryTopic</a>* cms::Session::createTemporaryTopic </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a <a class="el" href="classcms_1_1_temporary_topic.html" title="Defines a Temporary Topic based Destination.">TemporaryTopic</a> object. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ac6a935679dce102f2e4bf7fe9827057a">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a15dd255d380747983169531b276105fe">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#ac6a935679dce102f2e4bf7fe9827057a">activemq::cmsutil::PooledSession::createTemporaryTopic()</a>.</p>
</div>
</div>
<a class="anchor" id="a9d9b16fef1140f5c781f5ca5096525dd"></a><!-- doxytag: member="cms::Session::createTextMessage" ref="a9d9b16fef1140f5c781f5ca5096525dd" args="(const std::string &amp;text)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_text_message.html">TextMessage</a>* cms::Session::createTextMessage </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>text</em></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_text_message.html" title="Interface for a text message.">TextMessage</a> and set the text to the value given. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">text</td><td>the initial text for the message</td></tr>
</table>
</dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aad5fc4f9bcd76b0661b1cb66f23cbdcf">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a247e9b20d0912c92d7ba7222a5c229c4">activemq::core::ActiveMQSession</a>.</p>
</div>
</div>
<a class="anchor" id="aeaa0ab1e454d8bf93f866e4511b2c931"></a><!-- doxytag: member="cms::Session::createTextMessage" ref="aeaa0ab1e454d8bf93f866e4511b2c931" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_text_message.html">TextMessage</a>* cms::Session::createTextMessage </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new <a class="el" href="classcms_1_1_text_message.html" title="Interface for a text message.">TextMessage</a>. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a2b84b58360420d04c4febad59a9d943e">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#ac4d54dda6803bdce156de9cc3e6a2b8b">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a2b84b58360420d04c4febad59a9d943e">activemq::cmsutil::PooledSession::createTextMessage()</a>.</p>
</div>
</div>
<a class="anchor" id="a2046d8340225e38af2b0931dae0b9b58"></a><!-- doxytag: member="cms::Session::createTopic" ref="a2046d8340225e38af2b0931dae0b9b58" args="(const std::string &amp;topicName)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_topic.html">Topic</a>* cms::Session::createTopic </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>topicName</em></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a topic identity given a <a class="el" href="classcms_1_1_queue.html" title="An interface encapsulating a provider-specific queue name.">Queue</a> name. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">topicName</td><td>the name of the new <a class="el" href="classcms_1_1_topic.html" title="An interface encapsulating a provider-specific topic name.">Topic</a> </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>new <a class="el" href="classcms_1_1_topic.html" title="An interface encapsulating a provider-specific topic name.">Topic</a> pointer that is owned by the caller.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a74d1a2067c0389accd908d37a840cbd9">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#abb6cedf4f366f9909fb87090d952cbc7">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a74d1a2067c0389accd908d37a840cbd9">activemq::cmsutil::PooledSession::createTopic()</a>.</p>
</div>
</div>
<a class="anchor" id="a373e7f70db09a28346ca01d8bd440f79"></a><!-- doxytag: member="cms::Session::getAcknowledgeMode" ref="a373e7f70db09a28346ca01d8bd440f79" args="() const =0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classcms_1_1_session.html#ae2fd7b8b76928b465727760c78522185">AcknowledgeMode</a> cms::Session::getAcknowledgeMode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const<code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the acknowledgment mode of the session. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the Sessions Acknowledge Mode</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a1072e510b7c83fc8f920991d7fc88489">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#af674395bcc376b2df889061f37b07fe5">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a1072e510b7c83fc8f920991d7fc88489">activemq::cmsutil::PooledSession::getAcknowledgeMode()</a>.</p>
</div>
</div>
<a class="anchor" id="a4a08ab1ee5077808a9213b221b805b3e"></a><!-- doxytag: member="cms::Session::isTransacted" ref="a4a08ab1ee5077808a9213b221b805b3e" args="() const =0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual bool cms::Session::isTransacted </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const<code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets if the Sessions is a Transacted <a class="el" href="classcms_1_1_session.html" title="A Session object is a single-threaded context for producing and consuming messages.">Session</a>. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>transacted true - false.</dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aa97d0c1b9060c48ac76694207c263a05">activemq::cmsutil::PooledSession</a>, <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a96d9a9b094e318ea4d12c4910b3c5fb4">activemq::core::ActiveMQSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_x_a_session.html#aa695cc050c91000e6543ca327ea7777c">activemq::core::ActiveMQXASession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#aa97d0c1b9060c48ac76694207c263a05">activemq::cmsutil::PooledSession::isTransacted()</a>.</p>
</div>
</div>
<a class="anchor" id="a64c3419771c38b86aaea85fc7be5ae95"></a><!-- doxytag: member="cms::Session::recover" ref="a64c3419771c38b86aaea85fc7be5ae95" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void cms::Session::recover </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Stops message delivery in this session, and restarts message delivery with the oldest unacknowledged message. </p>
<p>All consumers deliver messages in a serial order. Acknowledging a received message automatically acknowledges all messages that have been delivered to the client.</p>
<p>Restarting a session causes it to take the following actions:</p>
<ul>
<li>Stop message delivery</li>
<li>Mark all messages that might have been delivered but not acknowledged as "redelivered"</li>
<li>Restart the delivery sequence including all unacknowledged messages that had been previously delivered. Redelivered messages do not have to be delivered in exactly their original delivery order.</li>
</ul>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- if the CMS provider fails to stop and restart message delivery due to some internal error. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_illegal_state_exception.html" title="This exception is thrown when a method is invoked at an illegal or inappropriate time or if the provi...">IllegalStateException</a></td><td>- if the method is called by a transacted session. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a94a8bb63c7f37a37d200c5384c70b459">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#ad3e347bf1f5dd07d218e6d8483fcdc01">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a94a8bb63c7f37a37d200c5384c70b459">activemq::cmsutil::PooledSession::recover()</a>.</p>
</div>
</div>
<a class="anchor" id="a25767cf0d85fa20c6639fd70b0301afa"></a><!-- doxytag: member="cms::Session::rollback" ref="a25767cf0d85fa20c6639fd70b0301afa" args="()=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void cms::Session::rollback </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Rolls back all messages done in this transaction and releases any locks currently held. </p>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
<tr><td class="paramname"><a class="el" href="classcms_1_1_illegal_state_exception.html" title="This exception is thrown when a method is invoked at an illegal or inappropriate time or if the provi...">IllegalStateException</a></td><td>- if the method is not called by a transacted session. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a4289e785669ee5d406207f5cf4b9a4f2">activemq::cmsutil::PooledSession</a>, <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#a9f227aa9bfb3f133b2ae363f75f9061a">activemq::core::ActiveMQSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_x_a_session.html#a15d991c5728adba7df6efcd4de4e7670">activemq::core::ActiveMQXASession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a4289e785669ee5d406207f5cf4b9a4f2">activemq::cmsutil::PooledSession::rollback()</a>.</p>
</div>
</div>
<a class="anchor" id="a9802c106d3598044f3d775e673294926"></a><!-- doxytag: member="cms::Session::unsubscribe" ref="a9802c106d3598044f3d775e673294926" args="(const std::string &amp;name)=0" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">virtual void cms::Session::unsubscribe </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
<td><code> [pure virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Unsubscribes a durable subscription that has been created by a client. </p>
<p>This method deletes the state being maintained on behalf of the subscriber by its provider. It is erroneous for a client to delete a durable subscription while there is an active <a class="el" href="classcms_1_1_message_consumer.html" title="A client uses a MessageConsumer to received messages from a destination.">MessageConsumer</a> or Subscriber for the subscription, or while a consumed message is part of a pending transaction or has not been acknowledged in the session.</p>
<dl><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name used to identify this subscription</td></tr>
</table>
</dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classcms_1_1_c_m_s_exception.html" title="CMS API Exception that is the base for all exceptions thrown from CMS classes.">CMSException</a></td><td>- If an internal error occurs. </td></tr>
</table>
</dd>
</dl>
<p>Implemented in <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a9822fed18a05f583e5637b546165aaaa">activemq::cmsutil::PooledSession</a>, and <a class="el" href="classactivemq_1_1core_1_1_active_m_q_session.html#ab7ef409171157a7fb71fe1738ab42ad4">activemq::core::ActiveMQSession</a>.</p>
<p>Referenced by <a class="el" href="classactivemq_1_1cmsutil_1_1_pooled_session.html#a9822fed18a05f583e5637b546165aaaa">activemq::cmsutil::PooledSession::unsubscribe()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/main/cms/<a class="el" href="_session_8h_source.html">Session.h</a></li>
</ul>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacecms.html">cms</a> </li>
<li class="navelem"><a class="el" href="classcms_1_1_session.html">Session</a> </li>
<li class="footer">Generated on Mon Apr 25 2011 for activemq-cpp-3.4.0 by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
</ul>
</div>
</body>
</html>