blob: 19cb210d8177c7405a130ad64edb66f90bdb8f19 [file]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>iceberg-cpp: iceberg::arrow Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">iceberg-cpp
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceiceberg.html">iceberg</a></li><li class="navelem"><a class="el" href="namespaceiceberg_1_1arrow.html">arrow</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">iceberg::arrow Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Arrow-backed IO and data conversion APIs.
<a href="namespaceiceberg_1_1arrow.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiceberg_1_1arrow_1_1S3Properties.html">S3Properties</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">S3 configuration property keys for ArrowS3FileIO. <a href="structiceberg_1_1arrow_1_1S3Properties.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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ab7a1e810bcc704fe597945b32a96d894" id="r_ab7a1e810bcc704fe597945b32a96d894"><td class="memItemLeft" align="right" valign="top"><a id="ab7a1e810bcc704fe597945b32a96d894" name="ab7a1e810bcc704fe597945b32a96d894"></a>
ICEBERG_BUNDLE_EXPORT std::unique_ptr&lt; <a class="el" href="classiceberg_1_1FileIO.html">FileIO</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MakeMockFileIO</b> ()</td></tr>
<tr class="separator:ab7a1e810bcc704fe597945b32a96d894"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2aa5166871ebfd494a4bda12d751e79" id="r_ab2aa5166871ebfd494a4bda12d751e79"><td class="memItemLeft" align="right" valign="top"><a id="ab2aa5166871ebfd494a4bda12d751e79" name="ab2aa5166871ebfd494a4bda12d751e79"></a>
ICEBERG_BUNDLE_EXPORT std::unique_ptr&lt; <a class="el" href="classiceberg_1_1FileIO.html">FileIO</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MakeLocalFileIO</b> ()</td></tr>
<tr class="separator:ab2aa5166871ebfd494a4bda12d751e79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4c684c9dab81759ea6d8cd322894af3" id="r_aa4c684c9dab81759ea6d8cd322894af3"><td class="memItemLeft" align="right" valign="top">ICEBERG_BUNDLE_EXPORT <a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::unique_ptr&lt; <a class="el" href="classiceberg_1_1FileIO.html">FileIO</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceiceberg_1_1arrow.html#aa4c684c9dab81759ea6d8cd322894af3">MakeS3FileIO</a> (const std::unordered_map&lt; std::string, std::string &gt; &amp;properties={})</td></tr>
<tr class="memdesc:aa4c684c9dab81759ea6d8cd322894af3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an S3 <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a> backed by Arrow's S3FileSystem. <br /></td></tr>
<tr class="separator:aa4c684c9dab81759ea6d8cd322894af3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe534529616b1e1b86fb707c29390931" id="r_afe534529616b1e1b86fb707c29390931"><td class="memItemLeft" align="right" valign="top">ICEBERG_BUNDLE_EXPORT Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceiceberg_1_1arrow.html#afe534529616b1e1b86fb707c29390931">FinalizeS3</a> ()</td></tr>
<tr class="memdesc:afe534529616b1e1b86fb707c29390931"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalize (clean up) the Arrow S3 subsystem. <br /></td></tr>
<tr class="separator:afe534529616b1e1b86fb707c29390931"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a537b313f3b1ea07042fee34cfc08c420" id="r_a537b313f3b1ea07042fee34cfc08c420"><td class="memItemLeft" align="right" valign="top">ICEBERG_BUNDLE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceiceberg_1_1arrow.html#a537b313f3b1ea07042fee34cfc08c420">RegisterAll</a> ()</td></tr>
<tr class="memdesc:a537b313f3b1ea07042fee34cfc08c420"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register Arrow FileIOs and Arrow-backed C Data utilities. <br /></td></tr>
<tr class="separator:a537b313f3b1ea07042fee34cfc08c420"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed8332d01e16aeb3ca8c55f222856ae0" id="r_aed8332d01e16aeb3ca8c55f222856ae0"><td class="memItemLeft" align="right" valign="top"><a id="aed8332d01e16aeb3ca8c55f222856ae0" name="aed8332d01e16aeb3ca8c55f222856ae0"></a>
constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><b>EqualsIgnoreAsciiCase</b> (std::string_view left, std::string_view right)</td></tr>
<tr class="memdesc:aed8332d01e16aeb3ca8c55f222856ae0"><td class="mdescLeft">&#160;</td><td class="mdescRight">ASCII-only case-insensitive comparison: schemes are ASCII (RFC 3986), and &lt;cctype&gt; is locale-sensitive. <br /></td></tr>
<tr class="separator:aed8332d01e16aeb3ca8c55f222856ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7361a309535725b457d956293b33c76" id="r_af7361a309535725b457d956293b33c76"><td class="memItemLeft" align="right" valign="top"><a id="af7361a309535725b457d956293b33c76" name="af7361a309535725b457d956293b33c76"></a>
constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsS3Scheme</b> (std::string_view scheme)</td></tr>
<tr class="memdesc:af7361a309535725b457d956293b33c76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether a URI scheme is S3-compatible; case-insensitive, because scheme routing is. <br /></td></tr>
<tr class="separator:af7361a309535725b457d956293b33c76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a022f2be841411f9ebbe5f777ef82e588" id="r_a022f2be841411f9ebbe5f777ef82e588"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceiceberg_1_1arrow.html#a022f2be841411f9ebbe5f777ef82e588">IsS3CredentialPrefix</a> (std::string_view prefix)</td></tr>
<tr class="memdesc:a022f2be841411f9ebbe5f777ef82e588"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return whether a storage credential prefix belongs to S3. <br /></td></tr>
<tr class="separator:a022f2be841411f9ebbe5f777ef82e588"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a4dc2f2056c520e55520c47f2c6b94b37" id="r_a4dc2f2056c520e55520c47f2c6b94b37"><td class="memItemLeft" align="right" valign="top">constexpr std::array&lt; std::string_view, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceiceberg_1_1arrow.html#a4dc2f2056c520e55520c47f2c6b94b37">kS3Schemes</a> = {&quot;s3&quot;, &quot;s3a&quot;, &quot;s3n&quot;, &quot;oss&quot;}</td></tr>
<tr class="memdesc:a4dc2f2056c520e55520c47f2c6b94b37"><td class="mdescLeft">&#160;</td><td class="mdescRight">URI schemes served by the Arrow S3 <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a>, lower-case. <br /></td></tr>
<tr class="separator:a4dc2f2056c520e55520c47f2c6b94b37"><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>Arrow-backed IO and data conversion APIs. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="afe534529616b1e1b86fb707c29390931" name="afe534529616b1e1b86fb707c29390931"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe534529616b1e1b86fb707c29390931">&#9670;&#160;</a></span>FinalizeS3()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ICEBERG_BUNDLE_EXPORT Status iceberg::arrow::FinalizeS3 </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Finalize (clean up) the Arrow S3 subsystem. </p>
<p>Must be called before process exit if S3 was initialized, otherwise Arrow's static destructors may cause a non-zero exit. </p>
</div>
</div>
<a id="a022f2be841411f9ebbe5f777ef82e588" name="a022f2be841411f9ebbe5f777ef82e588"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a022f2be841411f9ebbe5f777ef82e588">&#9670;&#160;</a></span>IsS3CredentialPrefix()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr bool iceberg::arrow::IsS3CredentialPrefix </td>
<td>(</td>
<td class="paramtype">std::string_view&#160;</td>
<td class="paramname"><em>prefix</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return whether a storage credential prefix belongs to S3. </p>
<p>Accepts the bare <code>s3</code> prefix (exactly: a case variant would be stored as a key no canonicalized location can match) or a URI prefix such as <code>s3a://bucket</code>. Bare aliases such as <code>oss</code> are deliberately rejected, matching Java S3FileIO's credential filter. </p>
</div>
</div>
<a id="aa4c684c9dab81759ea6d8cd322894af3" name="aa4c684c9dab81759ea6d8cd322894af3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4c684c9dab81759ea6d8cd322894af3">&#9670;&#160;</a></span>MakeS3FileIO()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ICEBERG_BUNDLE_EXPORT <a class="el" href="namespaceiceberg.html#a9d5594e371beb516b0120e07e69d3af6">Result</a>&lt; std::unique_ptr&lt; <a class="el" href="classiceberg_1_1FileIO.html">FileIO</a> &gt; &gt; iceberg::arrow::MakeS3FileIO </td>
<td>(</td>
<td class="paramtype">const std::unordered_map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>properties</em> = <code>{}</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an S3 <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a> backed by Arrow's S3FileSystem. </p>
<p>This function initializes the S3 subsystem if not already initialized (thread-safe). The S3 initialization is cached once per process.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">properties</td><td>Configuration properties for S3 access. See <a class="el" href="structiceberg_1_1arrow_1_1S3Properties.html" title="S3 configuration property keys for ArrowS3FileIO.">S3Properties</a> for available keys (credentials, region, endpoint, timeouts, etc.). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a> instance for S3 operations, or an error if S3 is not supported. </dd></dl>
</div>
</div>
<a id="a537b313f3b1ea07042fee34cfc08c420" name="a537b313f3b1ea07042fee34cfc08c420"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a537b313f3b1ea07042fee34cfc08c420">&#9670;&#160;</a></span>RegisterAll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">ICEBERG_BUNDLE_EXPORT void iceberg::arrow::RegisterAll </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Register Arrow FileIOs and Arrow-backed C Data utilities. </p>
<p>This operation is idempotent and safe to call multiple times. </p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a4dc2f2056c520e55520c47f2c6b94b37" name="a4dc2f2056c520e55520c47f2c6b94b37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dc2f2056c520e55520c47f2c6b94b37">&#9670;&#160;</a></span>kS3Schemes</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr std::array&lt;std::string_view, 4&gt; iceberg::arrow::kS3Schemes = {&quot;s3&quot;, &quot;s3a&quot;, &quot;s3n&quot;, &quot;oss&quot;}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>URI schemes served by the Arrow S3 <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a>, lower-case. </p>
<p>Single source of truth: registration, IsS3Scheme and alias canonicalization all derive from this list, so a new alias only has to be added here.</p>
<p><code>oss</code> is served because the store is S3-compatible; see the <a class="el" href="classiceberg_1_1FileIO.html" title="Pluggable module for reading, writing, and deleting files.">FileIO</a> docs. </p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>