| <!-- |
| SPDX-FileCopyrightText: The Apache Software Foundation |
| |
| SPDX-License-Identifier: Apache-2.0 |
| --> |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <title>Arrow.StreamDecoder.get_next_required_size</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| |
| <meta charset="utf-8" /> |
| |
| |
| <meta property="og:type" content="website"/> |
| |
| |
| |
| |
| <meta priority="og:title" content="Arrow.StreamDecoder.get_next_required_size"/> |
| <meta priority="og:description" content="Reference for Arrow.StreamDecoder.get_next_required_size"/> |
| <meta name="twitter:title" content="Arrow.StreamDecoder.get_next_required_size"/> |
| <meta name="twitter:description" content="Reference for Arrow.StreamDecoder.get_next_required_size"/> |
| |
| |
| |
| <meta name="twitter:card" content="summary"/> |
| |
| |
| |
| |
| |
| |
| <link rel="stylesheet" href="style.css" type="text/css" /> |
| |
| |
| |
| |
| <script src="urlmap.js"></script> |
| |
| |
| <script src="fzy.js"></script> |
| <script src="search.js"></script> |
| |
| <script src="main.js"></script> |
| </head> |
| |
| <body> |
| <div id="body-wrapper" tabindex="-1"> |
| |
| <nav class="sidebar devhelp-hidden"> |
| |
| |
| <div class="search section"> |
| <form id="search-form" autocomplete="off"> |
| <input id="search-input" type="text" name="do-not-autocomplete" placeholder="Click, or press 's' to search" autocomplete="off"/> |
| </form> |
| </div> |
| |
| <div class="section namespace"> |
| <h3><a href="index.html">Arrow</a></h3> |
| <p>API Version: 1.0</p> |
| |
| <p>Library Version: 22.0.0</p> |
| |
| </div> |
| |
| <div class="section"> |
| <h5>Type</h5> |
| <div class="links"> |
| <a href="class.StreamDecoder.html">StreamDecoder</a> |
| </div> |
| </div> |
| <div class="section"> |
| <h5>Methods</h5> |
| <div class="links"> |
| |
| <a class="method" href="method.StreamDecoder.consume_buffer.html">consume_buffer</a> |
| |
| <a class="method" href="method.StreamDecoder.consume_bytes.html">consume_bytes</a> |
| |
| <a class="method current" href="method.StreamDecoder.get_next_required_size.html">get_next_required_size</a> |
| |
| <a class="method" href="method.StreamDecoder.get_schema.html">get_schema</a> |
| |
| <a class="method" href="method.StreamDecoder.reset.html">reset</a> |
| |
| </div> |
| </div> |
| |
| <div class="section generator"> |
| <p>Generated by <a href="https://gitlab.gnome.org/GNOME/gi-docgen">gi-docgen</a> 2023.1</p> |
| </div> |
| </nav> |
| |
| <button id="btn-to-top" class="hidden"><span class="up-arrow"></span></button> |
| |
| |
| <section id="main" class="content"> |
| <header> |
| <h3>Method</h3> |
| <h1><a href="index.html">Arrow</a><span class="sep"></span><a href="class.StreamDecoder.html">StreamDecoder</a><span class="sep"></span>get_next_required_size</h1> |
| </header> |
| |
| <section> |
| <div class="docblock"> |
| <p><span class="emblem available">since: 18.0.0</span></p> |
| </div> |
| |
| <div class="declaration toggle-wrapper"> |
| <h4 style="display:flex;" id="declaration"> |
| Declaration |
| <a class="anchor" href="#declaration"></a> |
| |
| <a class="srclink" title="go to source location" href="https://github.com/apache/arrow/blob/main/c_glib/arrow-glib/decoder.h#L94">[src]</a> |
| |
| </h4> |
| |
| <div class="docblock c-decl"> |
| <pre><code><div class="highlight"><pre><span></span><span class="n">gsize</span> |
| <span class="n">garrow_stream_decoder_get_next_required_size</span><span class="w"> </span><span class="p">(</span> |
| <span class="w"> </span><span class="n">GArrowStreamDecoder</span><span class="o">*</span><span class="w"> </span><span class="n">decoder</span> |
| <span class="p">)</span> |
| </pre></div> |
| </code></pre> |
| </div> |
| </div> |
| |
| <div class="description toggle-wrapper"> |
| <h4 style="display:flex;" id="description"> |
| Description |
| <a class="anchor" href="#description"></a> |
| |
| <a class="srclink" title="go to source location" href="https://github.com/apache/arrow/blob/main/c_glib/arrow-glib/decoder.cpp#L509">[src]</a> |
| |
| </h4> |
| |
| <div class="docblock"> |
| <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="codehilite"><pre><span></span><code>garrow_stream_decoder_consume_buffer(decoder, buffer1); |
| garrow_stream_decoder_consume_buffer(decoder, buffer2); |
| garrow_stream_decoder_consume_buffer(decoder, buffer3); |
| </code></pre></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 <code>garrow_stream_decoer_get_next_required_size()</code> size data |
| to each |
| garrow_stream_decoder_consume_bytes()/garrow_stream_decoder_consume_buffer() |
| 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="codehilite"><pre><span></span><code>buffer1 = get_data(garrow_stream_decoder_get_next_required_size(decoder)); |
| garrow_stream_decoder_consume_buffer(buffer1); |
| buffer2 = get_data(garrow_stream_decoder_get_next_required_size(decoder)); |
| garrow_stream_decoder_consume_buffer(buffer2); |
| </code></pre></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="codehilite"><pre><span></span><code>GArrowResizablBuffer *buffer = garrow_resizable_buffer_new(1024, NULL); |
| while ((small_chunk = get_data(&small_chunk_size))) { |
| size_t current_buffer_size = garrow_buffer_get_size(GARROW_BUFFER(buffer)); |
| garrow_resizable_buffer_resize(buffer, current_buffer_size + small_chunk_size, |
| </code></pre></div> |
| |
| <p><span class="caps">NULL</span>); |
| garrow_mutable_buffer_set_data(GARROW_MUTABLE_BUFFER(buffer), |
| current_buffer_size, |
| small_chunk, |
| small_chunk_size, |
| <span class="caps">NULL</span>); |
| if (garrow_buffer_get_size(GARROW_BUFFER(buffer)) < |
| garrow_stream_decoder_get_next_required_size(decoder)) { |
| continue; |
| } |
| garrow_stream_decoder_consume_buffer(decoder, GARROW_BUFFER(buffer), <span class="caps">NULL</span>); |
| g_object_unref(buffer); |
| buffer = garrow_resizable_buffer_new(1024, <span class="caps">NULL</span>); |
| } |
| if (garrow_buffer_get_size(GARROW_BUFFER(buffer)) > 0) { |
| garrow_stream_decoder_consume_buffer(decoder, GARROW_BUFFER(buffer), <span class="caps">NULL</span>); |
| } g_object_unref(buffer);</p> |
| </div> |
| |
| <div class="docblock"> |
| |
| <p>Available since: 18.0.0</p> |
| |
| |
| |
| |
| </div> |
| |
| |
| </div> |
| |
| |
| |
| |
| <div class="return-value toggle-wrapper"> |
| <h4 id="return-value"> |
| Return value |
| <a href="#return-value" class="anchor"></a> |
| </h4> |
| |
| <div class="docblock"> |
| <div class="returns"> |
| <div class="arg-description"> |
| <p><em>Type:</em> <code>gsize</code></p> |
| <p><p>The number of bytes needed to advance the state of |
| the decoder.</p></p> |
| </div> |
| <div> |
| <table> |
| |
| |
| |
| |
| |
| |
| </table> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| </section> |
| </section> |
| |
| |
| |
| |
| <section id="search" class="content hidden"></section> |
| |
| <footer> |
| |
| </footer> |
| </div> |
| </body> |
| </html> |