blob: 020563b3938fe06fc93718ba707f3b08b16a7354 [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::Codec Class 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_1Codec.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="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classimpala_1_1Codec-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">impala::Codec Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for impala::Codec:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1Codec__inherit__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>
<div class="dynheader">
Collaboration diagram for impala::Codec:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1Codec__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:a26c0d38f6ee196ba8191b32e76765549"><td class="memItemLeft" align="right" valign="top">typedef std::map&lt; const <br class="typebreak"/>
std::string, const <br class="typebreak"/>
THdfsCompression::type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a26c0d38f6ee196ba8191b32e76765549">CodecMap</a></td></tr>
<tr class="memdesc:a26c0d38f6ee196ba8191b32e76765549"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map from codec string to compression format. <a href="#a26c0d38f6ee196ba8191b32e76765549">More...</a><br/></td></tr>
<tr class="separator:a26c0d38f6ee196ba8191b32e76765549"><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:a72f5d471b61e14dd058a3a68cfc65772"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a72f5d471b61e14dd058a3a68cfc65772">~Codec</a> ()</td></tr>
<tr class="separator:a72f5d471b61e14dd058a3a68cfc65772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a738cd6628de0972edef858907048f777"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a738cd6628de0972edef858907048f777">ProcessBlock</a> (<a class="el" href="classbool.html">bool</a> output_preallocated, int64_t input_length, const uint8_t *input, int64_t *output_length, uint8_t **output)=0</td></tr>
<tr class="memdesc:a738cd6628de0972edef858907048f777"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process a block of data, either compressing or decompressing it. <a href="#a738cd6628de0972edef858907048f777">More...</a><br/></td></tr>
<tr class="separator:a738cd6628de0972edef858907048f777"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31a2678b525670dcf33d35a359dcc839"><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_1Codec.html#a31a2678b525670dcf33d35a359dcc839">ProcessBlock32</a> (<a class="el" href="classbool.html">bool</a> output_preallocated, int input_length, const uint8_t *input, int *output_length, uint8_t **output)</td></tr>
<tr class="separator:a31a2678b525670dcf33d35a359dcc839"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b7de236927fbd920e1e8647396c7175"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a0b7de236927fbd920e1e8647396c7175">ProcessBlockStreaming</a> (int64_t input_length, const uint8_t *input, int64_t *input_bytes_read, int64_t *output_length, uint8_t **output, <a class="el" href="classbool.html">bool</a> *eos)</td></tr>
<tr class="separator:a0b7de236927fbd920e1e8647396c7175"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17c8e2c231a04155601b70c363127b8c"><td class="memItemLeft" align="right" valign="top">virtual int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a17c8e2c231a04155601b70c363127b8c">MaxOutputLen</a> (int64_t input_len, const uint8_t *input=NULL)=0</td></tr>
<tr class="separator:a17c8e2c231a04155601b70c363127b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b0c5338bc8103a6d257e62d0954e148"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a3b0c5338bc8103a6d257e62d0954e148">Close</a> ()</td></tr>
<tr class="memdesc:a3b0c5338bc8103a6d257e62d0954e148"><td class="mdescLeft">&#160;</td><td class="mdescRight">Must be called on codec before destructor for final cleanup. <a href="#a3b0c5338bc8103a6d257e62d0954e148">More...</a><br/></td></tr>
<tr class="separator:a3b0c5338bc8103a6d257e62d0954e148"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fecfd76fe1a35dd03bf94155a62a4ad"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a0fecfd76fe1a35dd03bf94155a62a4ad">file_extension</a> () const =0</td></tr>
<tr class="memdesc:a0fecfd76fe1a35dd03bf94155a62a4ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">File extension to use for this compression codec. <a href="#a0fecfd76fe1a35dd03bf94155a62a4ad">More...</a><br/></td></tr>
<tr class="separator:a0fecfd76fe1a35dd03bf94155a62a4ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49163565c028d44d734167bf4fa4745d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a49163565c028d44d734167bf4fa4745d">reuse_output_buffer</a> () const </td></tr>
<tr class="separator:a49163565c028d44d734167bf4fa4745d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a0d8e74ac086a91c1cc7dbd7fe166f307"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a0d8e74ac086a91c1cc7dbd7fe166f307">CreateDecompressor</a> (<a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *mem_pool, <a class="el" href="classbool.html">bool</a> reuse, THdfsCompression::type format, boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *decompressor)</td></tr>
<tr class="separator:a0d8e74ac086a91c1cc7dbd7fe166f307"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20a8fa5486acc65b9d33ce0fbccf4829"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a20a8fa5486acc65b9d33ce0fbccf4829">CreateDecompressor</a> (<a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *mem_pool, <a class="el" href="classbool.html">bool</a> reuse, const std::string &amp;codec, boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *decompressor)</td></tr>
<tr class="memdesc:a20a8fa5486acc65b9d33ce0fbccf4829"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternate factory method: takes a codec string and populates a scoped pointer. <a href="#a20a8fa5486acc65b9d33ce0fbccf4829">More...</a><br/></td></tr>
<tr class="separator:a20a8fa5486acc65b9d33ce0fbccf4829"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18854cd2e08266b09600a6e559c7c6e1"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a18854cd2e08266b09600a6e559c7c6e1">CreateCompressor</a> (<a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *mem_pool, <a class="el" href="classbool.html">bool</a> reuse, THdfsCompression::type format, boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *compressor)</td></tr>
<tr class="separator:a18854cd2e08266b09600a6e559c7c6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fa85c3a081ddace522b35468e2e000d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a9fa85c3a081ddace522b35468e2e000d">CreateCompressor</a> (<a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *mem_pool, <a class="el" href="classbool.html">bool</a> reuse, const std::string &amp;codec, boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *compressor)</td></tr>
<tr class="memdesc:a9fa85c3a081ddace522b35468e2e000d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternate factory method: takes a codec string and populates a scoped pointer. <a href="#a9fa85c3a081ddace522b35468e2e000d">More...</a><br/></td></tr>
<tr class="separator:a9fa85c3a081ddace522b35468e2e000d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e34e69fbf492c3c03cd417f68f75bd4"><td class="memItemLeft" align="right" valign="top">static std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a8e34e69fbf492c3c03cd417f68f75bd4">GetCodecName</a> (THdfsCompression::type)</td></tr>
<tr class="memdesc:a8e34e69fbf492c3c03cd417f68f75bd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the name of a compression algorithm. <a href="#a8e34e69fbf492c3c03cd417f68f75bd4">More...</a><br/></td></tr>
<tr class="separator:a8e34e69fbf492c3c03cd417f68f75bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab105a8417870709e0636d503977ec02c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#ab105a8417870709e0636d503977ec02c">GetHadoopCodecClassName</a> (THdfsCompression::type, std::string *out_name)</td></tr>
<tr class="memdesc:ab105a8417870709e0636d503977ec02c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the java class name for the given compression type. <a href="#ab105a8417870709e0636d503977ec02c">More...</a><br/></td></tr>
<tr class="separator:ab105a8417870709e0636d503977ec02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a19ded9d1e31423b9a5171d19167c4799"><td class="memItemLeft" align="right" valign="top">static const char *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a19ded9d1e31423b9a5171d19167c4799">DEFAULT_COMPRESSION</a></td></tr>
<tr class="memdesc:a19ded9d1e31423b9a5171d19167c4799"><td class="mdescLeft">&#160;</td><td class="mdescRight">These are the codec string representations used in Hadoop. <a href="#a19ded9d1e31423b9a5171d19167c4799">More...</a><br/></td></tr>
<tr class="separator:a19ded9d1e31423b9a5171d19167c4799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9914b2157fa4e42d07defd7c1c428000"><td class="memItemLeft" align="right" valign="top">static const char *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a9914b2157fa4e42d07defd7c1c428000">GZIP_COMPRESSION</a> = &quot;org.apache.hadoop.io.compress.GzipCodec&quot;</td></tr>
<tr class="separator:a9914b2157fa4e42d07defd7c1c428000"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686e63f6fce2c614afb0d8c5120b5a6a"><td class="memItemLeft" align="right" valign="top">static const char *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a686e63f6fce2c614afb0d8c5120b5a6a">BZIP2_COMPRESSION</a> = &quot;org.apache.hadoop.io.compress.BZip2Codec&quot;</td></tr>
<tr class="separator:a686e63f6fce2c614afb0d8c5120b5a6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87369178706252f34de2b729503ba266"><td class="memItemLeft" align="right" valign="top">static const char *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a87369178706252f34de2b729503ba266">SNAPPY_COMPRESSION</a> = &quot;org.apache.hadoop.io.compress.SnappyCodec&quot;</td></tr>
<tr class="separator:a87369178706252f34de2b729503ba266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d59e437b1f94ab1597d510af72a4939"><td class="memItemLeft" align="right" valign="top">static const char *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a3d59e437b1f94ab1597d510af72a4939">UNKNOWN_CODEC_ERROR</a></td></tr>
<tr class="separator:a3d59e437b1f94ab1597d510af72a4939"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8a61a59a3a8cae50a6010f5e0f21115"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classimpala_1_1Codec.html#a26c0d38f6ee196ba8191b32e76765549">CodecMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#aa8a61a59a3a8cae50a6010f5e0f21115">CODEC_MAP</a></td></tr>
<tr class="separator:aa8a61a59a3a8cae50a6010f5e0f21115"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a079688b7a4dde5a4e60467b449901e12"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a079688b7a4dde5a4e60467b449901e12">MAX_BLOCK_SIZE</a> = (2L * 1024 * 1024 * 1024) - 1</td></tr>
<tr class="separator:a079688b7a4dde5a4e60467b449901e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a6c6ea5e7ee2ad71a1f33ce12dc498c8f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a6c6ea5e7ee2ad71a1f33ce12dc498c8f">Codec</a> (<a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *mem_pool, <a class="el" href="classbool.html">bool</a> reuse_buffer)</td></tr>
<tr class="separator:a6c6ea5e7ee2ad71a1f33ce12dc498c8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa957a37b16d1e65b7f62ca67aa7381a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#aaa957a37b16d1e65b7f62ca67aa7381a">Init</a> ()=0</td></tr>
<tr class="memdesc:aaa957a37b16d1e65b7f62ca67aa7381a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the codec. This should only be called once. <a href="#aaa957a37b16d1e65b7f62ca67aa7381a">More...</a><br/></td></tr>
<tr class="separator:aaa957a37b16d1e65b7f62ca67aa7381a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a375ea0ba90166ebb055a3d0c9a8936c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a375ea0ba90166ebb055a3d0c9a8936c9">memory_pool_</a></td></tr>
<tr class="memdesc:a375ea0ba90166ebb055a3d0c9a8936c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pool to allocate the buffer to hold transformed data. <a href="#a375ea0ba90166ebb055a3d0c9a8936c9">More...</a><br/></td></tr>
<tr class="separator:a375ea0ba90166ebb055a3d0c9a8936c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ec5c623611416c9a873ea242d0d5035"><td class="memItemLeft" align="right" valign="top">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1MemPool.html">MemPool</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a7ec5c623611416c9a873ea242d0d5035">temp_memory_pool_</a></td></tr>
<tr class="separator:a7ec5c623611416c9a873ea242d0d5035"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93bd812c02e9838a8397a78cabe494cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a93bd812c02e9838a8397a78cabe494cf">reuse_buffer_</a></td></tr>
<tr class="memdesc:a93bd812c02e9838a8397a78cabe494cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Can we reuse the output buffer or do we need to allocate on each call? <a href="#a93bd812c02e9838a8397a78cabe494cf">More...</a><br/></td></tr>
<tr class="separator:a93bd812c02e9838a8397a78cabe494cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcd266a7fd72165ffeb2e25159374889"><td class="memItemLeft" align="right" valign="top">uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#afcd266a7fd72165ffeb2e25159374889">out_buffer_</a></td></tr>
<tr class="separator:afcd266a7fd72165ffeb2e25159374889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82fbdfbac9ea0b9d14004ebb0e501058"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1Codec.html#a82fbdfbac9ea0b9d14004ebb0e501058">buffer_length_</a></td></tr>
<tr class="memdesc:a82fbdfbac9ea0b9d14004ebb0e501058"><td class="mdescLeft">&#160;</td><td class="mdescRight">Length of the output buffer. <a href="#a82fbdfbac9ea0b9d14004ebb0e501058">More...</a><br/></td></tr>
<tr class="separator:a82fbdfbac9ea0b9d14004ebb0e501058"><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>Create a compression object. This is the base class for all compression algorithms. A compression algorithm is either a compressor or a decompressor. To add a new algorithm, generally, both a compressor and a decompressor will be added. Each of these objects inherits from this class. The objects are instantiated in the Create static methods defined here. The type of compression is defined in the Thrift interface THdfsCompression. TODO: make this pure virtual (no members) so that external codecs (e.g. Lzo) can implement this without binary dependency issues. TODO: this interface is clunky. There should be one class that implements both the compress and decompress APIs so remove duplication. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00041">41</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a26c0d38f6ee196ba8191b32e76765549"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::map&lt;const std::string, const THdfsCompression::type&gt; <a class="el" href="classimpala_1_1Codec.html#a26c0d38f6ee196ba8191b32e76765549">impala::Codec::CodecMap</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Map from codec string to compression format. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00051">51</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a72f5d471b61e14dd058a3a68cfc65772"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual impala::Codec::~Codec </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 class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="codec_8h_source.html#l00089">89</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6c6ea5e7ee2ad71a1f33ce12dc498c8f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Codec::Codec </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *&#160;</td>
<td class="paramname"><em>mem_pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>reuse_buffer</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">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a compression operator Inputs: mem_pool: memory pool to allocate the output buffer. If mem_pool is NULL then the caller must always preallocate *output in <a class="el" href="classimpala_1_1Codec.html#a738cd6628de0972edef858907048f777" title="Process a block of data, either compressing or decompressing it. ">ProcessBlock()</a>. reuse_buffer: if false always allocate a new buffer rather than reuse. </p>
<p>Definition at line <a class="el" href="codec_8cc_source.html#l00164">164</a> of file <a class="el" href="codec_8cc_source.html">codec.cc</a>.</p>
<p>References <a class="el" href="mem-pool_8h_source.html#l00151">impala::MemPool::mem_tracker()</a>, <a class="el" href="codec_8h_source.html#l00154">memory_pool_</a>, and <a class="el" href="codec_8h_source.html#l00158">temp_memory_pool_</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a3b0c5338bc8103a6d257e62d0954e148"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void Codec::Close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Must be called on codec before destructor for final cleanup. </p>
<p>Definition at line <a class="el" href="codec_8cc_source.html#l00174">174</a> of file <a class="el" href="codec_8cc_source.html">codec.cc</a>.</p>
<p>References <a class="el" href="mem-pool_8cc_source.html#l00161">impala::MemPool::AcquireData()</a>, <a class="el" href="codec_8h_source.html#l00154">memory_pool_</a>, and <a class="el" href="codec_8h_source.html#l00158">temp_memory_pool_</a>.</p>
</div>
</div>
<a class="anchor" id="a18854cd2e08266b09600a6e559c7c6e1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::CreateCompressor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *&#160;</td>
<td class="paramname"><em>mem_pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>reuse</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">THdfsCompression::type&#160;</td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *&#160;</td>
<td class="paramname"><em>compressor</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a compressor. Input: mem_pool: the memory pool used to store the compressed data. reuse: if true the allocated buffer can be reused. format: The type of compressor to create. Output: compressor: scoped pointer to the compressor class to use. </p>
<p>Referenced by <a class="el" href="hdfs-parquet-table-writer_8cc_source.html#l00090">impala::HdfsParquetTableWriter::BaseColumnWriter::BaseColumnWriter()</a>, <a class="el" href="hdfs-sequence-table-writer_8cc_source.html#l00054">impala::HdfsSequenceTableWriter::Init()</a>, <a class="el" href="hdfs-text-table-writer_8cc_source.html#l00059">impala::HdfsTextTableWriter::Init()</a>, <a class="el" href="hdfs-avro-table-writer_8cc_source.html#l00135">impala::HdfsAvroTableWriter::Init()</a>, <a class="el" href="decompress-test_8cc_source.html#l00055">impala::DecompressorTest::RunTest()</a>, <a class="el" href="decompress-test_8cc_source.html#l00085">impala::DecompressorTest::RunTestStreaming()</a>, <a class="el" href="row-batch_8cc_source.html#l00147">impala::RowBatch::Serialize()</a>, <a class="el" href="decompress-test_8cc_source.html#l00234">impala::TEST_F()</a>, and <a class="el" href="compression-test_8cc_source.html#l00032">impala::TestCompression()</a>.</p>
</div>
</div>
<a class="anchor" id="a9fa85c3a081ddace522b35468e2e000d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::CreateCompressor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *&#160;</td>
<td class="paramname"><em>mem_pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>reuse</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>codec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *&#160;</td>
<td class="paramname"><em>compressor</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Alternate factory method: takes a codec string and populates a scoped pointer. </p>
</div>
</div>
<a class="anchor" id="a0d8e74ac086a91c1cc7dbd7fe166f307"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::CreateDecompressor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *&#160;</td>
<td class="paramname"><em>mem_pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>reuse</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">THdfsCompression::type&#160;</td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *&#160;</td>
<td class="paramname"><em>decompressor</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a decompressor. Input: mem_pool: the memory pool used to store the decompressed data. reuse: if true the allocated buffer can be reused. format: the type of decompressor to create. Output: decompressor: scoped pointer to the decompressor class to use. If mem_pool is NULL, then the resulting codec will never allocate memory and the caller must be responsible for it. </p>
<p>Referenced by <a class="el" href="hdfs-rcfile-scanner_8cc_source.html#l00068">impala::HdfsRCFileScanner::InitNewRange()</a>, <a class="el" href="hdfs-parquet-scanner_8cc_source.html#l00145">impala::HdfsParquetScanner::BaseColumnReader::Reset()</a>, <a class="el" href="row-batch_8cc_source.html#l00057">impala::RowBatch::RowBatch()</a>, <a class="el" href="decompress-test_8cc_source.html#l00055">impala::DecompressorTest::RunTest()</a>, <a class="el" href="decompress-test_8cc_source.html#l00085">impala::DecompressorTest::RunTestStreaming()</a>, and <a class="el" href="hdfs-scanner_8cc_source.html#l00513">impala::HdfsScanner::UpdateDecompressor()</a>.</p>
</div>
</div>
<a class="anchor" id="a20a8fa5486acc65b9d33ce0fbccf4829"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::CreateDecompressor </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a> *&#160;</td>
<td class="paramname"><em>mem_pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>reuse</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>codec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Codec.html">Codec</a> &gt; *&#160;</td>
<td class="paramname"><em>decompressor</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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Alternate factory method: takes a codec string and populates a scoped pointer. </p>
</div>
</div>
<a class="anchor" id="a0fecfd76fe1a35dd03bf94155a62a4ad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::string impala::Codec::file_extension </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>File extension to use for this compression codec. </p>
<p>Implemented in <a class="el" href="classimpala_1_1Lz4Compressor.html#a238906358ecf355611a364543bac8371">impala::Lz4Compressor</a>, <a class="el" href="classimpala_1_1SnappyBlockDecompressor.html#a1c4c7b0108f0b436d2400b39586290a9">impala::SnappyBlockDecompressor</a>, <a class="el" href="classimpala_1_1SnappyCompressor.html#a3622a1277352b5cdf2d687763654b2b2">impala::SnappyCompressor</a>, <a class="el" href="classimpala_1_1Lz4Decompressor.html#a7424206dc6ad772488122262fdd0b76d">impala::Lz4Decompressor</a>, <a class="el" href="classimpala_1_1SnappyBlockCompressor.html#a97c5380650cdf704549328e6932b50cf">impala::SnappyBlockCompressor</a>, <a class="el" href="classimpala_1_1SnappyDecompressor.html#a8499b34de33696336ff0863b5130320b">impala::SnappyDecompressor</a>, <a class="el" href="classimpala_1_1BzipCompressor.html#ac3f354f83c47dab761954b1025eab2c8">impala::BzipCompressor</a>, <a class="el" href="classimpala_1_1BzipDecompressor.html#acf1278767c0a94c8863b1ef7a2a29416">impala::BzipDecompressor</a>, <a class="el" href="classimpala_1_1GzipCompressor.html#af02026522e9b13ea6a6f1a5f4fae43ea">impala::GzipCompressor</a>, and <a class="el" href="classimpala_1_1GzipDecompressor.html#a95d1cf346b1999837c63d6ca1ed3ae3f">impala::GzipDecompressor</a>.</p>
</div>
</div>
<a class="anchor" id="a8e34e69fbf492c3c03cd417f68f75bd4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">string Codec::GetCodecName </td>
<td>(</td>
<td class="paramtype">THdfsCompression::type&#160;</td>
<td class="paramname"><em>type</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the name of a compression algorithm. </p>
<p>Definition at line <a class="el" href="codec_8cc_source.html#l00050">50</a> of file <a class="el" href="codec_8cc_source.html">codec.cc</a>.</p>
<p>Referenced by <a class="el" href="hdfs-parquet-table-writer_8cc_source.html#l00635">impala::HdfsParquetTableWriter::Init()</a>.</p>
</div>
</div>
<a class="anchor" id="ab105a8417870709e0636d503977ec02c"></a>
<div class="memitem">
<div class="memproto">
<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> Codec::GetHadoopCodecClassName </td>
<td>(</td>
<td class="paramtype">THdfsCompression::type&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string *&#160;</td>
<td class="paramname"><em>out_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">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the java class name for the given compression type. </p>
<p>Definition at line <a class="el" href="codec_8cc_source.html#l00059">59</a> of file <a class="el" href="codec_8cc_source.html">codec.cc</a>.</p>
<p>References <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>.</p>
<p>Referenced by <a class="el" href="hdfs-sequence-table-writer_8cc_source.html#l00054">impala::HdfsSequenceTableWriter::Init()</a>.</p>
</div>
</div>
<a class="anchor" id="aaa957a37b16d1e65b7f62ca67aa7381a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::Init </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the codec. This should only be called once. </p>
<p>Implemented in <a class="el" href="classimpala_1_1Lz4Compressor.html#a01e82d88326743433c89d8f5ed0feb3e">impala::Lz4Compressor</a>, <a class="el" href="classimpala_1_1SnappyBlockDecompressor.html#ac1b2fccc05369ae3e402296d6433d102">impala::SnappyBlockDecompressor</a>, <a class="el" href="classimpala_1_1SnappyCompressor.html#a9b1222cbf0d3e6b5f7fcc16614eef3b8">impala::SnappyCompressor</a>, <a class="el" href="classimpala_1_1Lz4Decompressor.html#a7dfaf8d5afb5e09288b5fd8e4dba6347">impala::Lz4Decompressor</a>, <a class="el" href="classimpala_1_1SnappyBlockCompressor.html#abb38df2987c8a780d082f8a79a722137">impala::SnappyBlockCompressor</a>, <a class="el" href="classimpala_1_1SnappyDecompressor.html#ac00ad169cea29d12e56c056bae467017">impala::SnappyDecompressor</a>, <a class="el" href="classimpala_1_1BzipCompressor.html#a3eff9b57796dc672a18f806804157d04">impala::BzipCompressor</a>, <a class="el" href="classimpala_1_1BzipDecompressor.html#aa5c852a222813becda06d4a329cf9a5c">impala::BzipDecompressor</a>, <a class="el" href="classimpala_1_1GzipCompressor.html#a888cba365a50c5927a0c9dcb0ad51623">impala::GzipCompressor</a>, and <a class="el" href="classimpala_1_1GzipDecompressor.html#a2e27e1fc7d43e02e2b48b9bb78db5931">impala::GzipDecompressor</a>.</p>
</div>
</div>
<a class="anchor" id="a17c8e2c231a04155601b70c363127b8c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int64_t impala::Codec::MaxOutputLen </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>input_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>input</em> = <code>NULL</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">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the maximum result length from applying the codec to input. Note this is not the exact result length, simply a bound to allow preallocating a buffer. This must be an O(1) operation (i.e. cannot read all of input). Codecs that don't support this should return -1. </p>
<p>Implemented in <a class="el" href="classimpala_1_1Lz4Compressor.html#a5c0469abf79ca28e3f7158e269b9ee2e">impala::Lz4Compressor</a>, <a class="el" href="classimpala_1_1SnappyBlockDecompressor.html#a0aa0fb233daafcc313f6e0be8dd0575f">impala::SnappyBlockDecompressor</a>, <a class="el" href="classimpala_1_1SnappyCompressor.html#a78fd52162dae257cec247d1b50f99e8e">impala::SnappyCompressor</a>, <a class="el" href="classimpala_1_1Lz4Decompressor.html#ab82dacc81c74062801099636953d455a">impala::Lz4Decompressor</a>, <a class="el" href="classimpala_1_1SnappyBlockCompressor.html#a8cdef89b1d25db62f5c1c5f82bd8f6a1">impala::SnappyBlockCompressor</a>, <a class="el" href="classimpala_1_1SnappyDecompressor.html#a0e079954029cc491ea383e6bd5eae7ae">impala::SnappyDecompressor</a>, <a class="el" href="classimpala_1_1BzipCompressor.html#a697d31cbdb596562a7f9ca70e050e478">impala::BzipCompressor</a>, <a class="el" href="classimpala_1_1BzipDecompressor.html#a7b3c707cf38b61683fb70267e76ffeaf">impala::BzipDecompressor</a>, <a class="el" href="classimpala_1_1GzipCompressor.html#a2a0b506642c5c969375a811c9ec88c68">impala::GzipCompressor</a>, and <a class="el" href="classimpala_1_1GzipDecompressor.html#a6433c26c71c0fdb82f9688324313f54c">impala::GzipDecompressor</a>.</p>
<p>Referenced by <a class="el" href="decompress-test_8cc_source.html#l00102">impala::DecompressorTest::CompressAndDecompress()</a>, and <a class="el" href="decompress-test_8cc_source.html#l00170">impala::DecompressorTest::CompressAndDecompressNoOutputAllocated()</a>.</p>
</div>
</div>
<a class="anchor" id="a738cd6628de0972edef858907048f777"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::ProcessBlock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>output_preallocated</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>input_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t *&#160;</td>
<td class="paramname"><em>output_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t **&#160;</td>
<td class="paramname"><em>output</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">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Process a block of data, either compressing or decompressing it. </p>
<p>If output_preallocated is true, *output_length must be the length of *output and data will be written directly to *output (*output must be big enough to contain the transformed output). If output_preallocated is false, *output will be allocated from the codec's mempool. In this case, a mempool must have been passed into the c'tor. In either case, *output_length will be set to the actual length of the transformed output. Inputs: input_length: length of the data to process input: data to process </p>
<p>Implemented in <a class="el" href="classimpala_1_1Lz4Compressor.html#a652378110fd1324bafccecdf1b92e4ab">impala::Lz4Compressor</a>, <a class="el" href="classimpala_1_1SnappyBlockDecompressor.html#a43ed119f147b43de0ade821ebd0b2d97">impala::SnappyBlockDecompressor</a>, <a class="el" href="classimpala_1_1SnappyCompressor.html#adb3c1543991bac0358764a0a080d75f8">impala::SnappyCompressor</a>, <a class="el" href="classimpala_1_1Lz4Decompressor.html#a2ac5eae95e0478116e0602798ffe511e">impala::Lz4Decompressor</a>, <a class="el" href="classimpala_1_1SnappyBlockCompressor.html#a0c57624dea77405a6e817292cf522bc5">impala::SnappyBlockCompressor</a>, <a class="el" href="classimpala_1_1SnappyDecompressor.html#aa505af1ca269568f1fc79484e37f7c4f">impala::SnappyDecompressor</a>, <a class="el" href="classimpala_1_1BzipCompressor.html#aec8107867adf10f1dc75cefc16f3c745">impala::BzipCompressor</a>, <a class="el" href="classimpala_1_1BzipDecompressor.html#a7b9057b22f6a91dc3abbe8bde73d3e31">impala::BzipDecompressor</a>, <a class="el" href="classimpala_1_1GzipCompressor.html#ac417f8ff89e7b8a0efea80655c91a2b9">impala::GzipCompressor</a>, and <a class="el" href="classimpala_1_1GzipDecompressor.html#aef1273f520daba6e1552371d9adf2596">impala::GzipDecompressor</a>.</p>
<p>Referenced by <a class="el" href="decompress-test_8cc_source.html#l00102">impala::DecompressorTest::CompressAndDecompress()</a>, <a class="el" href="decompress-test_8cc_source.html#l00170">impala::DecompressorTest::CompressAndDecompressNoOutputAllocated()</a>, <a class="el" href="decompress-test_8cc_source.html#l00142">impala::DecompressorTest::CompressAndStreamingDecompress()</a>, and <a class="el" href="codec_8cc_source.html#l00181">ProcessBlock32()</a>.</p>
</div>
</div>
<a class="anchor" id="a31a2678b525670dcf33d35a359dcc839"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> Codec::ProcessBlock32 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>output_preallocated</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>input_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>output_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t **&#160;</td>
<td class="paramname"><em>output</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Wrapper to the actual <a class="el" href="classimpala_1_1Codec.html#a738cd6628de0972edef858907048f777" title="Process a block of data, either compressing or decompressing it. ">ProcessBlock()</a> function. This wrapper uses lengths as ints and not int64_ts. We need to keep this interface because the Parquet thrift uses ints. See IMPALA-1116. </p>
<p>Definition at line <a class="el" href="codec_8cc_source.html#l00181">181</a> of file <a class="el" href="codec_8cc_source.html">codec.cc</a>.</p>
<p>References <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="classimpala_1_1Codec.html#a738cd6628de0972edef858907048f777">ProcessBlock()</a>, <a class="el" href="status_8h_source.html#l00242">RETURN_IF_ERROR</a>, and <a class="el" href="compiler-util_8h_source.html#l00033">UNLIKELY</a>.</p>
</div>
</div>
<a class="anchor" id="a0b7de236927fbd920e1e8647396c7175"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="classimpala_1_1Status.html">Status</a> impala::Codec::ProcessBlockStreaming </td>
<td>(</td>
<td class="paramtype">int64_t&#160;</td>
<td class="paramname"><em>input_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t *&#160;</td>
<td class="paramname"><em>input_bytes_read</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int64_t *&#160;</td>
<td class="paramname"><em>output_length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t **&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a> *&#160;</td>
<td class="paramname"><em>eos</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">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Process data like <a class="el" href="classimpala_1_1Codec.html#a738cd6628de0972edef858907048f777" title="Process a block of data, either compressing or decompressing it. ">ProcessBlock()</a>, but can consume partial input and may only produce partial output. *input_bytes_read returns the number of bytes of input that have been consumed. Even if all input has been consumed, the caller must continue calling to fetch output until *eos returns true. </p>
<p>Reimplemented in <a class="el" href="classimpala_1_1GzipDecompressor.html#a365af17fa61441862d200bc295ffc734">impala::GzipDecompressor</a>.</p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00117">117</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="decompress-test_8cc_source.html#l00142">impala::DecompressorTest::CompressAndStreamingDecompress()</a>.</p>
</div>
</div>
<a class="anchor" id="a49163565c028d44d734167bf4fa4745d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::Codec::reuse_output_buffer </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</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="codec_8h_source.html#l00135">135</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>References <a class="el" href="codec_8h_source.html#l00161">reuse_buffer_</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a82fbdfbac9ea0b9d14004ebb0e501058"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int64_t impala::Codec::buffer_length_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Length of the output buffer. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00168">168</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="decompress_8cc_source.html#l00118">impala::GzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00110">impala::GzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00217">impala::BzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00140">impala::BzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00416">impala::SnappyDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00197">impala::SnappyBlockCompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00249">impala::SnappyCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00375">impala::SnappyBlockDecompressor::ProcessBlock()</a>, and <a class="el" href="decompress_8cc_source.html#l00071">impala::GzipDecompressor::ProcessBlockStreaming()</a>.</p>
</div>
</div>
<a class="anchor" id="a686e63f6fce2c614afb0d8c5120b5a6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const char *const Codec::BZIP2_COMPRESSION = &quot;org.apache.hadoop.io.compress.BZip2Codec&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="codec_8h_source.html#l00046">46</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa8a61a59a3a8cae50a6010f5e0f21115"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classimpala_1_1Codec.html#a26c0d38f6ee196ba8191b32e76765549">Codec::CodecMap</a> Codec::CODEC_MAP</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= map_list_of</div>
<div class="line"> (<span class="stringliteral">&quot;&quot;</span>, THdfsCompression::NONE)</div>
<div class="line"> (<a class="code" href="classimpala_1_1Codec.html#a19ded9d1e31423b9a5171d19167c4799">DEFAULT_COMPRESSION</a>, THdfsCompression::DEFAULT)</div>
<div class="line"> (<a class="code" href="classimpala_1_1Codec.html#a9914b2157fa4e42d07defd7c1c428000">GZIP_COMPRESSION</a>, THdfsCompression::GZIP)</div>
<div class="line"> (<a class="code" href="classimpala_1_1Codec.html#a686e63f6fce2c614afb0d8c5120b5a6a">BZIP2_COMPRESSION</a>, THdfsCompression::BZIP2)</div>
<div class="line"> (<a class="code" href="classimpala_1_1Codec.html#a87369178706252f34de2b729503ba266">SNAPPY_COMPRESSION</a>, THdfsCompression::SNAPPY_BLOCKED)</div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="codec_8h_source.html#l00052">52</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="hdfs-sequence-scanner_8cc_source.html#l00345">impala::HdfsSequenceScanner::ReadFileHeader()</a>, and <a class="el" href="hdfs-rcfile-scanner_8cc_source.html#l00107">impala::HdfsRCFileScanner::ReadFileHeader()</a>.</p>
</div>
</div>
<a class="anchor" id="a19ded9d1e31423b9a5171d19167c4799"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const char *const Codec::DEFAULT_COMPRESSION</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div>
<div class="line"> <span class="stringliteral">&quot;org.apache.hadoop.io.compress.DefaultCodec&quot;</span></div>
</div><!-- fragment -->
<p>These are the codec string representations used in Hadoop. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00044">44</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9914b2157fa4e42d07defd7c1c428000"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const char *const Codec::GZIP_COMPRESSION = &quot;org.apache.hadoop.io.compress.GzipCodec&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="codec_8h_source.html#l00045">45</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<a class="anchor" id="a079688b7a4dde5a4e60467b449901e12"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int impala::Codec::MAX_BLOCK_SIZE = (2L * 1024 * 1024 * 1024) - 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Largest block we will compress/decompress: 2GB. We are dealing with compressed blocks that are never this big but we want to guard against a corrupt file that has the block length as some large number. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00140">140</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="decompress_8cc_source.html#l00118">impala::GzipDecompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00217">impala::BzipDecompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00416">impala::SnappyDecompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00375">impala::SnappyBlockDecompressor::ProcessBlock()</a>, and <a class="el" href="decompress_8cc_source.html#l00303">SnappyBlockDecompress()</a>.</p>
</div>
</div>
<a class="anchor" id="a375ea0ba90166ebb055a3d0c9a8936c9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1MemPool.html">MemPool</a>* impala::Codec::memory_pool_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pool to allocate the buffer to hold transformed data. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00154">154</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="codec_8cc_source.html#l00174">Close()</a>, <a class="el" href="codec_8cc_source.html#l00164">Codec()</a>, <a class="el" href="decompress_8cc_source.html#l00118">impala::GzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00110">impala::GzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00217">impala::BzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00140">impala::BzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00416">impala::SnappyDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00197">impala::SnappyBlockCompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00249">impala::SnappyCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00375">impala::SnappyBlockDecompressor::ProcessBlock()</a>, and <a class="el" href="decompress_8cc_source.html#l00071">impala::GzipDecompressor::ProcessBlockStreaming()</a>.</p>
</div>
</div>
<a class="anchor" id="afcd266a7fd72165ffeb2e25159374889"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t* impala::Codec::out_buffer_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Buffer to hold transformed data. Either passed from the caller or allocated from memory_pool_. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00165">165</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="decompress_8cc_source.html#l00118">impala::GzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00110">impala::GzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00217">impala::BzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00140">impala::BzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00416">impala::SnappyDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00197">impala::SnappyBlockCompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00249">impala::SnappyCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00375">impala::SnappyBlockDecompressor::ProcessBlock()</a>, and <a class="el" href="decompress_8cc_source.html#l00071">impala::GzipDecompressor::ProcessBlockStreaming()</a>.</p>
</div>
</div>
<a class="anchor" id="a93bd812c02e9838a8397a78cabe494cf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::Codec::reuse_buffer_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Can we reuse the output buffer or do we need to allocate on each call? </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00161">161</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="decompress_8cc_source.html#l00118">impala::GzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00110">impala::GzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00217">impala::BzipDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00140">impala::BzipCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00416">impala::SnappyDecompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00197">impala::SnappyBlockCompressor::ProcessBlock()</a>, <a class="el" href="compress_8cc_source.html#l00249">impala::SnappyCompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00375">impala::SnappyBlockDecompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00071">impala::GzipDecompressor::ProcessBlockStreaming()</a>, and <a class="el" href="codec_8h_source.html#l00135">reuse_output_buffer()</a>.</p>
</div>
</div>
<a class="anchor" id="a87369178706252f34de2b729503ba266"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const char *const Codec::SNAPPY_COMPRESSION = &quot;org.apache.hadoop.io.compress.SnappyCodec&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="codec_8h_source.html#l00047">47</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7ec5c623611416c9a873ea242d0d5035"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::scoped_ptr&lt;<a class="el" href="classimpala_1_1MemPool.html">MemPool</a>&gt; impala::Codec::temp_memory_pool_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Temporary memory pool: in case we get the output size too small we can use this to free unused buffers. </p>
<p>Definition at line <a class="el" href="codec_8h_source.html#l00158">158</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
<p>Referenced by <a class="el" href="codec_8cc_source.html#l00174">Close()</a>, <a class="el" href="codec_8cc_source.html#l00164">Codec()</a>, <a class="el" href="decompress_8cc_source.html#l00118">impala::GzipDecompressor::ProcessBlock()</a>, <a class="el" href="decompress_8cc_source.html#l00217">impala::BzipDecompressor::ProcessBlock()</a>, and <a class="el" href="compress_8cc_source.html#l00140">impala::BzipCompressor::ProcessBlock()</a>.</p>
</div>
</div>
<a class="anchor" id="a3d59e437b1f94ab1597d510af72a4939"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const char *const Codec::UNKNOWN_CODEC_ERROR</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div>
<div class="line"> <span class="stringliteral">&quot;This compression codec is currently unsupported: &quot;</span></div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="codec_8h_source.html#l00048">48</a> of file <a class="el" href="codec_8h_source.html">codec.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>be/src/util/<a class="el" href="codec_8h_source.html">codec.h</a></li>
<li>be/src/util/<a class="el" href="codec_8cc_source.html">codec.cc</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_1Codec.html">Codec</a></li>
<li class="footer">Generated on Thu May 7 2015 16:10:50 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>