blob: 45c4da06cf32632052db89c945605dcb57803025 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Arrow IPC &#8212; Apache Arrow v17.0.0.dev52</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'cpp/api/ipc';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/cpp/api/ipc.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="File Formats" href="formats.html" />
<link rel="prev" title="Input / output" href="io.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev52 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../getting_started.html">Getting Started</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../build_system.html">Using Arrow C++ in your own project</a></li>
<li class="toctree-l2"><a class="reference internal" href="../conventions.html">Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/basic_arrow.html">Basic Arrow Data Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/io_tutorial.html">Arrow File I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/compute_tutorial.html">Arrow Compute</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/datasets_tutorial.html">Arrow Datasets</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../user_guide.html">User Guide</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../overview.html">High-Level Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../memory.html">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arrays.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../datatypes.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tables.html">Tabular Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="../compute.html">Compute Functions</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../gandiva.html">The Gandiva Expression Compiler</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/expr_projector_filter.html">Gandiva Expression, Projector, and Filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/external_func.html">Gandiva External Functions Development Guide</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../streaming_execution.html">Acero: A C++ streaming execution engine</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../acero/overview.html">Acero Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/user_guide.html">Acero User’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/substrait.html">Using Acero with Substrait</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/developer_guide.html">Developer’s Guide</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../io.html">Input / output and filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ipc.html">Reading and writing the Arrow IPC format</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orc.html">Reading and Writing ORC files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parquet.html">Reading and writing Parquet files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../csv.html">Reading and Writing CSV files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json.html">Reading JSON files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dataset.html">Tabular Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">Debugging code using Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../threading.html">Thread Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../opentelemetry.html">OpenTelemetry</a></li>
<li class="toctree-l2"><a class="reference internal" href="../env_vars.html">Environment Variables</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples/cmake_minimal_build.html">Minimal build using CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/compute_and_write_example.html">Compute and Write CSV Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_documentation_example.html">Arrow Datasets example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_skyhook_scan_example.html">Arrow Skyhook example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/row_columnar_conversion.html">Row to columnar conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/tuple_range_conversion.html">std::tuple-like ranges to Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/converting_recordbatch_to_tensor.html">Converting RecordBatch to Tensor</a></li>
</ul>
</li>
<li class="toctree-l1 current active has-children"><a class="reference internal" href="../api.html">API Reference</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="support.html">Programming Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="memory.html">Memory (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread.html">Thread (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="datatype.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="array.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="scalar.html">Scalars</a></li>
<li class="toctree-l2"><a class="reference internal" href="builder.html">Array Builders</a></li>
<li class="toctree-l2"><a class="reference internal" href="table.html">Two-dimensional Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="c_abi.html">C Interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute.html">Compute Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="acero.html">Streaming Execution (Acero)</a></li>
<li class="toctree-l2"><a class="reference internal" href="gandiva.html">Gandiva Expression Compiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="tensor.html">Tensors</a></li>
<li class="toctree-l2"><a class="reference internal" href="utilities.html">Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="async.html">Asynchronous programming</a></li>
<li class="toctree-l2"><a class="reference internal" href="io.html">Input / output</a></li>
<li class="toctree-l2 current active"><a class="current reference internal" href="#">Arrow IPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="formats.html">File Formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="cuda.html">CUDA support</a></li>
<li class="toctree-l2"><a class="reference internal" href="flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="flightsql.html">Arrow Flight SQL</a></li>
<li class="toctree-l2"><a class="reference internal" href="filesystem.html">Filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="dataset.html">Dataset</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/cookbook/cpp/">C++ cookbook</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">C++ Implementation</a></li>
<li class="breadcrumb-item"><a href="../api.html" class="nav-link">API Reference</a></li>
<li class="breadcrumb-item active" aria-current="page">Arrow IPC</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="arrow-ipc">
<h1>Arrow IPC<a class="headerlink" href="#arrow-ipc" title="Permalink to this heading">#</a></h1>
<section id="ipc-options">
<h2>IPC options<a class="headerlink" href="#ipc-options" title="Permalink to this heading">#</a></h2>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptionsE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptionsE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptionsE"></span><span id="arrow::ipc::IpcReadOptions"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">IpcReadOptions</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Options for reading Arrow IPC messages. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptions19max_recursion_depthE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptions19max_recursion_depthE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptions19max_recursion_depthE"></span><span id="arrow::ipc::IpcReadOptions::max_recursion_depth__i"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options_1afc396ded5cd90ffc0cb8192f92e5f643"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">max_recursion_depth</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">kMaxNestingDepth</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptions19max_recursion_depthE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The maximum permitted schema nesting depth. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptions11memory_poolE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptions11memory_poolE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptions11memory_poolE"></span><span id="arrow::ipc::IpcReadOptions::memory_pool__MemoryPoolP"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options_1a911b72da5d76473d602889db59a01491"></span><a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">memory_pool</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptions11memory_poolE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The memory pool to use for allocations made during IPC reading. </p>
<p>While Arrow IPC is predominantly zero-copy, it may have to allocate memory in some cases (for example if compression is enabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptions15included_fieldsE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptions15included_fieldsE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptions15included_fieldsE"></span><span id="arrow::ipc::IpcReadOptions::included_fields__std::vector:i:"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options_1a22e99e85e4650c023285a189d299b3a9"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="kt"><span class="pre">int</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">included_fields</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptions15included_fieldsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Top-level schema fields to include when deserializing <a class="reference internal" href="table.html#classarrow_1_1_record_batch"><span class="std std-ref">RecordBatch</span></a>. </p>
<p>If empty (the default), return all deserialized fields. If non-empty, the values are the indices of fields in the top-level schema. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptions11use_threadsE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptions11use_threadsE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptions11use_threadsE"></span><span id="arrow::ipc::IpcReadOptions::use_threads__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options_1aa8ce498216e5b49121acd65d34112267"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">use_threads</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptions11use_threadsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Use global CPU thread pool to parallelize any computational tasks like decompression. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptions20ensure_native_endianE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptions20ensure_native_endianE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptions20ensure_native_endianE"></span><span id="arrow::ipc::IpcReadOptions::ensure_native_endian__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options_1a505bb499a1edaea9082ad0d95ccfa28d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ensure_native_endian</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptions20ensure_native_endianE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether to convert incoming data to platform-native endianness. </p>
<p>If the endianness of the received schema is not equal to platform-native endianness, then all buffers with endian-sensitive data will be byte-swapped. This includes the value buffers of numeric types, temporal types, decimal types, as well as the offset buffers of variable-sized binary and list-like types.</p>
<p>Endianness conversion is achieved by the <a class="reference internal" href="#classarrow_1_1ipc_1_1_record_batch_file_reader"><span class="std std-ref">RecordBatchFileReader</span></a>, <a class="reference internal" href="#classarrow_1_1ipc_1_1_record_batch_stream_reader"><span class="std std-ref">RecordBatchStreamReader</span></a> and <a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder"><span class="std std-ref">StreamDecoder</span></a> classes. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc14IpcReadOptions24pre_buffer_cache_optionsE">
<span id="_CPPv3N5arrow3ipc14IpcReadOptions24pre_buffer_cache_optionsE"></span><span id="_CPPv2N5arrow3ipc14IpcReadOptions24pre_buffer_cache_optionsE"></span><span id="arrow::ipc::IpcReadOptions::pre_buffer_cache_options__io::CacheOptions"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_read_options_1afae7487f7a7c20ae0ceb240e721cfa96"></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">CacheOptions</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">pre_buffer_cache_options</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">CacheOptions</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">LazyDefaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc14IpcReadOptions24pre_buffer_cache_optionsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Options to control caching behavior when pre-buffering is requested. </p>
<p>The lazy property will always be reset to true to deliver the expected behavior </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptionsE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptionsE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptionsE"></span><span id="arrow::ipc::IpcWriteOptions"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">IpcWriteOptions</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptionsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Options for writing Arrow IPC messages. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions11allow_64bitE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions11allow_64bitE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions11allow_64bitE"></span><span id="arrow::ipc::IpcWriteOptions::allow_64bit__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a069711feb5a9230774f8ac0f1d1ffa0d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">allow_64bit</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions11allow_64bitE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>If true, allow field lengths that don’t fit in a signed 32-bit int. </p>
<p>Some implementations may not be able to parse streams created with this option. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions19max_recursion_depthE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions19max_recursion_depthE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions19max_recursion_depthE"></span><span id="arrow::ipc::IpcWriteOptions::max_recursion_depth__i"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a6602365f423aee8557b80e5826dbd20f"></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">max_recursion_depth</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">kMaxNestingDepth</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions19max_recursion_depthE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The maximum permitted schema nesting depth. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions9alignmentE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions9alignmentE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions9alignmentE"></span><span id="arrow::ipc::IpcWriteOptions::alignment__int32_t"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a0cacd69067efc1a1530c02059b2ca931"></span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">alignment</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">8</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions9alignmentE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write padding after memory buffers up to this multiple of bytes. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions23write_legacy_ipc_formatE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions23write_legacy_ipc_formatE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions23write_legacy_ipc_formatE"></span><span id="arrow::ipc::IpcWriteOptions::write_legacy_ipc_format__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a8502278af861038dcb9a910324b07903"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">write_legacy_ipc_format</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions23write_legacy_ipc_formatE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the pre-0.15.0 IPC message format. </p>
<p>This legacy format consists of a 4-byte prefix instead of 8-byte. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions11memory_poolE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions11memory_poolE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions11memory_poolE"></span><span id="arrow::ipc::IpcWriteOptions::memory_pool__MemoryPoolP"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a09ddce1594c5400ede80e8896c64c884"></span><a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">memory_pool</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions11memory_poolE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The memory pool to use for allocations made during IPC writing. </p>
<p>While Arrow IPC is predominantly zero-copy, it may have to allocate memory in some cases (for example if compression is enabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions5codecE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions5codecE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions5codecE"></span><span id="arrow::ipc::IpcWriteOptions::codec__std::shared_ptr:util::Codec:"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1ad60accbc93465c5b525774f4ad75ff53"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">util</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="utilities.html#_CPPv4N5arrow4util5CodecE" title="arrow::util::Codec"><span class="n"><span class="pre">Codec</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">codec</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions5codecE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Compression codec to use for record batch body buffers. </p>
<p>May only be UNCOMPRESSED, LZ4_FRAME and ZSTD. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions17min_space_savingsE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions17min_space_savingsE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions17min_space_savingsE"></span><span id="arrow::ipc::IpcWriteOptions::min_space_savings__std::optional:double:"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1aae1963cb29a1f5f12a211c04a6986729"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">optional</span></span><span class="p"><span class="pre">&lt;</span></span><span class="kt"><span class="pre">double</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">min_space_savings</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions17min_space_savingsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Minimum space savings percentage required for compression to be applied. </p>
<p>Space savings is calculated as (1.0 - compressed_size / uncompressed_size).</p>
<p>For example, if min_space_savings = 0.1, a 100-byte body buffer won’t undergo compression if its expected compressed size exceeds 90 bytes. If this option is unset, compression will be used indiscriminately. If no codec was supplied, this option is ignored.</p>
<p>Values outside of the range [0,1] are handled as errors.</p>
<p>Note that enabling this option may result in unreadable data for Arrow C++ versions prior to 12.0.0. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions11use_threadsE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions11use_threadsE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions11use_threadsE"></span><span id="arrow::ipc::IpcWriteOptions::use_threads__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1ab5b5e0a22c7cff37a2345b5cdeb9e91e"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">use_threads</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions11use_threadsE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Use global CPU thread pool to parallelize any computational tasks like compression. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions22emit_dictionary_deltasE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions22emit_dictionary_deltasE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions22emit_dictionary_deltasE"></span><span id="arrow::ipc::IpcWriteOptions::emit_dictionary_deltas__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a19eedfb9ba4d1c0bd113a7cf1ea2ee22"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">emit_dictionary_deltas</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions22emit_dictionary_deltasE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether to emit dictionary deltas. </p>
<p>If false, a changed dictionary for a given field will emit a full dictionary replacement. If true, a changed dictionary will be compared against the previous version. If possible, a dictionary delta will be emitted, otherwise a full dictionary replacement.</p>
<p>Default is false to maximize stream compatibility.</p>
<p>Also, note that if a changed dictionary is a nested dictionary, then a delta is never emitted, for compatibility with the read path. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions18unify_dictionariesE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions18unify_dictionariesE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions18unify_dictionariesE"></span><span id="arrow::ipc::IpcWriteOptions::unify_dictionaries__b"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1a53e17d6b350409e3c24185654b3fa87b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">unify_dictionaries</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions18unify_dictionariesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Whether to unify dictionaries for the IPC file format. </p>
<p>The IPC file format doesn’t support dictionary replacements. Therefore, chunks of a column with a dictionary type must have the same dictionary in each record batch (or an extended dictionary + delta).</p>
<p>If this option is true, <a class="reference internal" href="#classarrow_1_1ipc_1_1_record_batch_writer_1ad1d588a01d6e03df40baa283d207d00c"><span class="std std-ref">RecordBatchWriter::WriteTable</span></a> will attempt to unify dictionaries across each table column. If this option is false, incompatible dictionaries across a table column will simply raise an error.</p>
<p>Note that enabling this option has a runtime cost. Also, not all types currently support dictionary unification.</p>
<p>This option is ignored for IPC streams, which support dictionary replacement and deltas. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc15IpcWriteOptions16metadata_versionE">
<span id="_CPPv3N5arrow3ipc15IpcWriteOptions16metadata_versionE"></span><span id="_CPPv2N5arrow3ipc15IpcWriteOptions16metadata_versionE"></span><span id="arrow::ipc::IpcWriteOptions::metadata_version__MetadataVersion"></span><span class="target" id="structarrow_1_1ipc_1_1_ipc_write_options_1af4b13bf8943b951fdf7efb51d9c22257"></span><span class="n"><span class="pre">MetadataVersion</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">metadata_version</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">MetadataVersion</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">V5</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc15IpcWriteOptions16metadata_versionE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Format version to use for IPC messages and their metadata. </p>
<p>Presently using V5 version (readable by 1.0.0 and later). V4 is also available (readable by 0.8.0 and later). </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="reading-ipc-streams-and-files">
<h2>Reading IPC streams and files<a class="headerlink" href="#reading-ipc-streams-and-files" title="Permalink to this heading">#</a></h2>
<section id="blocking-api">
<h3>Blocking API<a class="headerlink" href="#blocking-api" title="Permalink to this heading">#</a></h3>
<p>Use either of these two classes, depending on which IPC format you want
to read. The file format requires a random-access file, while the stream
format only requires a sequential input stream.</p>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc23RecordBatchStreamReaderE">
<span id="_CPPv3N5arrow3ipc23RecordBatchStreamReaderE"></span><span id="_CPPv2N5arrow3ipc23RecordBatchStreamReaderE"></span><span id="arrow::ipc::RecordBatchStreamReader"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_stream_reader"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RecordBatchStreamReader</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="table.html#_CPPv4N5arrow17RecordBatchReaderE" title="arrow::RecordBatchReader"><span class="n"><span class="pre">RecordBatchReader</span></span></a><a class="headerlink" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReaderE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Synchronous batch stream reader that reads from <a class="reference internal" href="io.html#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">io::InputStream</span></a>. </p>
<p>This class reads the schema (plus any dictionaries) as the first messages in the stream, followed by record batches. For more granular zero-copy reads see the ReadRecordBatch functions </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc23RecordBatchStreamReader5statsEv">
<span id="_CPPv3NK5arrow3ipc23RecordBatchStreamReader5statsEv"></span><span id="_CPPv2NK5arrow3ipc23RecordBatchStreamReader5statsEv"></span><span id="arrow::ipc::RecordBatchStreamReader::statsC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_stream_reader_1a5ba2d178d55a254af916b79d4a5973b9"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc9ReadStatsE" title="arrow::ipc::ReadStats"><span class="n"><span class="pre">ReadStats</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">stats</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc23RecordBatchStreamReader5statsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return current read statistics. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc23RecordBatchStreamReader4OpenENSt10unique_ptrI13MessageReaderEERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc23RecordBatchStreamReader4OpenENSt10unique_ptrI13MessageReaderEERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc23RecordBatchStreamReader4OpenENSt10unique_ptrI13MessageReaderEERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchStreamReader::Open__std::unique_ptr:MessageReader:.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_stream_reader_1a3a1ef2b3139bc893318605ca388af191"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReaderE" title="arrow::ipc::RecordBatchStreamReader"><span class="n"><span class="pre">RecordBatchStreamReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">MessageReader</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">message_reader</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReader4OpenENSt10unique_ptrI13MessageReaderEERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create batch reader from generic MessageReader. </p>
<p>This will take ownership of the given MessageReader.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message_reader</strong><strong>[in]</strong> a MessageReader implementation </p></li>
<li><p><strong>options</strong><strong>[in]</strong> any IPC reading options (optional) </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the created batch reader </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc23RecordBatchStreamReader4OpenEPN2io11InputStreamERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc23RecordBatchStreamReader4OpenEPN2io11InputStreamERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc23RecordBatchStreamReader4OpenEPN2io11InputStreamERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchStreamReader::Open__io::InputStreamP.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_stream_reader_1a79891df86cbcaf792c78eedffbd31279"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReaderE" title="arrow::ipc::RecordBatchStreamReader"><span class="n"><span class="pre">RecordBatchStreamReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">stream</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReader4OpenEPN2io11InputStreamERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Record batch stream reader from InputStream. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>stream</strong><strong>[in]</strong> an input stream instance. Must stay alive throughout lifetime of stream reader </p></li>
<li><p><strong>options</strong><strong>[in]</strong> any IPC reading options (optional) </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the created batch reader </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc23RecordBatchStreamReader4OpenERKNSt10shared_ptrIN2io11InputStreamEEERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc23RecordBatchStreamReader4OpenERKNSt10shared_ptrIN2io11InputStreamEEERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc23RecordBatchStreamReader4OpenERKNSt10shared_ptrIN2io11InputStreamEEERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchStreamReader::Open__std::shared_ptr:io::InputStream:CR.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_stream_reader_1a2a8ff4fbc26cb179c4617769fd1e5899"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReaderE" title="arrow::ipc::RecordBatchStreamReader"><span class="n"><span class="pre">RecordBatchStreamReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">stream</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc23RecordBatchStreamReader4OpenERKNSt10shared_ptrIN2io11InputStreamEEERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open stream and retain ownership of stream object. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>stream</strong><strong>[in]</strong> the input stream </p></li>
<li><p><strong>options</strong><strong>[in]</strong> any IPC reading options (optional) </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the created batch reader </p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReaderE">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReaderE"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReaderE"></span><span id="arrow::ipc::RecordBatchFileReader"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RecordBatchFileReader</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">enable_shared_from_this</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Reads the record batch file format. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc21RecordBatchFileReader6schemaEv">
<span id="_CPPv3NK5arrow3ipc21RecordBatchFileReader6schemaEv"></span><span id="_CPPv2NK5arrow3ipc21RecordBatchFileReader6schemaEv"></span><span id="arrow::ipc::RecordBatchFileReader::schemaC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a4ea846f0c45c7ae86dd81da1c21ed02f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="datatype.html#_CPPv4N5arrow6SchemaE" title="arrow::Schema"><span class="n"><span class="pre">Schema</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">schema</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc21RecordBatchFileReader6schemaEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>The schema read from the file. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc21RecordBatchFileReader18num_record_batchesEv">
<span id="_CPPv3NK5arrow3ipc21RecordBatchFileReader18num_record_batchesEv"></span><span id="_CPPv2NK5arrow3ipc21RecordBatchFileReader18num_record_batchesEv"></span><span id="arrow::ipc::RecordBatchFileReader::num_record_batchesC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a74ea326fbee08f5906dfb218900706ab"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_record_batches</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc21RecordBatchFileReader18num_record_batchesEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Returns the number of record batches in the file. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc21RecordBatchFileReader7versionEv">
<span id="_CPPv3NK5arrow3ipc21RecordBatchFileReader7versionEv"></span><span id="_CPPv2NK5arrow3ipc21RecordBatchFileReader7versionEv"></span><span id="arrow::ipc::RecordBatchFileReader::versionC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a8a0e42bdaf417dbffb5f36ca37178823"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">MetadataVersion</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">version</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc21RecordBatchFileReader7versionEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the metadata version from the file metadata. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc21RecordBatchFileReader8metadataEv">
<span id="_CPPv3NK5arrow3ipc21RecordBatchFileReader8metadataEv"></span><span id="_CPPv2NK5arrow3ipc21RecordBatchFileReader8metadataEv"></span><span id="arrow::ipc::RecordBatchFileReader::metadataC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a8f203829465396657a0ebecdcbaea68e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">metadata</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc21RecordBatchFileReader8metadataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the contents of the custom_metadata field from the file’s Footer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader15ReadRecordBatchEi">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader15ReadRecordBatchEi"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader15ReadRecordBatchEi"></span><span id="arrow::ipc::RecordBatchFileReader::ReadRecordBatch__i"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1abfd1fad49dc2fc795befd03b2024359b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="table.html#_CPPv4N5arrow11RecordBatchE" title="arrow::RecordBatch"><span class="n"><span class="pre">RecordBatch</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadRecordBatch</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">i</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader15ReadRecordBatchEi" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read a particular record batch from the file. </p>
<p>Does not copy memory if the input source supports zero-copy.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>i</strong><strong>[in]</strong> the index of the record batch to return </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the read batch </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader33ReadRecordBatchWithCustomMetadataEi">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader33ReadRecordBatchWithCustomMetadataEi"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader33ReadRecordBatchWithCustomMetadataEi"></span><span id="arrow::ipc::RecordBatchFileReader::ReadRecordBatchWithCustomMetadata__i"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a152a43722a5f9a973f9e1564f803ea7a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatchWithMetadata</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadRecordBatchWithCustomMetadata</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">i</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader33ReadRecordBatchWithCustomMetadataEi" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read a particular record batch along with its custom metadata from the file. </p>
<p>Does not copy memory if the input source supports zero-copy.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>i</strong><strong>[in]</strong> the index of the record batch to return </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>a struct containing the read batch and its custom metadata </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc21RecordBatchFileReader5statsEv">
<span id="_CPPv3NK5arrow3ipc21RecordBatchFileReader5statsEv"></span><span id="_CPPv2NK5arrow3ipc21RecordBatchFileReader5statsEv"></span><span id="arrow::ipc::RecordBatchFileReader::statsC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a2b015b4a89566fee6e6e136fd114db65"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc9ReadStatsE" title="arrow::ipc::ReadStats"><span class="n"><span class="pre">ReadStats</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">stats</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc21RecordBatchFileReader5statsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return current read statistics. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader9CountRowsEv">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader9CountRowsEv"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader9CountRowsEv"></span><span id="arrow::ipc::RecordBatchFileReader::CountRows"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a2920ae59829f7be916e208c6971bc767"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CountRows</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader9CountRowsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Computes the total number of rows in the file. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader17PreBufferMetadataERKNSt6vectorIiEE">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader17PreBufferMetadataERKNSt6vectorIiEE"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader17PreBufferMetadataERKNSt6vectorIiEE"></span><span id="arrow::ipc::RecordBatchFileReader::PreBufferMetadata__std::vector:i:CR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1ab03d7d8c10030f4740ca607af2bd800b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PreBufferMetadata</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="kt"><span class="pre">int</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">indices</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader17PreBufferMetadataERKNSt6vectorIiEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Begin loading metadata for the desired batches into memory. </p>
<p>This method will also begin loading all dictionaries messages into memory.</p>
<p>For a regular file this will immediately begin disk I/O in the background on a thread on the IOContext’s thread pool. If the file is memory mapped this will ensure the memory needed for the metadata is paged from disk into memory</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>indices</strong> – Indices of the batches to prefetch If empty then all batches will be prefetched. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader23GetRecordBatchGeneratorEKbRKN2io9IOContextEKN2io12CacheOptionsEPN5arrow8internal8ExecutorE">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader23GetRecordBatchGeneratorEKbRKN2io9IOContextEKN2io12CacheOptionsEPN5arrow8internal8ExecutorE"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader23GetRecordBatchGeneratorEKbRKN2io9IOContextEKN2io12CacheOptionsEPN5arrow8internal8ExecutorE"></span><span id="arrow::ipc::RecordBatchFileReader::GetRecordBatchGenerator__bC.io::IOContextCR.io::CacheOptionsC.arrow::internal::ExecutorP"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a062b7201c26c70cbd4158594c4eccba6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">AsyncGenerator</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="table.html#_CPPv4N5arrow11RecordBatchE" title="arrow::RecordBatch"><span class="n"><span class="pre">RecordBatch</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetRecordBatchGenerator</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">coalesce</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">IOContext</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">io_context</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">default_io_context</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">CacheOptions</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">cache_options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">CacheOptions</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">LazyDefaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span>, <span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">internal</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Executor</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">executor</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader23GetRecordBatchGeneratorEKbRKN2io9IOContextEKN2io12CacheOptionsEPN5arrow8internal8ExecutorE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Get a reentrant generator of record batches. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>coalesce</strong><strong>[in]</strong> If true, enable I/O coalescing. </p></li>
<li><p><strong>io_context</strong><strong>[in]</strong> The IOContext to use (controls which thread pool is used for I/O). </p></li>
<li><p><strong>cache_options</strong><strong>[in]</strong> Options for coalescing (if enabled). </p></li>
<li><p><strong>executor</strong><strong>[in]</strong> Optionally, an executor to use for decoding record batches. This is generally only a benefit for very wide and/or compressed batches. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader15ToRecordBatchesEv">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader15ToRecordBatchesEv"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader15ToRecordBatchesEv"></span><span id="arrow::ipc::RecordBatchFileReader::ToRecordBatches"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a0367c57724f42c1ab49661ac40de836c"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatchVector</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToRecordBatches</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader15ToRecordBatchesEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Collect all batches as a vector of record batches. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader7ToTableEv">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader7ToTableEv"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader7ToTableEv"></span><span id="arrow::ipc::RecordBatchFileReader::ToTable"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1afef6c4dde3d3d2df3cd043a6f8e05489"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="table.html#_CPPv4N5arrow5TableE" title="arrow::Table"><span class="n"><span class="pre">Table</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ToTable</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader7ToTableEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Collect all batches and concatenate as <a class="reference internal" href="table.html#classarrow_1_1_table"><span class="std std-ref">arrow::Table</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::Open__io::RandomAccessFileP.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a0aea6c88ca401308475e96e72f3433f5"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a <a class="reference internal" href="#classarrow_1_1ipc_1_1_record_batch_file_reader"><span class="std std-ref">RecordBatchFileReader</span></a>. </p>
<p>Open a file-like object that is assumed to be self-contained; i.e., the end of the file interface is the end of the Arrow file. Note that there can be any amount of data preceding the Arrow-formatted data, because we need only locate the end of the Arrow file stream to discover the metadata and then proceed to read the data into memory. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::Open__io::RandomAccessFileP.int64_t.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a01a15be3b2898c6c8c1e6c1466f39dd4"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">footer_offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a <a class="reference internal" href="#classarrow_1_1ipc_1_1_record_batch_file_reader"><span class="std std-ref">RecordBatchFileReader</span></a> If the file is embedded within some larger file or memory region, you can pass the absolute memory offset to the end of the file (which contains the metadata footer). </p>
<p>The metadata must have been written with memory offsets relative to the start of the containing file</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>file</strong><strong>[in]</strong> the data source </p></li>
<li><p><strong>footer_offset</strong><strong>[in]</strong> the position of the end of the Arrow file </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for IPC reading </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the returned reader </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::Open__std::shared_ptr:io::RandomAccessFile:CR.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a8588ab178da86959fd9e8759baf78005"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Version of Open that retains ownership of file. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>file</strong><strong>[in]</strong> the data source </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for IPC reading </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the returned reader </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::Open__std::shared_ptr:io::RandomAccessFile:CR.int64_t.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a2c4fd24d1b172be479d16a50ea16d2fb"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">footer_offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader4OpenERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Version of Open that retains ownership of file. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>file</strong><strong>[in]</strong> the data source </p></li>
<li><p><strong>footer_offset</strong><strong>[in]</strong> the position of the end of the Arrow file </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for IPC reading </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the returned reader </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::OpenAsync__std::shared_ptr:io::RandomAccessFile:CR.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1ab84c8b0fb6ac1aaf527125595bd14d56"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OpenAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a file asynchronously (owns the file). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileERK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileERK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileERK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::OpenAsync__io::RandomAccessFileP.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a8751147ea9f29464f7eb74491d61ea03"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OpenAsync</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileERK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a file asynchronously (borrows the file). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::OpenAsync__std::shared_ptr:io::RandomAccessFile:CR.int64_t.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a80fb83a5a9b89792f2b0c1fab62cbd02"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OpenAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">footer_offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncERKNSt10shared_ptrIN2io16RandomAccessFileEEE7int64_tRK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a file asynchronously (owns the file). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions"></span><span id="arrow::ipc::RecordBatchFileReader::OpenAsync__io::RandomAccessFileP.int64_t.IpcReadOptionsCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_file_reader_1a3a1d765c32da2da89fdb7c29a7144671"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc21RecordBatchFileReaderE" title="arrow::ipc::RecordBatchFileReader"><span class="n"><span class="pre">RecordBatchFileReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OpenAsync</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="io.html#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">file</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">footer_offset</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc21RecordBatchFileReader9OpenAsyncEPN2io16RandomAccessFileE7int64_tRK14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a file asynchronously (borrows the file). </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="event-driven-api">
<h3>Event-driven API<a class="headerlink" href="#event-driven-api" title="Permalink to this heading">#</a></h3>
<p>To read an IPC stream in event-driven fashion, you must implement a
<a class="reference internal" href="#_CPPv4N5arrow3ipc8ListenerE" title="arrow::ipc::Listener"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">Listener</span></code></a> subclass that you will pass to
<a class="reference internal" href="#_CPPv4N5arrow3ipc13StreamDecoderE" title="arrow::ipc::StreamDecoder"><code class="xref cpp cpp-class docutils literal notranslate"><span class="pre">StreamDecoder</span></code></a>.</p>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc8ListenerE">
<span id="_CPPv3N5arrow3ipc8ListenerE"></span><span id="_CPPv2N5arrow3ipc8ListenerE"></span><span id="arrow::ipc::Listener"></span><span class="target" id="classarrow_1_1ipc_1_1_listener"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Listener</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc8ListenerE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A general listener class to receive events. </p>
<p>You must implement callback methods for interested events.</p>
<p>This API is EXPERIMENTAL.</p>
<p><dl class="simple">
<dt><strong>Since</strong></dt><dd><p>0.17.0 </p>
</dd>
</dl>
</p>
<p>Subclassed by arrow::ipc::CollectListener</p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc8Listener5OnEOSEv">
<span id="_CPPv3N5arrow3ipc8Listener5OnEOSEv"></span><span id="_CPPv2N5arrow3ipc8Listener5OnEOSEv"></span><span id="arrow::ipc::Listener::OnEOS"></span><span class="target" id="classarrow_1_1ipc_1_1_listener_1a4484c1f30a7873c8c9db24180ab68915"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OnEOS</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc8Listener5OnEOSEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Called when end-of-stream is received. </p>
<p>The default implementation just returns <a class="reference internal" href="support.html#classarrow_1_1_status_1a5c0b0031db6eeec3dcc70485d24cfe03"><span class="std std-ref">arrow::Status::OK()</span></a>.</p>
<p><div class="admonition seealso">
<p class="admonition-title">See also</p>
<p><a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder"><span class="std std-ref">StreamDecoder</span></a></p>
</div>
</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc8Listener20OnRecordBatchDecodedENSt10shared_ptrI11RecordBatchEE">
<span id="_CPPv3N5arrow3ipc8Listener20OnRecordBatchDecodedENSt10shared_ptrI11RecordBatchEE"></span><span id="_CPPv2N5arrow3ipc8Listener20OnRecordBatchDecodedENSt10shared_ptrI11RecordBatchEE"></span><span id="arrow::ipc::Listener::OnRecordBatchDecoded__std::shared_ptr:RecordBatch:"></span><span class="target" id="classarrow_1_1ipc_1_1_listener_1aee30e5b08a255a8a8be87f59b3e17417"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OnRecordBatchDecoded</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="table.html#_CPPv4N5arrow11RecordBatchE" title="arrow::RecordBatch"><span class="n"><span class="pre">RecordBatch</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">record_batch</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc8Listener20OnRecordBatchDecodedENSt10shared_ptrI11RecordBatchEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Called when a record batch is decoded and <a class="reference internal" href="#classarrow_1_1ipc_1_1_listener_1a32de1e2c0ffc2e8bc09d7f69a8237a03"><span class="std std-ref">OnRecordBatchWithMetadataDecoded()</span></a> isn’t overridden. </p>
<p>The default implementation just returns <a class="reference internal" href="support.html#classarrow_1_1_status_1ae63ddaaa7db5edef4e75a26b693351a1"><span class="std std-ref">arrow::Status::NotImplemented()</span></a>.</p>
<p><div class="admonition seealso">
<p class="admonition-title">See also</p>
<p><a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder"><span class="std std-ref">StreamDecoder</span></a></p>
</div>
</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>record_batch</strong><strong>[in]</strong> a record batch decoded </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc8Listener32OnRecordBatchWithMetadataDecodedE23RecordBatchWithMetadata">
<span id="_CPPv3N5arrow3ipc8Listener32OnRecordBatchWithMetadataDecodedE23RecordBatchWithMetadata"></span><span id="_CPPv2N5arrow3ipc8Listener32OnRecordBatchWithMetadataDecodedE23RecordBatchWithMetadata"></span><span id="arrow::ipc::Listener::OnRecordBatchWithMetadataDecoded__RecordBatchWithMetadata"></span><span class="target" id="classarrow_1_1ipc_1_1_listener_1a32de1e2c0ffc2e8bc09d7f69a8237a03"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OnRecordBatchWithMetadataDecoded</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">RecordBatchWithMetadata</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">record_batch_with_metadata</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc8Listener32OnRecordBatchWithMetadataDecodedE23RecordBatchWithMetadata" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Called when a record batch with custom metadata is decoded. </p>
<p>The default implementation just calls <a class="reference internal" href="#classarrow_1_1ipc_1_1_listener_1aee30e5b08a255a8a8be87f59b3e17417"><span class="std std-ref">OnRecordBatchDecoded()</span></a> without custom metadata.</p>
<p><div class="admonition seealso">
<p class="admonition-title">See also</p>
<p><a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder"><span class="std std-ref">StreamDecoder</span></a></p>
</div>
<dl class="simple">
<dt><strong>Since</strong></dt><dd><p>13.0.0 </p>
</dd>
</dl>
</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>record_batch_with_metadata</strong><strong>[in]</strong> a record batch with custom metadata decoded </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEE">
<span id="_CPPv3N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEE"></span><span id="_CPPv2N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEE"></span><span id="arrow::ipc::Listener::OnSchemaDecoded__std::shared_ptr:Schema:"></span><span class="target" id="classarrow_1_1ipc_1_1_listener_1a18aa14c248dcc36fae10854f38f8c71e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OnSchemaDecoded</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="datatype.html#_CPPv4N5arrow6SchemaE" title="arrow::Schema"><span class="n"><span class="pre">Schema</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">schema</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Called when a schema is decoded. </p>
<p>The default implementation just returns <a class="reference internal" href="support.html#classarrow_1_1_status_1a5c0b0031db6eeec3dcc70485d24cfe03"><span class="std std-ref">arrow::Status::OK()</span></a>.</p>
<p><div class="admonition seealso">
<p class="admonition-title">See also</p>
<p><a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder"><span class="std std-ref">StreamDecoder</span></a></p>
</div>
</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>schema</strong><strong>[in]</strong> a schema decoded </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEENSt10shared_ptrI6SchemaEE">
<span id="_CPPv3N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEENSt10shared_ptrI6SchemaEE"></span><span id="_CPPv2N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEENSt10shared_ptrI6SchemaEE"></span><span id="arrow::ipc::Listener::OnSchemaDecoded__std::shared_ptr:Schema:.std::shared_ptr:Schema:"></span><span class="target" id="classarrow_1_1ipc_1_1_listener_1a7f3ab17ede76d89466243eaec9603ea6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OnSchemaDecoded</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="datatype.html#_CPPv4N5arrow6SchemaE" title="arrow::Schema"><span class="n"><span class="pre">Schema</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">schema</span></span>, <span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="datatype.html#_CPPv4N5arrow6SchemaE" title="arrow::Schema"><span class="n"><span class="pre">Schema</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">filtered_schema</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc8Listener15OnSchemaDecodedENSt10shared_ptrI6SchemaEENSt10shared_ptrI6SchemaEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Called when a schema is decoded. </p>
<p>The default implementation just calls OnSchemaDecoded(schema) (without filtered_schema) to keep backward compatibility.</p>
<p><div class="admonition seealso">
<p class="admonition-title">See also</p>
<p><a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder"><span class="std std-ref">StreamDecoder</span></a></p>
</div>
<dl class="simple">
<dt><strong>Since</strong></dt><dd><p>13.0.0 </p>
</dd>
</dl>
</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>schema</strong><strong>[in]</strong> a schema decoded </p></li>
<li><p><strong>filtered_schema</strong><strong>[in]</strong> a filtered schema that only has read fields </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc13StreamDecoderE">
<span id="_CPPv3N5arrow3ipc13StreamDecoderE"></span><span id="_CPPv2N5arrow3ipc13StreamDecoderE"></span><span id="arrow::ipc::StreamDecoder"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StreamDecoder</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc13StreamDecoderE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Push style stream decoder that receives data from user. </p>
<p>This class decodes the Apache Arrow IPC streaming format data.</p>
<p>This API is EXPERIMENTAL.</p>
<p><div class="admonition seealso">
<p class="admonition-title">See also</p>
<p><a class="reference external" href="https://arrow.apache.org/docs/format/Columnar.html#ipc-streaming-format">https://arrow.apache.org/docs/format/Columnar.html#ipc-streaming-format</a></p>
</div>
<dl class="simple">
<dt><strong>Since</strong></dt><dd><p>0.17.0 </p>
</dd>
</dl>
</p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc13StreamDecoder13StreamDecoderENSt10shared_ptrI8ListenerEE14IpcReadOptions">
<span id="_CPPv3N5arrow3ipc13StreamDecoder13StreamDecoderENSt10shared_ptrI8ListenerEE14IpcReadOptions"></span><span id="_CPPv2N5arrow3ipc13StreamDecoder13StreamDecoderENSt10shared_ptrI8ListenerEE14IpcReadOptions"></span><span id="arrow::ipc::StreamDecoder::StreamDecoder__std::shared_ptr:Listener:.IpcReadOptions"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1a3011f9acb0aa2525af282bb2b49aaf10"></span><span class="sig-name descname"><span class="n"><span class="pre">StreamDecoder</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow3ipc8ListenerE" title="arrow::ipc::Listener"><span class="n"><span class="pre">Listener</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">listener</span></span>, <a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc14IpcReadOptionsE" title="arrow::ipc::IpcReadOptions"><span class="n"><span class="pre">IpcReadOptions</span></span></a><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc13StreamDecoder13StreamDecoderENSt10shared_ptrI8ListenerEE14IpcReadOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Construct a stream decoder. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>listener</strong><strong>[in]</strong> a <a class="reference internal" href="#classarrow_1_1ipc_1_1_listener"><span class="std std-ref">Listener</span></a> that must implement <a class="reference internal" href="#classarrow_1_1ipc_1_1_listener_1aee30e5b08a255a8a8be87f59b3e17417"><span class="std std-ref">Listener::OnRecordBatchDecoded()</span></a> to receive decoded record batches </p></li>
<li><p><strong>options</strong><strong>[in]</strong> any IPC reading options (optional) </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc13StreamDecoder7ConsumeEPK7uint8_t7int64_t">
<span id="_CPPv3N5arrow3ipc13StreamDecoder7ConsumeEPK7uint8_t7int64_t"></span><span id="_CPPv2N5arrow3ipc13StreamDecoder7ConsumeEPK7uint8_t7int64_t"></span><span id="arrow::ipc::StreamDecoder::Consume__uint8_tCP.int64_t"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1a2b05c37f754e13c194878e8d240542b8"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Consume</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc13StreamDecoder7ConsumeEPK7uint8_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Feed data to the decoder as a raw data. </p>
<p>If the decoder can read one or more record batches by the data, the decoder calls listener-&gt;OnRecordBatchDecoded() with a decoded record batch multiple times.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong><strong>[in]</strong> a raw data to be processed. This data isn’t copied. The passed memory must be kept alive through record batch processing. </p></li>
<li><p><strong>size</strong><strong>[in]</strong> raw data size. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc13StreamDecoder7ConsumeENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow3ipc13StreamDecoder7ConsumeENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow3ipc13StreamDecoder7ConsumeENSt10shared_ptrI6BufferEE"></span><span id="arrow::ipc::StreamDecoder::Consume__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1a79715886a8a5e3efc71b7e9107eddc98"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Consume</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc13StreamDecoder7ConsumeENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Feed data to the decoder as a <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
<p>If the decoder can read one or more record batches by the <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>, the decoder calls listener-&gt;RecordBatchReceived() with a decoded record batch multiple times.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>buffer</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> to be processed. </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc13StreamDecoder5ResetEv">
<span id="_CPPv3N5arrow3ipc13StreamDecoder5ResetEv"></span><span id="_CPPv2N5arrow3ipc13StreamDecoder5ResetEv"></span><span id="arrow::ipc::StreamDecoder::Reset"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1a130d9c7e00c36ea99d83d02fcb0d30e4"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reset</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc13StreamDecoder5ResetEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Reset the internal status. </p>
<p>You can reuse this decoder for new stream after calling this.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc13StreamDecoder6schemaEv">
<span id="_CPPv3NK5arrow3ipc13StreamDecoder6schemaEv"></span><span id="_CPPv2NK5arrow3ipc13StreamDecoder6schemaEv"></span><span id="arrow::ipc::StreamDecoder::schemaC"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1a1432cd43d83730480d2241e13835ce74"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="datatype.html#_CPPv4N5arrow6SchemaE" title="arrow::Schema"><span class="n"><span class="pre">Schema</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">schema</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc13StreamDecoder6schemaEv" title="Permalink to this definition">#</a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>the shared schema of the record batches in the stream </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc13StreamDecoder18next_required_sizeEv">
<span id="_CPPv3NK5arrow3ipc13StreamDecoder18next_required_sizeEv"></span><span id="_CPPv2NK5arrow3ipc13StreamDecoder18next_required_sizeEv"></span><span id="arrow::ipc::StreamDecoder::next_required_sizeC"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1aa8c7ac5a806a8cc89306015095b098d2"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">next_required_size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc13StreamDecoder18next_required_sizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the number of bytes needed to advance the state of the decoder. </p>
<p>This method is provided for users who want to optimize performance. Normal users don’t need to use this method.</p>
<p>Here is an example usage for normal users:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">buffer1</span><span class="p">);</span>
<span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">buffer2</span><span class="p">);</span>
<span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">buffer3</span><span class="p">);</span>
</pre></div>
</div>
<p>Decoder has internal buffer. If consumed data isn’t enough to advance the state of the decoder, consumed data is buffered to the internal buffer. It causes performance overhead.</p>
<p>If you pass <a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder_1aa8c7ac5a806a8cc89306015095b098d2"><span class="std std-ref">next_required_size()</span></a> size data to each <a class="reference internal" href="#classarrow_1_1ipc_1_1_stream_decoder_1a2b05c37f754e13c194878e8d240542b8"><span class="std std-ref">Consume()</span></a> call, the decoder doesn’t use its internal buffer. It improves performance.</p>
<p>Here is an example usage to avoid using internal buffer:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">buffer1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_data</span><span class="p">(</span><span class="n">decoder</span><span class="p">.</span><span class="n">next_required_size</span><span class="p">());</span>
<span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">buffer1</span><span class="p">);</span>
<span class="n">buffer2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_data</span><span class="p">(</span><span class="n">decoder</span><span class="p">.</span><span class="n">next_required_size</span><span class="p">());</span>
<span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">buffer2</span><span class="p">);</span>
</pre></div>
</div>
<p>Users can use this method to avoid creating small chunks. Record batch data must be contiguous data. If users pass small chunks to the decoder, the decoder needs concatenate small chunks internally. It causes performance overhead.</p>
<p>Here is an example usage to reduce small chunks:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">buffer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AllocateResizableBuffer</span><span class="p">();</span>
<span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="n">small_chunk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_data</span><span class="p">(</span><span class="o">&amp;</span><span class="n">small_chunk_size</span><span class="p">)))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">current_buffer_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">buffer</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">();</span>
<span class="w"> </span><span class="n">buffer</span><span class="o">-&gt;</span><span class="n">Resize</span><span class="p">(</span><span class="n">current_buffer_size</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">small_chunk_size</span><span class="p">);</span>
<span class="w"> </span><span class="n">memcpy</span><span class="p">(</span><span class="n">buffer</span><span class="o">-&gt;</span><span class="n">mutable_data</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">current_buffer_size</span><span class="p">,</span>
<span class="w"> </span><span class="n">small_chunk</span><span class="p">,</span>
<span class="w"> </span><span class="n">small_chunk_size</span><span class="p">);</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">buffer</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">decoder</span><span class="p">.</span><span class="n">next_required_size</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">continue</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">arrow</span><span class="o">::</span><span class="n">Buffer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">chunk</span><span class="p">(</span><span class="n">buffer</span><span class="p">.</span><span class="n">release</span><span class="p">());</span>
<span class="w"> </span><span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">chunk</span><span class="p">);</span>
<span class="w"> </span><span class="n">buffer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AllocateResizableBuffer</span><span class="p">();</span>
<span class="p">}</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">buffer</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">arrow</span><span class="o">::</span><span class="n">Buffer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">chunk</span><span class="p">(</span><span class="n">buffer</span><span class="p">.</span><span class="n">release</span><span class="p">());</span>
<span class="w"> </span><span class="n">decoder</span><span class="p">.</span><span class="n">Consume</span><span class="p">(</span><span class="n">chunk</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>the number of bytes needed to advance the state of the decoder </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc13StreamDecoder5statsEv">
<span id="_CPPv3NK5arrow3ipc13StreamDecoder5statsEv"></span><span id="_CPPv2NK5arrow3ipc13StreamDecoder5statsEv"></span><span id="arrow::ipc::StreamDecoder::statsC"></span><span class="target" id="classarrow_1_1ipc_1_1_stream_decoder_1a238b8fa539c479cb970c07fbf546db0e"></span><a class="reference internal" href="#_CPPv4N5arrow3ipc9ReadStatsE" title="arrow::ipc::ReadStats"><span class="n"><span class="pre">ReadStats</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">stats</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc13StreamDecoder5statsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return current read statistics. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="statistics">
<h3>Statistics<a class="headerlink" href="#statistics" title="Permalink to this heading">#</a></h3>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc9ReadStatsE">
<span id="_CPPv3N5arrow3ipc9ReadStatsE"></span><span id="_CPPv2N5arrow3ipc9ReadStatsE"></span><span id="arrow::ipc::ReadStats"></span><span class="target" id="structarrow_1_1ipc_1_1_read_stats"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadStats</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc9ReadStatsE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc9ReadStats12num_messagesE">
<span id="_CPPv3N5arrow3ipc9ReadStats12num_messagesE"></span><span id="_CPPv2N5arrow3ipc9ReadStats12num_messagesE"></span><span id="arrow::ipc::ReadStats::num_messages__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_read_stats_1a831c5940243fe2f5db6055d1c2693b0e"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_messages</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc9ReadStats12num_messagesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of IPC messages read. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc9ReadStats18num_record_batchesE">
<span id="_CPPv3N5arrow3ipc9ReadStats18num_record_batchesE"></span><span id="_CPPv2N5arrow3ipc9ReadStats18num_record_batchesE"></span><span id="arrow::ipc::ReadStats::num_record_batches__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_read_stats_1a1985ac978e931ee853b6ad36b442679e"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_record_batches</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc9ReadStats18num_record_batchesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of record batches read. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc9ReadStats22num_dictionary_batchesE">
<span id="_CPPv3N5arrow3ipc9ReadStats22num_dictionary_batchesE"></span><span id="_CPPv2N5arrow3ipc9ReadStats22num_dictionary_batchesE"></span><span id="arrow::ipc::ReadStats::num_dictionary_batches__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_read_stats_1ab31b8bd214938ee8ed08ecdba237715c"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_dictionary_batches</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc9ReadStats22num_dictionary_batchesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of dictionary batches read. </p>
<p>Note: num_dictionary_batches &gt;= num_dictionary_deltas + num_replaced_dictionaries </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc9ReadStats21num_dictionary_deltasE">
<span id="_CPPv3N5arrow3ipc9ReadStats21num_dictionary_deltasE"></span><span id="_CPPv2N5arrow3ipc9ReadStats21num_dictionary_deltasE"></span><span id="arrow::ipc::ReadStats::num_dictionary_deltas__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_read_stats_1a97cddf894f39f4b708353786314641dd"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_dictionary_deltas</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc9ReadStats21num_dictionary_deltasE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of dictionary deltas read. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc9ReadStats25num_replaced_dictionariesE">
<span id="_CPPv3N5arrow3ipc9ReadStats25num_replaced_dictionariesE"></span><span id="_CPPv2N5arrow3ipc9ReadStats25num_replaced_dictionariesE"></span><span id="arrow::ipc::ReadStats::num_replaced_dictionaries__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_read_stats_1afaa0eeffe0b58e206e7d710726e566d2"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_replaced_dictionaries</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc9ReadStats25num_replaced_dictionariesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of replaced dictionaries (i.e. </p>
<p>where a dictionary batch replaces an existing dictionary with an unrelated new dictionary). </p>
</dd></dl>
</div>
</dd></dl>
</section>
</section>
<section id="writing-ipc-streams-and-files">
<h2>Writing IPC streams and files<a class="headerlink" href="#writing-ipc-streams-and-files" title="Permalink to this heading">#</a></h2>
<section id="id1">
<h3>Blocking API<a class="headerlink" href="#id1" title="Permalink to this heading">#</a></h3>
<p>The IPC stream format is only optionally terminated, whereas the IPC file format
must include a terminating footer. Thus a writer of the IPC file format must be
explicitly finalized with <a class="reference internal" href="#_CPPv4N5arrow3ipc17RecordBatchWriter5CloseEv" title="arrow::ipc::RecordBatchWriter::Close"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">Close()</span></code></a> or the resulting
file will be corrupt.</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv416MakeStreamWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions">
<span id="_CPPv316MakeStreamWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions"></span><span id="_CPPv216MakeStreamWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions"></span><span id="MakeStreamWriter__io::OutputStreamP.std::shared_ptr:Schema:CR.IpcWriteOptionsCR"></span><span class="target" id="group__record-batch-writer-factories_1ga2b514aa25a5d0954b026dd7bd3b973f4"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatchWriter</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeStreamWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">OutputStream</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">sink</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Schema</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">schema</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv416MakeStreamWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a new IPC stream writer from stream sink and schema. </p>
<p>User is responsible for closing the actual OutputStream.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sink</strong><strong>[in]</strong> output stream to write to </p></li>
<li><p><strong>schema</strong><strong>[in]</strong> the schema of the record batches to be written </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for serialization </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_result"><span class="std std-ref">Result</span></a>&lt;std::shared_ptr&lt;RecordBatchWriter&gt;&gt; </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv416MakeStreamWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions">
<span id="_CPPv316MakeStreamWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions"></span><span id="_CPPv216MakeStreamWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions"></span><span id="MakeStreamWriter__std::shared_ptr:io::OutputStream:.std::shared_ptr:Schema:CR.IpcWriteOptionsCR"></span><span class="target" id="group__record-batch-writer-factories_1ga3a85310e2402e59650cc7b13f7989a51"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatchWriter</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeStreamWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">OutputStream</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">sink</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Schema</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">schema</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv416MakeStreamWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptions" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a new IPC stream writer from stream sink and schema. </p>
<p>User is responsible for closing the actual OutputStream.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sink</strong><strong>[in]</strong> output stream to write to </p></li>
<li><p><strong>schema</strong><strong>[in]</strong> the schema of the record batches to be written </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for serialization </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_result"><span class="std std-ref">Result</span></a>&lt;std::shared_ptr&lt;RecordBatchWriter&gt;&gt; </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv414MakeFileWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE">
<span id="_CPPv314MakeFileWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE"></span><span id="_CPPv214MakeFileWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE"></span><span id="MakeFileWriter__io::OutputStreamP.std::shared_ptr:Schema:CR.IpcWriteOptionsCR.std::shared_ptr:KeyValueMetadataC:CR"></span><span class="target" id="group__record-batch-writer-factories_1gaa2cfff8a11418dcdd6bb3a6ce94b3344"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatchWriter</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeFileWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">OutputStream</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">sink</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Schema</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">schema</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">KeyValueMetadata</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">metadata</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv414MakeFileWriterPN2io12OutputStreamERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a new IPC file writer from stream sink and schema. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sink</strong><strong>[in]</strong> output stream to write to </p></li>
<li><p><strong>schema</strong><strong>[in]</strong> the schema of the record batches to be written </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for serialization, optional </p></li>
<li><p><strong>metadata</strong><strong>[in]</strong> custom metadata for File Footer, optional </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_result"><span class="std std-ref">Result</span></a>&lt;std::shared_ptr&lt;RecordBatchWriter&gt;&gt; </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv414MakeFileWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE">
<span id="_CPPv314MakeFileWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE"></span><span id="_CPPv214MakeFileWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE"></span><span id="MakeFileWriter__std::shared_ptr:io::OutputStream:.std::shared_ptr:Schema:CR.IpcWriteOptionsCR.std::shared_ptr:KeyValueMetadataC:CR"></span><span class="target" id="group__record-batch-writer-factories_1ga69581a387ad6bfa8e66d7be8d725ddfd"></span><span class="n"><span class="pre">Result</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">RecordBatchWriter</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MakeFileWriter</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">OutputStream</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">sink</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">Schema</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">schema</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">IpcWriteOptions</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">Defaults</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">KeyValueMetadata</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">metadata</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">NULLPTR</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv414MakeFileWriterNSt10shared_ptrIN2io12OutputStreamEEERKNSt10shared_ptrI6SchemaEERK15IpcWriteOptionsRKNSt10shared_ptrIK16KeyValueMetadataEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a new IPC file writer from stream sink and schema. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>sink</strong><strong>[in]</strong> output stream to write to </p></li>
<li><p><strong>schema</strong><strong>[in]</strong> the schema of the record batches to be written </p></li>
<li><p><strong>options</strong><strong>[in]</strong> options for serialization, optional </p></li>
<li><p><strong>metadata</strong><strong>[in]</strong> custom metadata for File Footer, optional </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_result"><span class="std std-ref">Result</span></a>&lt;std::shared_ptr&lt;RecordBatchWriter&gt;&gt; </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc17RecordBatchWriterE">
<span id="_CPPv3N5arrow3ipc17RecordBatchWriterE"></span><span id="_CPPv2N5arrow3ipc17RecordBatchWriterE"></span><span id="arrow::ipc::RecordBatchWriter"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RecordBatchWriter</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc17RecordBatchWriterE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Abstract interface for writing a stream of record batches. </p>
<p>Subclassed by arrow::flight::MetadataRecordBatchWriter</p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatch">
<span id="_CPPv3N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatch"></span><span id="_CPPv2N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatch"></span><span id="arrow::ipc::RecordBatchWriter::WriteRecordBatch__RecordBatchCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer_1a9f8bf7d6a2fa74a05e345097aa171e6e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WriteRecordBatch</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="table.html#_CPPv4N5arrow11RecordBatchE" title="arrow::RecordBatch"><span class="n"><span class="pre">RecordBatch</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">batch</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatch" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write a record batch to the stream. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>batch</strong><strong>[in]</strong> the record batch to write to the stream </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatchRKNSt10shared_ptrIK16KeyValueMetadataEE">
<span id="_CPPv3N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatchRKNSt10shared_ptrIK16KeyValueMetadataEE"></span><span id="_CPPv2N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatchRKNSt10shared_ptrIK16KeyValueMetadataEE"></span><span id="arrow::ipc::RecordBatchWriter::WriteRecordBatch__RecordBatchCR.std::shared_ptr:KeyValueMetadataC:CR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer_1a8a2fac5a10b0f4e9269e83f24e180ab8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WriteRecordBatch</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="table.html#_CPPv4N5arrow11RecordBatchE" title="arrow::RecordBatch"><span class="n"><span class="pre">RecordBatch</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">batch</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">custom_metadata</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc17RecordBatchWriter16WriteRecordBatchERK11RecordBatchRKNSt10shared_ptrIK16KeyValueMetadataEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write a record batch with custom metadata to the stream. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>batch</strong><strong>[in]</strong> the record batch to write to the stream </p></li>
<li><p><strong>custom_metadata</strong><strong>[in]</strong> the record batch’s custom metadata to write to the stream </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table">
<span id="_CPPv3N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table"></span><span id="_CPPv2N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table"></span><span id="arrow::ipc::RecordBatchWriter::WriteTable__TableCR"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer_1ad1d588a01d6e03df40baa283d207d00c"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WriteTable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="table.html#_CPPv4N5arrow5TableE" title="arrow::Table"><span class="n"><span class="pre">Table</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">table</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write possibly-chunked table by creating sequence of record batches. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>table</strong><strong>[in]</strong> table to write </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table7int64_t">
<span id="_CPPv3N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table7int64_t"></span><span id="_CPPv2N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table7int64_t"></span><span id="arrow::ipc::RecordBatchWriter::WriteTable__TableCR.int64_t"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer_1a06c89fb76b176bcc4574dcdfc359f541"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WriteTable</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="table.html#_CPPv4N5arrow5TableE" title="arrow::Table"><span class="n"><span class="pre">Table</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">table</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">max_chunksize</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow3ipc17RecordBatchWriter10WriteTableERK5Table7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write <a class="reference internal" href="table.html#classarrow_1_1_table"><span class="std std-ref">Table</span></a> with a particular chunksize. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>table</strong><strong>[in]</strong> table to write </p></li>
<li><p><strong>max_chunksize</strong><strong>[in]</strong> maximum number of rows for table chunks. To indicate that no maximum should be enforced, pass -1. </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc17RecordBatchWriter5CloseEv">
<span id="_CPPv3N5arrow3ipc17RecordBatchWriter5CloseEv"></span><span id="_CPPv2N5arrow3ipc17RecordBatchWriter5CloseEv"></span><span id="arrow::ipc::RecordBatchWriter::Close"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer_1ad1706dac64039b5e46bf03458d65ed1a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc17RecordBatchWriter5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Perform any logic necessary to finish the stream. </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow3ipc17RecordBatchWriter5statsEv">
<span id="_CPPv3NK5arrow3ipc17RecordBatchWriter5statsEv"></span><span id="_CPPv2NK5arrow3ipc17RecordBatchWriter5statsEv"></span><span id="arrow::ipc::RecordBatchWriter::statsC"></span><span class="target" id="classarrow_1_1ipc_1_1_record_batch_writer_1a2cf6f4aaf8852e7b51c754f95237c3d7"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5arrow3ipc10WriteStatsE" title="arrow::ipc::WriteStats"><span class="n"><span class="pre">WriteStats</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">stats</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow3ipc17RecordBatchWriter5statsEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return current write statistics. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="id2">
<h3>Statistics<a class="headerlink" href="#id2" title="Permalink to this heading">#</a></h3>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStatsE">
<span id="_CPPv3N5arrow3ipc10WriteStatsE"></span><span id="_CPPv2N5arrow3ipc10WriteStatsE"></span><span id="arrow::ipc::WriteStats"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WriteStats</span></span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStatsE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStats12num_messagesE">
<span id="_CPPv3N5arrow3ipc10WriteStats12num_messagesE"></span><span id="_CPPv2N5arrow3ipc10WriteStats12num_messagesE"></span><span id="arrow::ipc::WriteStats::num_messages__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats_1ac0a5d4660cfdbcf8a7ffc9ed9b8ac2a2"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_messages</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStats12num_messagesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of IPC messages written. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStats18num_record_batchesE">
<span id="_CPPv3N5arrow3ipc10WriteStats18num_record_batchesE"></span><span id="_CPPv2N5arrow3ipc10WriteStats18num_record_batchesE"></span><span id="arrow::ipc::WriteStats::num_record_batches__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats_1a30965e160abbff184dc43b60d5e910dc"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_record_batches</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStats18num_record_batchesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of record batches written. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStats22num_dictionary_batchesE">
<span id="_CPPv3N5arrow3ipc10WriteStats22num_dictionary_batchesE"></span><span id="_CPPv2N5arrow3ipc10WriteStats22num_dictionary_batchesE"></span><span id="arrow::ipc::WriteStats::num_dictionary_batches__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats_1af2eb900815d2aaecdd432c5f82521d3f"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_dictionary_batches</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStats22num_dictionary_batchesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of dictionary batches written. </p>
<p>Note: num_dictionary_batches &gt;= num_dictionary_deltas + num_replaced_dictionaries </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStats21num_dictionary_deltasE">
<span id="_CPPv3N5arrow3ipc10WriteStats21num_dictionary_deltasE"></span><span id="_CPPv2N5arrow3ipc10WriteStats21num_dictionary_deltasE"></span><span id="arrow::ipc::WriteStats::num_dictionary_deltas__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats_1a6af4385abbf241efa18fd4412f633b62"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_dictionary_deltas</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStats21num_dictionary_deltasE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of dictionary deltas written. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStats25num_replaced_dictionariesE">
<span id="_CPPv3N5arrow3ipc10WriteStats25num_replaced_dictionariesE"></span><span id="_CPPv2N5arrow3ipc10WriteStats25num_replaced_dictionariesE"></span><span id="arrow::ipc::WriteStats::num_replaced_dictionaries__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats_1a2b661ba006fdee4583331605e14c5a1a"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">num_replaced_dictionaries</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStats25num_replaced_dictionariesE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Number of replaced dictionaries (i.e. </p>
<p>where a dictionary batch replaces an existing dictionary with an unrelated new dictionary). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow3ipc10WriteStats19total_raw_body_sizeE">
<span id="_CPPv3N5arrow3ipc10WriteStats19total_raw_body_sizeE"></span><span id="_CPPv2N5arrow3ipc10WriteStats19total_raw_body_sizeE"></span><span id="arrow::ipc::WriteStats::total_raw_body_size__int64_t"></span><span class="target" id="structarrow_1_1ipc_1_1_write_stats_1a6fa461fc3809724d4fb7b6659b2a9abb"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">total_raw_body_size</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow3ipc10WriteStats19total_raw_body_sizeE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Total size in bytes of record batches emitted. </p>
<p>The “raw” size counts the original buffer sizes, while the “serialized” size includes padding and (optionally) compression. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="io.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">Input / output</p>
</div>
</a>
<a class="right-next"
href="formats.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">File Formats</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#ipc-options">IPC options</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#reading-ipc-streams-and-files">Reading IPC streams and files</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#blocking-api">Blocking API</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#event-driven-api">Event-driven API</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#statistics">Statistics</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#writing-ipc-streams-and-files">Writing IPC streams and files</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#id1">Blocking API</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#id2">Statistics</a></li>
</ul>
</li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/cpp/api/ipc.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>