lwres_buffer.docbook revision 938440694b33cd752e9e4b71a526368b4811c177
f743002678eb67b99bbc29fee116b65d9530fec0wrowe<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
80833bb9a1bf25dcf19e814438a4b311d2e1f4cffuankg "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem [<!ENTITY mdash "&#8212;">]>
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic<!--
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic - Copyright (C) 2004, 2005, 2007, 2014 Internet Systems Consortium, Inc. ("ISC")
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic - Copyright (C) 2000, 2001 Internet Software Consortium.
1337c7673efc1f80f634139fbad7cbb98a0dc657ylavic -
4da61833a1cbbca94094f9653fd970582b97a72etrawick - Permission to use, copy, modify, and/or distribute this software for any
4da61833a1cbbca94094f9653fd970582b97a72etrawick - purpose with or without fee is hereby granted, provided that the above
4da61833a1cbbca94094f9653fd970582b97a72etrawick - copyright notice and this permission notice appear in all copies.
4da61833a1cbbca94094f9653fd970582b97a72etrawick -
4da61833a1cbbca94094f9653fd970582b97a72etrawick - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
4789804be088bcd86ae637a29cdb7fda25169521jailletc - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
4789804be088bcd86ae637a29cdb7fda25169521jailletc - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
4789804be088bcd86ae637a29cdb7fda25169521jailletc - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
4789804be088bcd86ae637a29cdb7fda25169521jailletc - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
e50c3026198fd496f183cda4c32a202925476778covener - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
e50c3026198fd496f183cda4c32a202925476778covener - PERFORMANCE OF THIS SOFTWARE.
e50c3026198fd496f183cda4c32a202925476778covener-->
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrin
5b88c8507d5ef6d0c4cfbc78230294968175b638minfrin<refentry>
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic <refentryinfo>
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic <date>June 18, 2007</date>
6c3b9cebb551140fbb25d58bae08b539b3802133ylavic </refentryinfo>
4f29b65ab4b547ad5dbe506e2d0ff5d12ead9247ylavic
4f29b65ab4b547ad5dbe506e2d0ff5d12ead9247ylavic <refmeta>
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic <refentrytitle>lwres_buffer</refentrytitle>
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic <manvolnum>3</manvolnum>
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic <refmiscinfo>BIND9</refmiscinfo>
0a0df13b7f1f4f1a74fe295253d89ca3911b301aylavic </refmeta>
69301145375a889e7e37caf7cc7321ac0f91801erpluem
69301145375a889e7e37caf7cc7321ac0f91801erpluem <docinfo>
69301145375a889e7e37caf7cc7321ac0f91801erpluem <copyright>
506bfe33206b2fece40ef25f695af39dd4130facjkaluza <year>2004</year>
506bfe33206b2fece40ef25f695af39dd4130facjkaluza <year>2005</year>
506bfe33206b2fece40ef25f695af39dd4130facjkaluza <year>2007</year>
506bfe33206b2fece40ef25f695af39dd4130facjkaluza <year>2014</year>
d58a848a016d401b965111e50ef829e1641f7834minfrin <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
d58a848a016d401b965111e50ef829e1641f7834minfrin </copyright>
d58a848a016d401b965111e50ef829e1641f7834minfrin <copyright>
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sf <year>2000</year>
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sf <year>2001</year>
2e6f4d654c96c98b761fb012fd25c5d5b1558c44sf <holder>Internet Software Consortium.</holder>
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic </copyright>
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic </docinfo>
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic <refnamediv>
17e6c95f3b22d18acdf8380fb26a8d0e10c80767ylavic <refname>lwres_buffer_init</refname>
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavic <refname>lwres_buffer_invalidate</refname>
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavic <refname>lwres_buffer_add</refname>
e8bd80a4bb88199d2f9a24a50345688e52d9c116ylavic <refname>lwres_buffer_subtract</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_clear</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_first</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_forward</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_back</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_getuint8</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_putuint8</refname>
330e16bea8fe9cace4de90c349750c03dfb1fe64ylavic <refname>lwres_buffer_getuint16</refname>
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener <refname>lwres_buffer_putuint16</refname>
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener <refname>lwres_buffer_getuint32</refname>
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener <refname>lwres_buffer_putuint32</refname>
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener <refname>lwres_buffer_putmem</refname>
d7205b1a86c51c27b71a2c458dc453fd53a261c1covener <refname>lwres_buffer_getmem</refname>
44ff304057225e944e220e981d434a046d14cf06covener <refpurpose>lightweight resolver buffer management</refpurpose>
44ff304057225e944e220e981d434a046d14cf06covener </refnamediv>
44ff304057225e944e220e981d434a046d14cf06covener
44ff304057225e944e220e981d434a046d14cf06covener <refsynopsisdiv>
5d1ba75b8794925e67591c209085a49279791de9covener
5d1ba75b8794925e67591c209085a49279791de9covener <funcsynopsis>
5d1ba75b8794925e67591c209085a49279791de9covener<funcsynopsisinfo>
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand#include &lt;lwres/lwbuffer.h&gt;
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand</funcsynopsisinfo>
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand
032982212dbcc7c3cce95bf89c503bb56e185ac7kbrand<funcprototype>
caad2986f81ab263f7af41467dd622dc9add17f3ylavic
caad2986f81ab263f7af41467dd622dc9add17f3ylavic <funcdef>
caad2986f81ab263f7af41467dd622dc9add17f3ylavicvoid
caad2986f81ab263f7af41467dd622dc9add17f3ylavic<function>lwres_buffer_init</function></funcdef>
45a10d38e6051fd7bdf9d742aaae633d97ff02abjailletc <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
f7317ff316c2b141feea31bddb74d5d3fa1584edjorton <paramdef>void *<parameter>base</parameter></paramdef>
f7317ff316c2b141feea31bddb74d5d3fa1584edjorton <paramdef>unsigned int <parameter>length</parameter></paramdef>
2165214331e4afafca4048f66f303d0253d7b001covener </funcprototype>
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem
a34684a59b60a4173c25035d0c627ef17e6dc215rpluem<funcprototype>
1e2d421a36999d292042a5539971070d54aa6c63ylavic <funcdef>
1e2d421a36999d292042a5539971070d54aa6c63ylavicvoid
1e2d421a36999d292042a5539971070d54aa6c63ylavic<function>lwres_buffer_invalidate</function></funcdef>
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh </funcprototype>
fa7ed98b9dc94c5845cf845aea0a44ecacd290c9humbedooh<funcprototype>
0b67eb8568cd58bb77082703951679b42cf098actrawick <funcdef>
0b67eb8568cd58bb77082703951679b42cf098actrawickvoid
0b67eb8568cd58bb77082703951679b42cf098actrawick<function>lwres_buffer_add</function></funcdef>
0b67eb8568cd58bb77082703951679b42cf098actrawick <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
5ef3c61605a3a021ff71f488983cb0065f8e1a79covener <paramdef>unsigned int <parameter>n</parameter></paramdef>
fb1985a97912b25ec6564c73e610a31e5fc6e25fcovener </funcprototype>
09c87c777bed1655621bb20e1c46cb6b1a63279dcovener
6502b7b32f980cc2093bb3ebce37e5e4dc68fba4ylavic<funcprototype>
6502b7b32f980cc2093bb3ebce37e5e4dc68fba4ylavic <funcdef>
3060ce7f798fbda7999cd4ddf89b525d2b294185covenervoid
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic<function>lwres_buffer_subtract</function></funcdef>
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
c1a63b8fad09c419c1a64f75993feb8a343a6801ylavic <paramdef>unsigned int <parameter>n</parameter></paramdef>
e6b4bd1113567627ab6bb6c6a7105e1e01a7d889jailletc </funcprototype>
e6b4bd1113567627ab6bb6c6a7105e1e01a7d889jailletc
e466c40e1801982602ee0200c9e8b61cc148742djailletc<funcprototype>
e466c40e1801982602ee0200c9e8b61cc148742djailletc <funcdef>
457468b82e59d01eba00dd9d0817309c8f5e414ejimvoid
457468b82e59d01eba00dd9d0817309c8f5e414ejim<function>lwres_buffer_clear</function></funcdef>
457468b82e59d01eba00dd9d0817309c8f5e414ejim <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
04983e3bd1754764eec7d6bb772fe3b0bf391771jorton </funcprototype>
04983e3bd1754764eec7d6bb772fe3b0bf391771jorton
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem<funcprototype>
15660979a30d251681463de2e0584853890082accovener <funcdef>
15660979a30d251681463de2e0584853890082accovenervoid
49dacedb6c387b786b7911082ff35121a45f414bcovener<function>lwres_buffer_first</function></funcdef>
49dacedb6c387b786b7911082ff35121a45f414bcovener <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
cfd9415521847b2f9394fad04fb701cfb955f503rjung </funcprototype>
cfd9415521847b2f9394fad04fb701cfb955f503rjung
cfd9415521847b2f9394fad04fb701cfb955f503rjung<funcprototype>
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe <funcdef>
28c31fb73c1264bd1d0ff932573677030b024c7dwrowevoid
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe<function>lwres_buffer_forward</function></funcdef>
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
28c31fb73c1264bd1d0ff932573677030b024c7dwrowe <paramdef>unsigned int <parameter>n</parameter></paramdef>
8491e0600f69b0405e156ea8a419653c065c645bcovener </funcprototype>
63b9f1f5880391261705f696d7d65507bbe9ace3covener<funcprototype>
63b9f1f5880391261705f696d7d65507bbe9ace3covener
63b9f1f5880391261705f696d7d65507bbe9ace3covener <funcdef>
49dacedb6c387b786b7911082ff35121a45f414bcovenervoid
49dacedb6c387b786b7911082ff35121a45f414bcovener<function>lwres_buffer_back</function></funcdef>
49dacedb6c387b786b7911082ff35121a45f414bcovener <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
49dacedb6c387b786b7911082ff35121a45f414bcovener <paramdef>unsigned int <parameter>n</parameter></paramdef>
3c990331fc6702119e4f5b8ba9eae3021aea5265jim </funcprototype>
3c990331fc6702119e4f5b8ba9eae3021aea5265jim
3c990331fc6702119e4f5b8ba9eae3021aea5265jim<funcprototype>
3c990331fc6702119e4f5b8ba9eae3021aea5265jim <funcdef>
fc42512879dd0504532f52fe5d0d0383dda96a1eniqlwres_uint8_t
fc42512879dd0504532f52fe5d0d0383dda96a1eniq<function>lwres_buffer_getuint8</function></funcdef>
fc42512879dd0504532f52fe5d0d0383dda96a1eniq <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq </funcprototype>
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq
0451df5dc50fa5d8b3e07d92ee6a92e36a1181a5niq<funcprototype>
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc <funcdef>
983528026996668ea295be95aedb9c7a346af470ylavicvoid
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc<function>lwres_buffer_putuint8</function></funcdef>
da0442c0440caef34706e2c2f3af05cb65921cc0jailletc <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
06b8f183140c8e02e0974e938a05078b511d1603covener <paramdef>lwres_uint8_t <parameter>val</parameter></paramdef>
06b8f183140c8e02e0974e938a05078b511d1603covener </funcprototype>
06b8f183140c8e02e0974e938a05078b511d1603covener
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem<funcprototype>
259878293a997ff49f5ddfc53d3739cbdc25444ecovener <funcdef>
259878293a997ff49f5ddfc53d3739cbdc25444ecovenerlwres_uint16_t
259878293a997ff49f5ddfc53d3739cbdc25444ecovener<function>lwres_buffer_getuint16</function></funcdef>
259878293a997ff49f5ddfc53d3739cbdc25444ecovener <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
15890c9306ba98f6fc243e15a3c4778ddc7d773erpluem </funcprototype>
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin<funcprototype>
b54b024c06a19926832d77d40ba35ad8c41e4d3dminfrin <funcdef>
65967d05f839dbf27cf91d91fa79585eeae19660minfrinvoid
65967d05f839dbf27cf91d91fa79585eeae19660minfrin<function>lwres_buffer_putuint16</function></funcdef>
65967d05f839dbf27cf91d91fa79585eeae19660minfrin <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
65967d05f839dbf27cf91d91fa79585eeae19660minfrin <paramdef>lwres_uint16_t <parameter>val</parameter></paramdef>
8152945ae46857b170cb227e79bb799f4fc7710dminfrin </funcprototype>
8152945ae46857b170cb227e79bb799f4fc7710dminfrin
8152945ae46857b170cb227e79bb799f4fc7710dminfrin<funcprototype>
8152945ae46857b170cb227e79bb799f4fc7710dminfrin <funcdef>
75f5c2db254c0167a0e396254460de09b775d203trawicklwres_uint32_t
75f5c2db254c0167a0e396254460de09b775d203trawick<function>lwres_buffer_getuint32</function></funcdef>
75f5c2db254c0167a0e396254460de09b775d203trawick <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph </funcprototype>
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph
4f0358189bfa57b8e75bd6b94db264302a8f336amrumph<funcprototype>
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick <funcdef>
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawickvoid
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick<function>lwres_buffer_putuint32</function></funcdef>
5716f9c6daa92dde5f2f9d11ed63f7c9549c223atrawick <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
54d750a84a175d8e338880514d440773eb986b50covener <paramdef>lwres_uint32_t <parameter>val</parameter></paramdef>
54d750a84a175d8e338880514d440773eb986b50covener </funcprototype>
54d750a84a175d8e338880514d440773eb986b50covener
54d750a84a175d8e338880514d440773eb986b50covener<funcprototype>
54d750a84a175d8e338880514d440773eb986b50covener <funcdef>
54d750a84a175d8e338880514d440773eb986b50covenervoid
54d750a84a175d8e338880514d440773eb986b50covener<function>lwres_buffer_putmem</function></funcdef>
54d750a84a175d8e338880514d440773eb986b50covener <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
7a3aa12f0eda24793ee26d6a179bd53132e9dae8covener <paramdef>const unsigned char *<parameter>base</parameter></paramdef>
54d750a84a175d8e338880514d440773eb986b50covener <paramdef>unsigned int <parameter>length</parameter></paramdef>
54d750a84a175d8e338880514d440773eb986b50covener </funcprototype>
83b50288fa7d306324bba68832011ea08f5c7832covener
4e30ef014533a7e93c92d88306291f5e49c9692ftrawick<funcprototype>
83b50288fa7d306324bba68832011ea08f5c7832covener <funcdef>
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawickvoid
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick<function>lwres_buffer_getmem</function></funcdef>
5f066f496cd9f20a2a701255bc67d44e7cb46daetrawick <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
2e15620d724fb8e3a5be183b917359a2fd6e9468covener <paramdef>unsigned char *<parameter>base</parameter></paramdef>
2e15620d724fb8e3a5be183b917359a2fd6e9468covener <paramdef>unsigned int <parameter>length</parameter></paramdef>
2e15620d724fb8e3a5be183b917359a2fd6e9468covener </funcprototype>
2e15620d724fb8e3a5be183b917359a2fd6e9468covener
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener</funcsynopsis>
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener </refsynopsisdiv>
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener
1b988c41ee505962781d110a3e4c2c90f1ea0aa4covener <refsect1>
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener <title>DESCRIPTION</title>
b8efdc95bec9cf089aa1be0bfd07d46aa1137a7acovener <para>
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd These functions provide bounds checked access to a region of memory
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd where data is being read or written.
f06e7c4b1bce6b6491e5de0b7998d3f5696b293dchrisd They are based on, and similar to, the
179565be4043d7e5f9161aa75271fa0a001866d9covener <literal>isc_buffer_</literal>
179565be4043d7e5f9161aa75271fa0a001866d9covener functions in the ISC library.
179565be4043d7e5f9161aa75271fa0a001866d9covener </para>
111436a32ba1254291e4883292fb116d15fe8f64covener <para>
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener A buffer is a region of memory, together with a set of related
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener subregions.
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener The <emphasis>used region</emphasis> and the
fce4949fb0b309a5744afcd503c6ed2d35621ee2covener <emphasis>available</emphasis> region are disjoint, and
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick their union is the buffer's region.
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick The used region extends from the beginning of the buffer region to the
7b7430e701e9a31ce809da7c220bb8dfcf68c86etrawick last used byte.
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz The available region extends from one byte greater than the last used
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz byte to the end of the buffer's region.
ccc20788c1e5fc973f36df634399c89acb70deaejerenkrantz The size of the used region can be changed using various
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza buffer commands.
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza Initially, the used region is empty.
273e512f20f262e5e2aa8e0e83371d1929fb76adjkaluza </para>
efe780dcf13b2b95effabf897d694d8f23feac74trawick <para>
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin The used region is further subdivided into two disjoint regions: the
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin <emphasis>consumed region</emphasis> and the <emphasis>remaining region</emphasis>.
fe83f60b41477b14a37edcfcd1f7f5c5a1ebfe44minfrin The union of these two regions is the used region.
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza The consumed region extends from the beginning of the used region to
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza the byte before the <emphasis>current</emphasis> offset (if any).
993d1261a278d7322bccef219101220b7b4fb8c5jkaluza The <emphasis>remaining</emphasis> region the current pointer to the end
ba050a6f942b9fa0e81ed73437588005c569655ccovener of the used
ba050a6f942b9fa0e81ed73437588005c569655ccovener region.
ba050a6f942b9fa0e81ed73437588005c569655ccovener The size of the consumed region can be changed using various
ba050a6f942b9fa0e81ed73437588005c569655ccovener buffer commands.
135ddda3a989215d2bedbcf1529bfb269c3eda23niq Initially, the consumed region is empty.
135ddda3a989215d2bedbcf1529bfb269c3eda23niq </para>
135ddda3a989215d2bedbcf1529bfb269c3eda23niq <para>
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh The <emphasis>active region</emphasis> is an (optional) subregion of the
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh remaining
001a44c352f89c9ec332ffd3e0a6927dcd19432chumbedooh region.
efe780dcf13b2b95effabf897d694d8f23feac74trawick It extends from the current offset to an offset in the
793214f67dede32edfd9ee96c664ead04d175cbbjfclere remaining region.
cc5a4a08dc9783fcbc52ce86f11e01c281a43810minfrin Initially, the active region is empty.
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener If the current offset advances beyond the chosen offset,
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener the active region will also be empty.
9b0076ddd1103e5fa9c1f9bafde4b06ce244fbaecovener </para>
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza <para><programlisting>
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza /------------entire length---------------\\
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza /----- used region -----\\/-- available --\\
249d09d51808cb7981af99762c3b3736ca126cd5jkaluza +----------------------------------------+
56589be3d7a3e9343370df240010c6928cc78b39jkaluza | consumed | remaining | |
56589be3d7a3e9343370df240010c6928cc78b39jkaluza +----------------------------------------+
56589be3d7a3e9343370df240010c6928cc78b39jkaluza a b c d e
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc </programlisting>
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc </para>
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc <para><programlisting>
77ca16c5676da23155311e13cee61e7eaba9fa3ejailletc a == base of buffer.
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick b == current pointer. Can be anywhere between a and d.
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick c == active pointer. Meaningful between b and d.
f87299dab99bc04b51a6b8cad51b6795db862c0atrawick d == used pointer.
4d12805e6c18253040223ea637acd6b3b3c18f60jorton e == length of buffer.
4d12805e6c18253040223ea637acd6b3b3c18f60jorton </programlisting>
4d12805e6c18253040223ea637acd6b3b3c18f60jorton </para>
85eacfc96a04547ef25aabbc06440039715084c2jorton <para><programlisting>
85eacfc96a04547ef25aabbc06440039715084c2jorton a-e == entire length of buffer.
e5d909f2b06bd880fb3675cd49363df981caa631trawick a-d == used region.
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener a-b == consumed region.
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener b-d == remaining region.
a4df2cd1e1391575a327c2a90ba4315f805a0a78covener b-c == optional active region.
cb666b29f81df1d11d65002250153353568021fccovener</programlisting>
cb666b29f81df1d11d65002250153353568021fccovener </para>
cb666b29f81df1d11d65002250153353568021fccovener <para><function>lwres_buffer_init()</function>
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener initializes the
1c2cab00d988fc48cbe59032cf76cc0bab20d6f7covener <type>lwres_buffer_t</type>
6a80c3c6f4b8ea7ba5e89402b8b779b09ce020e0covener <parameter>*b</parameter>
75a230a728338d84dcfe81edd375352f34de22d0covener and assocates it with the memory region of size
75a230a728338d84dcfe81edd375352f34de22d0covener <parameter>length</parameter>
75a230a728338d84dcfe81edd375352f34de22d0covener bytes starting at location
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener <parameter>base.</parameter>
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener </para>
1f50dc34ae069adeed20b2986e5ffdefa5c410e0covener <para><function>lwres_buffer_invalidate()</function>
63a5ea80bddcc84a462e40f402b4f330e0e05411covener marks the buffer <parameter>*b</parameter>
63a5ea80bddcc84a462e40f402b4f330e0e05411covener as invalid. Invalidating a buffer after use is not required,
63a5ea80bddcc84a462e40f402b4f330e0e05411covener but makes it possible to catch its possible accidental use.
63a5ea80bddcc84a462e40f402b4f330e0e05411covener </para>
65a4e663b82f8bce28ac22ab2edfd7502de36998sf <para>
65a4e663b82f8bce28ac22ab2edfd7502de36998sf The functions
65a4e663b82f8bce28ac22ab2edfd7502de36998sf <function>lwres_buffer_add()</function>
65a4e663b82f8bce28ac22ab2edfd7502de36998sf and
c7de1955eb0eaeabf7042902476397692672d549sf <function>lwres_buffer_subtract()</function>
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin respectively increase and decrease the used space in
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin buffer
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin <parameter>*b</parameter>
74e7f6c55fd67b10cb400b3f6d1dc718a303d944minfrin by
a511a29faf2ff7ead3b67680154a624effb31aafminfrin <parameter>n</parameter>
a511a29faf2ff7ead3b67680154a624effb31aafminfrin bytes.
a511a29faf2ff7ead3b67680154a624effb31aafminfrin <function>lwres_buffer_add()</function>
a511a29faf2ff7ead3b67680154a624effb31aafminfrin checks for buffer overflow and
a511a29faf2ff7ead3b67680154a624effb31aafminfrin <function>lwres_buffer_subtract()</function>
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin checks for underflow.
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin These functions do not allocate or deallocate memory.
63921358ef93fcb41bc71d9894221ba3d7fbb87bminfrin They just change the value of
deec48c67d4786bc77112ffbf3a4e70b931097edminfrin <structfield>used</structfield>.
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin </para>
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin <para>
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin A buffer is re-initialised by
6d601599d3d65df0410eae6e573e75b2dbfb1fb4minfrin <function>lwres_buffer_clear()</function>.
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener The function sets
684e0cfc200f66287a93bbd1708d1dd8a92a7eefcovener <structfield>used</structfield>,
5c43d2fb853f84497b5ece2d414ef9484aa87e5fsf <structfield>current</structfield>
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes and
05a5a9c3e16f21566e1b61f4bd68025ce1b741ccjoes <structfield>active</structfield>
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq to zero.
26c5829347f6a355c00f1ba0301d575056b69536niq </para>
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq <para><function>lwres_buffer_first</function>
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq makes the consumed region of buffer
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq <parameter>*p</parameter>
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq empty by setting
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq <structfield>current</structfield>
ef82e8fa164e0a1f8b813f7deb6b7ead96018c94niq to zero (the start of the buffer).
413ee814748f37be168ff12407fa6dba0ceeabe6trawick </para>
c12917da693bae4028a1d5a5e8224bceed8c739dsf <para><function>lwres_buffer_forward()</function>
c12917da693bae4028a1d5a5e8224bceed8c739dsf increases the consumed region of buffer
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf <parameter>*b</parameter>
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf by
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf <parameter>n</parameter>
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf bytes, checking for overflow.
eafcc0ebf263d0ba69855b6e10958c4c1a2361bdsf Similarly,
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf <function>lwres_buffer_back()</function>
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf decreases buffer
d7ffd2da16d58b1a0de212e4d56f7aebb72bef26sf <parameter>b</parameter>'s
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf consumed region by
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf <parameter>n</parameter>
4576c1a9ef54cd1e5555ee07d016a7f559f80338sf bytes and checks for underflow.
9811aed12bbc71783d2e544ccb5fecd193843eadsf </para>
9811aed12bbc71783d2e544ccb5fecd193843eadsf <para><function>lwres_buffer_getuint8()</function>
9811aed12bbc71783d2e544ccb5fecd193843eadsf reads an unsigned 8-bit integer from
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung <parameter>*b</parameter>
88fac54d9d64f85bbdab5d7010816f4377f95bd7rjung and returns it.
bd3f5647b96d378d9c75c954e3f13582af32c643sf <function>lwres_buffer_putuint8()</function>
bd3f5647b96d378d9c75c954e3f13582af32c643sf writes the unsigned 8-bit integer
bd3f5647b96d378d9c75c954e3f13582af32c643sf <parameter>val</parameter>
bd3f5647b96d378d9c75c954e3f13582af32c643sf to buffer
bd3f5647b96d378d9c75c954e3f13582af32c643sf <parameter>*b</parameter>.
2a7beea91d46beb41f043a84eaad060047ee04aafabien </para>
2a7beea91d46beb41f043a84eaad060047ee04aafabien <para><function>lwres_buffer_getuint16()</function>
2a7beea91d46beb41f043a84eaad060047ee04aafabien and
2a7beea91d46beb41f043a84eaad060047ee04aafabien <function>lwres_buffer_getuint32()</function>
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf are identical to
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf <function>lwres_buffer_putuint8()</function>
584a85dd4047e38d3ed3a29b6662fcc9d100ae4csf except that they respectively read an unsigned 16-bit or 32-bit integer
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf in network byte order from
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf <parameter>b</parameter>.
f21e9e3d0bfb7a507ecc5bc963f2159d693503d1sf Similarly,
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf <function>lwres_buffer_putuint16()</function>
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf and
f6b9c755a0b793e8a3a3aebd327ca20a86478117sf <function>lwres_buffer_putuint32()</function>
132ee6ac1c26d6e8953836316ba50734eefab47bsf writes the unsigned 16-bit or 32-bit integer
132ee6ac1c26d6e8953836316ba50734eefab47bsf <parameter>val</parameter>
132ee6ac1c26d6e8953836316ba50734eefab47bsf to buffer
85eacfc96a04547ef25aabbc06440039715084c2jorton <parameter>b</parameter>,
85eacfc96a04547ef25aabbc06440039715084c2jorton in network byte order.
85eacfc96a04547ef25aabbc06440039715084c2jorton </para>
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick <para>
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick Arbitrary amounts of data are read or written from a lightweight
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick resolver buffer with
536d2e7cd1fdec1255b8c3bdf41fdc714c506a54trawick <function>lwres_buffer_getmem()</function>
79c5787b92ac5f0e1cc82393816c77a006399316trawick and
79c5787b92ac5f0e1cc82393816c77a006399316trawick <function>lwres_buffer_putmem()</function>
79c5787b92ac5f0e1cc82393816c77a006399316trawick respectively.
79c5787b92ac5f0e1cc82393816c77a006399316trawick <function>lwres_buffer_putmem()</function>
c967bf3bc89e8aa60dbd30d9da388e448ddc1cc4trawick copies
79c5787b92ac5f0e1cc82393816c77a006399316trawick <parameter>length</parameter>
79c5787b92ac5f0e1cc82393816c77a006399316trawick bytes of memory at
79c5787b92ac5f0e1cc82393816c77a006399316trawick <parameter>base</parameter>
79c5787b92ac5f0e1cc82393816c77a006399316trawick to
79c5787b92ac5f0e1cc82393816c77a006399316trawick <parameter>b</parameter>.
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton Conversely,
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton <function>lwres_buffer_getmem()</function>
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton copies
7b395e4e878c28a4784919cfd2e704ddd14a3390jorton <parameter>length</parameter>
536e48c08d674acac5d44929318f2ad928edc361jorton bytes of memory from
536e48c08d674acac5d44929318f2ad928edc361jorton <parameter>b</parameter>
e81785da447b469da66f218b3f0244aab507958djorton to
e81785da447b469da66f218b3f0244aab507958djorton <parameter>base</parameter>.
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton </para>
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton </refsect1>
3e4e54d4e3fc0123c63d57aa84ac7ad7a8c73ff8jorton</refentry><!--
53e9b27aba029b18be814df40bcf6f0428771d1efuankg - Local variables:
53e9b27aba029b18be814df40bcf6f0428771d1efuankg - mode: sgml
53e9b27aba029b18be814df40bcf6f0428771d1efuankg - End:
53e9b27aba029b18be814df40bcf6f0428771d1efuankg-->
53e9b27aba029b18be814df40bcf6f0428771d1efuankg