<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Kudu C++ client API: include/kudu/util/status.h File 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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 id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kudu C++ client API
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</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 id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_58b01e52e53886b8d78ab5060a2cd2bd.html">kudu</a></li><li class="navelem"><a class="el" href="dir_e8a2e446cf73a5a1ae0ad6a5a21b6d03.html">util</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">status.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;errno.h&gt;</code><br />
<code>#include &lt;stdint.h&gt;</code><br />
<code>#include &lt;cstddef&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &quot;kudu/client/stubs.h&quot;</code><br />
<code>#include &quot;kudu/util/kudu_export.h&quot;</code><br />
<code>#include &quot;kudu/util/slice.h&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for status.h:</div>
<div class="dyncontent">
<div class="center"><img src="status_8h__incl.png" border="0" usemap="#include_2kudu_2util_2status_8h" alt=""/></div>
<map name="include_2kudu_2util_2status_8h" id="include_2kudu_2util_2status_8h">
<area shape="rect" id="node6" href="stubs_8h_source.html" title="kudu/client/stubs.h" alt="" coords="741,80,873,107"/>
<area shape="rect" id="node9" href="kudu__export_8h_source.html" title="kudu/util/kudu_export.h" alt="" coords="263,155,421,181"/>
<area shape="rect" id="node10" href="slice_8h_source.html" title="kudu/util/slice.h" alt="" coords="300,80,413,107"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="status_8h__dep__incl.png" border="0" usemap="#include_2kudu_2util_2status_8hdep" alt=""/></div>
<map name="include_2kudu_2util_2status_8hdep" id="include_2kudu_2util_2status_8hdep">
<area shape="rect" id="node2" href="client_8h_source.html" title="include/kudu/client\l/client.h" alt="" coords="34,259,165,300"/>
<area shape="rect" id="node3" href="scan__batch_8h_source.html" title="include/kudu/client\l/scan_batch.h" alt="" coords="46,80,177,121"/>
<area shape="rect" id="node5" href="schema_8h_source.html" title="include/kudu/client\l/schema.h" alt="" coords="189,169,320,211"/>
<area shape="rect" id="node6" href="partial__row_8h_source.html" title="include/kudu/common\l/partial_row.h" alt="" coords="322,80,472,121"/>
<area shape="rect" id="node4" href="row__result_8h_source.html" title="include/kudu/client\l/row_result.h" alt="" coords="34,169,165,211"/>
<area shape="rect" id="node7" href="write__op_8h_source.html" title="include/kudu/client\l/write_op.h" alt="" coords="344,169,474,211"/>
</map>
</div>
</div>
<p><a href="status_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classkudu_1_1Status.html">kudu::Status</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A representation of an operation's outcome.  <a href="classkudu_1_1Status.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a0de56a3f0e9d83b8ffdd63eac83c54ab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a0de56a3f0e9d83b8ffdd63eac83c54ab">KUDU_RETURN_NOT_OK</a>(s)</td></tr>
<tr class="memdesc:a0de56a3f0e9d83b8ffdd63eac83c54ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the given status if it is not <code>OK</code>.  <a href="#a0de56a3f0e9d83b8ffdd63eac83c54ab">More...</a><br /></td></tr>
<tr class="separator:a0de56a3f0e9d83b8ffdd63eac83c54ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af66b8458f1d3f1264c1da86744e29e46"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#af66b8458f1d3f1264c1da86744e29e46">KUDU_RETURN_NOT_OK_PREPEND</a>(s,  msg)</td></tr>
<tr class="memdesc:af66b8458f1d3f1264c1da86744e29e46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the given status if it is not OK, but first clone it and prepend the given message.  <a href="#af66b8458f1d3f1264c1da86744e29e46">More...</a><br /></td></tr>
<tr class="separator:af66b8458f1d3f1264c1da86744e29e46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58d31c81bf1101a3ead737e9a4a4f223"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a58d31c81bf1101a3ead737e9a4a4f223">KUDU_RETURN_NOT_OK_RET</a>(to_call,  to_return)</td></tr>
<tr class="memdesc:a58d31c81bf1101a3ead737e9a4a4f223"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <code>to_return</code> if <code>to_call</code> returns a bad status. The substitution for 'to_return' may reference the variable <code>s</code> for the bad status.  <a href="#a58d31c81bf1101a3ead737e9a4a4f223">More...</a><br /></td></tr>
<tr class="separator:a58d31c81bf1101a3ead737e9a4a4f223"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fd1f0d6a9b2457c18e218d3540c4b3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a8fd1f0d6a9b2457c18e218d3540c4b3e">KUDU_RETURN_NOT_OK_EVAL</a>(s,  on_error)</td></tr>
<tr class="memdesc:a8fd1f0d6a9b2457c18e218d3540c4b3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the given status if it is not OK, evaluating <code>on_error</code> if so.  <a href="#a8fd1f0d6a9b2457c18e218d3540c4b3e">More...</a><br /></td></tr>
<tr class="separator:a8fd1f0d6a9b2457c18e218d3540c4b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e64fec5ef85c0c738f6ac3f398f607e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a1e64fec5ef85c0c738f6ac3f398f607e">KUDU_WARN_NOT_OK</a>(to_call,  warning_prefix)</td></tr>
<tr class="memdesc:a1e64fec5ef85c0c738f6ac3f398f607e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Emit a warning if <code>to_call</code> returns a bad status.  <a href="#a1e64fec5ef85c0c738f6ac3f398f607e">More...</a><br /></td></tr>
<tr class="separator:a1e64fec5ef85c0c738f6ac3f398f607e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbd85cc2c5535627091bb06a21918150"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#abbd85cc2c5535627091bb06a21918150">KUDU_LOG_AND_RETURN</a>(level,  status)</td></tr>
<tr class="memdesc:abbd85cc2c5535627091bb06a21918150"><td class="mdescLeft">&#160;</td><td class="mdescRight">Log the given status and return immediately.  <a href="#abbd85cc2c5535627091bb06a21918150">More...</a><br /></td></tr>
<tr class="separator:abbd85cc2c5535627091bb06a21918150"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af09a6a2eca53c9424d74c7fd9f39c5ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#af09a6a2eca53c9424d74c7fd9f39c5ce">KUDU_RETURN_NOT_OK_LOG</a>(s,  level,  msg)</td></tr>
<tr class="memdesc:af09a6a2eca53c9424d74c7fd9f39c5ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the given status is not OK, log it and 'msg' at 'level' and return the status.  <a href="#af09a6a2eca53c9424d74c7fd9f39c5ce">More...</a><br /></td></tr>
<tr class="separator:af09a6a2eca53c9424d74c7fd9f39c5ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a706c9f6ef1715b8f7a9185fb3c247d3f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a706c9f6ef1715b8f7a9185fb3c247d3f">KUDU_CHECK_OK_PREPEND</a>(to_call,  msg)</td></tr>
<tr class="memdesc:a706c9f6ef1715b8f7a9185fb3c247d3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">If <code>to_call</code> returns a bad status, CHECK immediately with a logged message of <code>msg</code> followed by the status.  <a href="#a706c9f6ef1715b8f7a9185fb3c247d3f">More...</a><br /></td></tr>
<tr class="separator:a706c9f6ef1715b8f7a9185fb3c247d3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac503ba85e942147294cdc82087da60f6"><td class="memItemLeft" align="right" valign="top"><a id="ac503ba85e942147294cdc82087da60f6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#ac503ba85e942147294cdc82087da60f6">KUDU_CHECK_OK</a>(s)&#160;&#160;&#160;<a class="el" href="status_8h.html#a706c9f6ef1715b8f7a9185fb3c247d3f">KUDU_CHECK_OK_PREPEND</a>(s, &quot;Bad status&quot;)</td></tr>
<tr class="memdesc:ac503ba85e942147294cdc82087da60f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the status is bad, CHECK immediately, appending the status to the logged message. <br /></td></tr>
<tr class="separator:ac503ba85e942147294cdc82087da60f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b360b53025724bb97d1dc21e25e26cc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a2b360b53025724bb97d1dc21e25e26cc">KUDU_DCHECK_OK_PREPEND</a>(to_call,  msg)</td></tr>
<tr class="memdesc:a2b360b53025724bb97d1dc21e25e26cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">If <code>to_call</code> returns a bad status, DCHECK immediately with a logged message of <code>msg</code> followed by the status.  <a href="#a2b360b53025724bb97d1dc21e25e26cc">More...</a><br /></td></tr>
<tr class="separator:a2b360b53025724bb97d1dc21e25e26cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99332afa18f00de3c7fcf3e76949df9d"><td class="memItemLeft" align="right" valign="top"><a id="a99332afa18f00de3c7fcf3e76949df9d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#a99332afa18f00de3c7fcf3e76949df9d">KUDU_DCHECK_OK</a>(s)&#160;&#160;&#160;<a class="el" href="status_8h.html#a2b360b53025724bb97d1dc21e25e26cc">KUDU_DCHECK_OK_PREPEND</a>(s, &quot;Bad status&quot;)</td></tr>
<tr class="memdesc:a99332afa18f00de3c7fcf3e76949df9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the status is bad, DCHECK immediately, appending the status to the logged 'Bad status' message. <br /></td></tr>
<tr class="separator:a99332afa18f00de3c7fcf3e76949df9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This header is used in both the Kudu build as well as in builds of applications that use the Kudu C++ client. In the latter we need to be careful to "namespace" our macros, to avoid colliding or overriding with similarly named macros belonging to the application.</p>
<p>KUDU_HEADERS_USE_SHORT_STATUS_MACROS handles this behavioral change. When defined, we're building Kudu and: </p><ul>
<li>Non-namespaced macros are allowed and mapped to the namespaced versions defined above. </li>
<li>Namespaced versions of glog macros are mapped to the real glog macros (otherwise the macros are defined in the C++ client stubs). </li>
</ul>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a706c9f6ef1715b8f7a9185fb3c247d3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a706c9f6ef1715b8f7a9185fb3c247d3f">&#9670;&nbsp;</a></span>KUDU_CHECK_OK_PREPEND</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_CHECK_OK_PREPEND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">to_call, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (to_call);                   \</div><div class="line">    KUDU_CHECK(_s.ok()) &lt;&lt; (msg) &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; _s.ToString();  \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>If <code>to_call</code> returns a bad status, CHECK immediately with a logged message of <code>msg</code> followed by the status. </p>

</div>
</div>
<a id="a2b360b53025724bb97d1dc21e25e26cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b360b53025724bb97d1dc21e25e26cc">&#9670;&nbsp;</a></span>KUDU_DCHECK_OK_PREPEND</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_DCHECK_OK_PREPEND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">to_call, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (to_call);                   \</div><div class="line">    KUDU_DCHECK(_s.ok()) &lt;&lt; (msg) &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; _s.ToString();  \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>If <code>to_call</code> returns a bad status, DCHECK immediately with a logged message of <code>msg</code> followed by the status. </p>

</div>
</div>
<a id="abbd85cc2c5535627091bb06a21918150"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbd85cc2c5535627091bb06a21918150">&#9670;&nbsp;</a></span>KUDU_LOG_AND_RETURN</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_LOG_AND_RETURN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">level, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">status&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (status);        \</div><div class="line">    KUDU_LOG(level) &lt;&lt; _s.ToString(); \</div><div class="line">    return _s; \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>Log the given status and return immediately. </p>

</div>
</div>
<a id="a0de56a3f0e9d83b8ffdd63eac83c54ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0de56a3f0e9d83b8ffdd63eac83c54ab">&#9670;&nbsp;</a></span>KUDU_RETURN_NOT_OK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_RETURN_NOT_OK</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (s);             \</div><div class="line">    if (PREDICT_FALSE(!_s.ok())) return _s;     \</div><div class="line">  } while (0)</div></div><!-- fragment -->
<p>Return the given status if it is not <code>OK</code>. </p>

</div>
</div>
<a id="a8fd1f0d6a9b2457c18e218d3540c4b3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fd1f0d6a9b2457c18e218d3540c4b3e">&#9670;&nbsp;</a></span>KUDU_RETURN_NOT_OK_EVAL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_RETURN_NOT_OK_EVAL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">on_error&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (s); \</div><div class="line">    if (PREDICT_FALSE(!_s.ok())) { \</div><div class="line">      (on_error); \</div><div class="line">      return _s; \</div><div class="line">    } \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>Return the given status if it is not OK, evaluating <code>on_error</code> if so. </p>

</div>
</div>
<a id="af09a6a2eca53c9424d74c7fd9f39c5ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af09a6a2eca53c9424d74c7fd9f39c5ce">&#9670;&nbsp;</a></span>KUDU_RETURN_NOT_OK_LOG</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_RETURN_NOT_OK_LOG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">level, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (s);             \</div><div class="line">    if (PREDICT_FALSE(!_s.ok())) { \</div><div class="line">      KUDU_LOG(level) &lt;&lt; <span class="stringliteral">&quot;Status: &quot;</span> &lt;&lt; _s.ToString() &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; (msg); \</div><div class="line">      return _s;     \</div><div class="line">    } \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>If the given status is not OK, log it and 'msg' at 'level' and return the status. </p>

</div>
</div>
<a id="af66b8458f1d3f1264c1da86744e29e46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af66b8458f1d3f1264c1da86744e29e46">&#9670;&nbsp;</a></span>KUDU_RETURN_NOT_OK_PREPEND</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_RETURN_NOT_OK_PREPEND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (s);                              \</div><div class="line">    if (PREDICT_FALSE(!_s.ok())) return _s.CloneAndPrepend(msg); \</div><div class="line">  } while (0)</div></div><!-- fragment -->
<p>Return the given status if it is not OK, but first clone it and prepend the given message. </p>

</div>
</div>
<a id="a58d31c81bf1101a3ead737e9a4a4f223"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58d31c81bf1101a3ead737e9a4a4f223">&#9670;&nbsp;</a></span>KUDU_RETURN_NOT_OK_RET</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_RETURN_NOT_OK_RET</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">to_call, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">to_return&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; s = (to_call);                \</div><div class="line">    if (PREDICT_FALSE(!s.ok())) return (to_return);  \</div><div class="line">  } while (0)</div></div><!-- fragment -->
<p>Return <code>to_return</code> if <code>to_call</code> returns a bad status. The substitution for 'to_return' may reference the variable <code>s</code> for the bad status. </p>

</div>
</div>
<a id="a1e64fec5ef85c0c738f6ac3f398f607e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e64fec5ef85c0c738f6ac3f398f607e">&#9670;&nbsp;</a></span>KUDU_WARN_NOT_OK</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_WARN_NOT_OK</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">to_call, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">warning_prefix&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">    const ::kudu::Status&amp; _s = (to_call);              \</div><div class="line">    if (PREDICT_FALSE(!_s.ok())) { \</div><div class="line">      KUDU_LOG(WARNING) &lt;&lt; (warning_prefix) &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; _s.ToString();  \</div><div class="line">    } \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>Emit a warning if <code>to_call</code> returns a bad status. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
  <small>Generated for Kudu version 1.11.0 on Tue Nov 5 2019 11:58:25 by Doxygen 1.8.13</small>
  <br>
  <small>Copyright © 2019 The Apache Software Foundation.</small>
</address>
</body>
</html>
