<!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.11"/>
<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>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</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.11 -->
<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="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </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>
<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 class="anchor" 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 class="anchor" 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>
<tr class="memitem:abd6e72ed025e6e0afddf4e19ca10cdba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="status_8h.html#abd6e72ed025e6e0afddf4e19ca10cdba">KUDU_RETURN_MAIN_NOT_OK</a>(to_call,  msg,  ret_code)</td></tr>
<tr class="memdesc:abd6e72ed025e6e0afddf4e19ca10cdba"><td class="mdescLeft">&#160;</td><td class="mdescRight">A macro to use at the main() function level if it's necessary to return a non-zero status from the main() based on the non-OK status 's' and extra message 'msg' prepended. The desired return code is passed as 'ret_code' parameter.  <a href="#abd6e72ed025e6e0afddf4e19ca10cdba">More...</a><br /></td></tr>
<tr class="separator:abd6e72ed025e6e0afddf4e19ca10cdba"><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 class="anchor" id="a706c9f6ef1715b8f7a9185fb3c247d3f"></a>
<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 class="anchor" id="a2b360b53025724bb97d1dc21e25e26cc"></a>
<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 class="anchor" id="abbd85cc2c5535627091bb06a21918150"></a>
<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 class="anchor" id="abd6e72ed025e6e0afddf4e19ca10cdba"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define KUDU_RETURN_MAIN_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">msg, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ret_code&#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">    DCHECK_NE(0, (ret_code)) &lt;&lt; <span class="stringliteral">&quot;non-OK return code should not be 0&quot;</span>; \</div><div class="line">    const ::kudu::Status&amp; _s = (to_call); \</div><div class="line">    if (!_s.ok()) { \</div><div class="line">      const ::kudu::Status&amp; _ss = _s.CloneAndPrepend((msg)); \</div><div class="line">      LOG(ERROR) &lt;&lt; _ss.ToString(); \</div><div class="line">      return (ret_code); \</div><div class="line">    } \</div><div class="line">  } <span class="keywordflow">while</span> (0)</div></div><!-- fragment -->
<p>A macro to use at the main() function level if it's necessary to return a non-zero status from the main() based on the non-OK status 's' and extra message 'msg' prepended. The desired return code is passed as 'ret_code' parameter. </p>

</div>
</div>
<a class="anchor" id="a0de56a3f0e9d83b8ffdd63eac83c54ab"></a>
<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 class="anchor" id="a8fd1f0d6a9b2457c18e218d3540c4b3e"></a>
<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 class="anchor" id="af09a6a2eca53c9424d74c7fd9f39c5ce"></a>
<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 class="anchor" id="af66b8458f1d3f1264c1da86744e29e46"></a>
<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 class="anchor" id="a58d31c81bf1101a3ead737e9a4a4f223"></a>
<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 class="anchor" id="a1e64fec5ef85c0c738f6ac3f398f607e"></a>
<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.12.0 on Mon May 18 2020 14:07:09 by Doxygen 1.8.11</small>
  <br>
  <small>Copyright © 2020 The Apache Software Foundation.</small>
</address>
</body>
</html>
