blob: 613de347ef66980abee2d7458a0bd7542a39c497 [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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Impala: impala::ClientCache&lt; T &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Impala
</div>
<div id="projectbrief">Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<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>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classimpala_1_1ClientCache.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classimpala_1_1ClientCache-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">impala::ClientCache&lt; T &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="client-cache_8h_source.html">client-cache.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for impala::ClientCache&lt; T &gt;:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1ClientCache__coll__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:adfa5270c52ca179fa3efdc4e834c0a8e"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classimpala_1_1ThriftClient.html">ThriftClient</a>&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#adfa5270c52ca179fa3efdc4e834c0a8e">Client</a></td></tr>
<tr class="separator:adfa5270c52ca179fa3efdc4e834c0a8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab08d932e3cab2f83c79cf1b1a9c58dbc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#ab08d932e3cab2f83c79cf1b1a9c58dbc">ClientCache</a> (const std::string &amp;service_name=&quot;&quot;)</td></tr>
<tr class="separator:ab08d932e3cab2f83c79cf1b1a9c58dbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab83f3198189d24071974acf294bea2af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#ab83f3198189d24071974acf294bea2af">ClientCache</a> (uint32_t num_tries, <a class="el" href="classuint64__t.html">uint64_t</a> wait_ms, int32_t send_timeout_ms=0, int32_t recv_timeout_ms=0, const std::string &amp;service_name=&quot;&quot;)</td></tr>
<tr class="separator:ab83f3198189d24071974acf294bea2af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f449c7985d09b5a0510d5e972cab3f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#af0f449c7985d09b5a0510d5e972cab3f">CloseConnections</a> (const TNetworkAddress &amp;address)</td></tr>
<tr class="separator:af0f449c7985d09b5a0510d5e972cab3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ba5936d5d54e5cf4a4aca953d6dc50d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#a3ba5936d5d54e5cf4a4aca953d6dc50d">DebugString</a> ()</td></tr>
<tr class="memdesc:a3ba5936d5d54e5cf4a4aca953d6dc50d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper method which returns a debug string. <a href="#a3ba5936d5d54e5cf4a4aca953d6dc50d">More...</a><br/></td></tr>
<tr class="separator:a3ba5936d5d54e5cf4a4aca953d6dc50d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f13cf7cc55cadae632ec2d7801731b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#a8f13cf7cc55cadae632ec2d7801731b5">TestShutdown</a> ()</td></tr>
<tr class="memdesc:a8f13cf7cc55cadae632ec2d7801731b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">For testing only: shutdown all clients. <a href="#a8f13cf7cc55cadae632ec2d7801731b5">More...</a><br/></td></tr>
<tr class="separator:a8f13cf7cc55cadae632ec2d7801731b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25db141e8b489deccf75b4bce1d6d691"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#a25db141e8b489deccf75b4bce1d6d691">InitMetrics</a> (<a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a> *metrics, const std::string &amp;key_prefix)</td></tr>
<tr class="separator:a25db141e8b489deccf75b4bce1d6d691"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ad29c93a8e207484ad1b4de16146fcb09"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#ad29c93a8e207484ad1b4de16146fcb09">GetClient</a> (const TNetworkAddress &amp;address, T **iface)</td></tr>
<tr class="separator:ad29c93a8e207484ad1b4de16146fcb09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8005c9935ea7f7a894a4e3cd57312905"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#a8005c9935ea7f7a894a4e3cd57312905">ReopenClient</a> (T **client)</td></tr>
<tr class="separator:a8005c9935ea7f7a894a4e3cd57312905"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebe6a2f7a7403cbb32bc9a6d22823688"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#aebe6a2f7a7403cbb32bc9a6d22823688">ReleaseClient</a> (T **client)</td></tr>
<tr class="memdesc:aebe6a2f7a7403cbb32bc9a6d22823688"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the client to the cache and set *client to NULL. <a href="#aebe6a2f7a7403cbb32bc9a6d22823688">More...</a><br/></td></tr>
<tr class="separator:aebe6a2f7a7403cbb32bc9a6d22823688"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47152dda080cb7493c714685b2bcf7bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1ThriftClientImpl.html">ThriftClientImpl</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#a47152dda080cb7493c714685b2bcf7bf">MakeClient</a> (const TNetworkAddress &amp;address, <a class="el" href="namespaceimpala.html#af882a84ad40478dc121a6bf6dc27f201">ClientKey</a> *client_key, const std::string service_name)</td></tr>
<tr class="memdesc:a47152dda080cb7493c714685b2bcf7bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Factory method to produce a new ThriftClient&lt;T&gt; for the wrapped cache. <a href="#a47152dda080cb7493c714685b2bcf7bf">More...</a><br/></td></tr>
<tr class="separator:a47152dda080cb7493c714685b2bcf7bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ac1210f0837d2383a9b0c86f39db53c13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1ClientCacheHelper.html">ClientCacheHelper</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#ac1210f0837d2383a9b0c86f39db53c13">client_cache_helper_</a></td></tr>
<tr class="separator:ac1210f0837d2383a9b0c86f39db53c13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ef195971ac28f5a53fb1d67310f0a74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1ClientCacheHelper.html#a4da1ac222ceff2be3f798650fc4d48f9">ClientCacheHelper::ClientFactory</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#a5ef195971ac28f5a53fb1d67310f0a74">client_factory_</a></td></tr>
<tr class="memdesc:a5ef195971ac28f5a53fb1d67310f0a74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer, bound to MakeClient, which produces clients when the cache is empty. <a href="#a5ef195971ac28f5a53fb1d67310f0a74">More...</a><br/></td></tr>
<tr class="separator:a5ef195971ac28f5a53fb1d67310f0a74"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:af1a69f4f23afc0ec73a917f0c9161b8d"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1ClientCache.html#af1a69f4f23afc0ec73a917f0c9161b8d">ClientConnection&lt; T &gt;</a></td></tr>
<tr class="separator:af1a69f4f23afc0ec73a917f0c9161b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class T&gt;<br/>
class impala::ClientCache&lt; T &gt;</h3>
<p>Generic cache of Thrift clients for a given service type. This class is thread-safe. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00187">187</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="adfa5270c52ca179fa3efdc4e834c0a8e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classimpala_1_1ThriftClient.html">ThriftClient</a>&lt;T&gt; <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::<a class="el" href="classimpala_1_1ClientCache.html#adfa5270c52ca179fa3efdc4e834c0a8e">Client</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00255">255</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab08d932e3cab2f83c79cf1b1a9c58dbc"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::<a class="el" href="classimpala_1_1ClientCache.html">ClientCache</a> </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>service_name</em> = <code>&quot;&quot;</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00257">257</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00308">impala::ClientCache&lt; T &gt;::client_factory_</a>, and <a class="el" href="client-cache_8h_source.html#l00333">impala::ClientCache&lt; T &gt;::MakeClient()</a>.</p>
</div>
</div>
<a class="anchor" id="ab83f3198189d24071974acf294bea2af"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::<a class="el" href="classimpala_1_1ClientCache.html">ClientCache</a> </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>num_tries</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classuint64__t.html">uint64_t</a>&#160;</td>
<td class="paramname"><em>wait_ms</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>send_timeout_ms</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>recv_timeout_ms</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>service_name</em> = <code>&quot;&quot;</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a <a class="el" href="classimpala_1_1ClientCache.html">ClientCache</a> where connections are tried num_tries times, with a pause of wait_ms between attempts. The underlying TSocket's send and receive timeouts of each connection can also be set. If num_tries == 0, retry connections indefinitely. A send/receive timeout of 0 means there is no timeout. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00266">266</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00308">impala::ClientCache&lt; T &gt;::client_factory_</a>, and <a class="el" href="client-cache_8h_source.html#l00333">impala::ClientCache&lt; T &gt;::MakeClient()</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="af0f449c7985d09b5a0510d5e972cab3f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::CloseConnections </td>
<td>(</td>
<td class="paramtype">const TNetworkAddress &amp;&#160;</td>
<td class="paramname"><em>address</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Close all clients connected to the supplied address, (e.g., in case of failure) so that on their next use they will have to be Reopen'ed. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00277">277</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, and <a class="el" href="client-cache_8cc_source.html#l00148">impala::ClientCacheHelper::CloseConnections()</a>.</p>
<p>Referenced by <a class="el" href="impala-server_8cc_source.html#l01317">impala::ImpalaServer::MembershipCallback()</a>.</p>
</div>
</div>
<a class="anchor" id="a3ba5936d5d54e5cf4a4aca953d6dc50d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::DebugString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Helper method which returns a debug string. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00282">282</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, and <a class="el" href="client-cache_8cc_source.html#l00170">impala::ClientCacheHelper::DebugString()</a>.</p>
</div>
</div>
<a class="anchor" id="ad29c93a8e207484ad1b4de16146fcb09"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::GetClient </td>
<td>(</td>
<td class="paramtype">const TNetworkAddress &amp;&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T **&#160;</td>
<td class="paramname"><em>iface</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Obtains a pointer to a Thrift interface object (of type T), backed by a live transport which is already open. Returns <a class="el" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a> unless there was an error opening the transport. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00313">313</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, <a class="el" href="client-cache_8h_source.html#l00308">impala::ClientCache&lt; T &gt;::client_factory_</a>, and <a class="el" href="client-cache_8cc_source.html#l00040">impala::ClientCacheHelper::GetClient()</a>.</p>
</div>
</div>
<a class="anchor" id="a25db141e8b489deccf75b4bce1d6d691"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::InitMetrics </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a> *&#160;</td>
<td class="paramname"><em>metrics</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>key_prefix</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds metrics for this cache to the supplied Metrics instance. The metrics have keys that are prefixed by the key_prefix argument (which should not end in a period). Must be called before the cache is used, otherwise the metrics might be wrong </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00295">295</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, and <a class="el" href="client-cache_8cc_source.html#l00199">impala::ClientCacheHelper::InitMetrics()</a>.</p>
</div>
</div>
<a class="anchor" id="a47152dda080cb7493c714685b2bcf7bf"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1ThriftClientImpl.html">ThriftClientImpl</a>* <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::MakeClient </td>
<td>(</td>
<td class="paramtype">const TNetworkAddress &amp;&#160;</td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceimpala.html#af882a84ad40478dc121a6bf6dc27f201">ClientKey</a> *&#160;</td>
<td class="paramname"><em>client_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string&#160;</td>
<td class="paramname"><em>service_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Factory method to produce a new ThriftClient&lt;T&gt; for the wrapped cache. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00333">333</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="thrift-client_8h_source.html#l00114">impala::ThriftClient&lt; InterfaceType &gt;::iface()</a>.</p>
<p>Referenced by <a class="el" href="client-cache_8h_source.html#l00257">impala::ClientCache&lt; T &gt;::ClientCache()</a>.</p>
</div>
</div>
<a class="anchor" id="aebe6a2f7a7403cbb32bc9a6d22823688"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::ReleaseClient </td>
<td>(</td>
<td class="paramtype">T **&#160;</td>
<td class="paramname"><em>client</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the client to the cache and set *client to NULL. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00328">328</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, and <a class="el" href="client-cache_8cc_source.html#l00127">impala::ClientCacheHelper::ReleaseClient()</a>.</p>
</div>
</div>
<a class="anchor" id="a8005c9935ea7f7a894a4e3cd57312905"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::ReopenClient </td>
<td>(</td>
<td class="paramtype">T **&#160;</td>
<td class="paramname"><em>client</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Close and delete the underlying transport. Return a new client connecting to the same host/port. Returns an error status if a new connection cannot be established and *client will be unaffected in that case. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00322">322</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, <a class="el" href="client-cache_8h_source.html#l00308">impala::ClientCache&lt; T &gt;::client_factory_</a>, and <a class="el" href="client-cache_8cc_source.html#l00068">impala::ClientCacheHelper::ReopenClient()</a>.</p>
</div>
</div>
<a class="anchor" id="a8f13cf7cc55cadae632ec2d7801731b5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::TestShutdown </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>For testing only: shutdown all clients. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00287">287</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>References <a class="el" href="client-cache_8h_source.html#l00305">impala::ClientCache&lt; T &gt;::client_cache_helper_</a>, and <a class="el" href="client-cache_8cc_source.html#l00186">impala::ClientCacheHelper::TestShutdown()</a>.</p>
<p>Referenced by <a class="el" href="data-stream-test_8cc_source.html#l00149">impala::DataStreamTest::TearDown()</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="af1a69f4f23afc0ec73a917f0c9161b8d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classimpala_1_1ClientConnection.html">ClientConnection</a>&lt; T &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00300">300</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ac1210f0837d2383a9b0c86f39db53c13"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1ClientCacheHelper.html">ClientCacheHelper</a> <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::client_cache_helper_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Most operations in this class are thin wrappers around the equivalent in <a class="el" href="classimpala_1_1ClientCacheHelper.html" title="This class is thread-safe. ">ClientCacheHelper</a>, which is a non-templated cache to avoid inlining lots of code wherever this cache is used. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00305">305</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>Referenced by <a class="el" href="client-cache_8h_source.html#l00277">impala::ClientCache&lt; T &gt;::CloseConnections()</a>, <a class="el" href="client-cache_8h_source.html#l00282">impala::ClientCache&lt; T &gt;::DebugString()</a>, <a class="el" href="client-cache_8h_source.html#l00313">impala::ClientCache&lt; T &gt;::GetClient()</a>, <a class="el" href="client-cache_8h_source.html#l00295">impala::ClientCache&lt; T &gt;::InitMetrics()</a>, <a class="el" href="client-cache_8h_source.html#l00328">impala::ClientCache&lt; T &gt;::ReleaseClient()</a>, <a class="el" href="client-cache_8h_source.html#l00322">impala::ClientCache&lt; T &gt;::ReopenClient()</a>, and <a class="el" href="client-cache_8h_source.html#l00287">impala::ClientCache&lt; T &gt;::TestShutdown()</a>.</p>
</div>
</div>
<a class="anchor" id="a5ef195971ac28f5a53fb1d67310f0a74"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1ClientCacheHelper.html#a4da1ac222ceff2be3f798650fc4d48f9">ClientCacheHelper::ClientFactory</a> <a class="el" href="classimpala_1_1ClientCache.html">impala::ClientCache</a>&lt; T &gt;::client_factory_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Function pointer, bound to MakeClient, which produces clients when the cache is empty. </p>
<p>Definition at line <a class="el" href="client-cache_8h_source.html#l00308">308</a> of file <a class="el" href="client-cache_8h_source.html">client-cache.h</a>.</p>
<p>Referenced by <a class="el" href="client-cache_8h_source.html#l00257">impala::ClientCache&lt; T &gt;::ClientCache()</a>, <a class="el" href="client-cache_8h_source.html#l00313">impala::ClientCache&lt; T &gt;::GetClient()</a>, and <a class="el" href="client-cache_8h_source.html#l00322">impala::ClientCache&lt; T &gt;::ReopenClient()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>be/src/runtime/<a class="el" href="client-cache_8h_source.html">client-cache.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceimpala.html">impala</a></li><li class="navelem"><a class="el" href="classimpala_1_1ClientCache.html">ClientCache</a></li>
<li class="footer">Generated on Thu May 7 2015 16:10:49 for Impala by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>