guile-knots/index.html
Automatic website updater 6ec3d0d039 Automatic website update
2025-06-25 17:52:47 +01:00

1469 lines
81 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guile Knots</title>
<meta name="description" content="Guile Knots">
<meta name="keywords" content="Guile Knots">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content=".texi2any-real">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="#Top" rel="start" title="Top">
<link href="#Concept-Index" rel="index" title="Concept Index">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="#API" rel="next" title="API">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
a.summary-letter-printindex {text-decoration: none}
div.example {margin-left: 3.2em}
h1.settitle {text-align:center}
span:hover a.copiable-link {visibility: visible}
strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
td.printindex-index-entry {vertical-align: top}
td.printindex-index-section {vertical-align: top; padding-left: 1em}
th.entries-header-printindex {text-align:left}
th.sections-header-printindex {text-align:left; padding-left: 1em}
ul.mark-bullet {list-style-type: disc}
ul.toc-numbered-mark {list-style: none}
-->
</style>
<link rel="stylesheet" type="text/css" href="https://luis-felipe.gitlab.io/texinfo-css/static/css/texinfo-7.css">
</head>
<body lang="en">
<h1 class="settitle">Guile Knots</h1>
<hr>
<div class="top-level-extent" id="Top">
<div class="nav-panel">
<p>
Next: <a href="#API" accesskey="n" rel="next">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h1 class="top" id="Overview"><span>Overview<a class="copiable-link" href="#Overview"> &para;</a></span></h1>
<p>Guile Knots is a library providing tools and patterns for programming
with <a class="url" href="https://github.com/wingo/fibers">Guile Fibers</a>. Guile Knots
provides higher level building blocks for writing programs using Guile
Fibers, including managing code that can&rsquo;t run in a thread used by
fibers. Also included is a web server implementation using Fibers,
which while being similar to the web server provided by Fibers, can
provide some benefits in specific circumstances.
</p>
<div class="element-contents" id="SEC_Contents">
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
<ul class="toc-numbered-mark">
<li><a id="toc-API-1" href="#API">1 API</a>
<ul class="toc-numbered-mark">
<li><a id="toc-_0028knots-non_002dblocking_0029" href="#knots_005fnon_002dblocking">1.1 (knots non-blocking)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Procedures" href="#Procedures">1.1.1 Procedures</a></li>
</ul></li>
<li><a id="toc-_0028knots-parallelism_0029" href="#knots_005fparallelism">1.2 (knots parallelism)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Macros" href="#Macros">1.2.1 Macros</a></li>
<li><a id="toc-Procedures-1" href="#Procedures-1">1.2.2 Procedures</a></li>
</ul></li>
<li><a id="toc-_0028knots-promise_0029" href="#knots_005fpromise">1.3 (knots promise)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Macros-1" href="#Macros-1">1.3.1 Macros</a></li>
<li><a id="toc-Procedures-2" href="#Procedures-2">1.3.2 Procedures</a></li>
</ul></li>
<li><a id="toc-_0028knots-queue_0029" href="#knots_005fqueue">1.4 (knots queue)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Procedures-3" href="#Procedures-3">1.4.1 Procedures</a></li>
</ul></li>
<li><a id="toc-_0028knots-resource_002dpool_0029" href="#knots_005fresource_002dpool">1.5 (knots resource-pool)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Macros-2" href="#Macros-2">1.5.1 Macros</a></li>
<li><a id="toc-Parameters" href="#Parameters">1.5.2 Parameters</a></li>
<li><a id="toc-Procedures-4" href="#Procedures-4">1.5.3 Procedures</a></li>
<li><a id="toc-Record-Types" href="#Record-Types">1.5.4 Record Types</a></li>
</ul></li>
<li><a id="toc-_0028knots-thread_002dpool_0029" href="#knots_005fthread_002dpool">1.6 (knots thread-pool)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Macros-3" href="#Macros-3">1.6.1 Macros</a></li>
<li><a id="toc-Procedures-5" href="#Procedures-5">1.6.2 Procedures</a></li>
<li><a id="toc-Record-Types-1" href="#Record-Types-1">1.6.3 Record Types</a></li>
</ul></li>
<li><a id="toc-_0028knots-timeout_0029" href="#knots_005ftimeout">1.7 (knots timeout)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Procedures-6" href="#Procedures-6">1.7.1 Procedures</a></li>
<li><a id="toc-Record-Types-2" href="#Record-Types-2">1.7.2 Record Types</a></li>
</ul></li>
<li><a id="toc-_0028knots-web_002dserver_0029" href="#knots_005fweb_002dserver">1.8 (knots web-server)</a>
<ul class="toc-numbered-mark">
<li><a id="toc-Macros-4" href="#Macros-4">1.8.1 Macros</a></li>
<li><a id="toc-Procedures-7" href="#Procedures-7">1.8.2 Procedures</a></li>
<li><a id="toc-Record-Types-3" href="#Record-Types-3">1.8.3 Record Types</a></li>
</ul></li>
</ul></li>
<li><a id="toc-Version-History-1" href="#Version-History">Appendix A Version History</a></li>
<li><a id="toc-Copying-Information-1" href="#Copying-Information">Appendix B Copying Information</a></li>
<li><a id="toc-Concept-Index-1" href="#Concept-Index" rel="index">Concept Index</a></li>
<li><a id="toc-Data-Type-Index-1" href="#Data-Type-Index" rel="index">Data Type Index</a></li>
<li><a id="toc-Procedure-Index-1" href="#Procedure-Index" rel="index">Procedure Index</a></li>
<li><a id="toc-Variable-Index-1" href="#Variable-Index" rel="index">Variable Index</a></li>
</ul>
</div>
</div>
<hr>
<div class="chapter-level-extent" id="API">
<div class="nav-panel">
<p>
Next: <a href="#Version-History" accesskey="n" rel="next">Version History</a>, Previous: <a href="#Top" accesskey="p" rel="prev">Overview</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="chapter" id="API-1"><span>1 API<a class="copiable-link" href="#API-1"> &para;</a></span></h2>
<p>The following is the list of modules provided by this library.
</p>
<ul class="mini-toc">
<li><a href="#knots_005fnon_002dblocking" accesskey="1">(knots non-blocking)</a></li>
<li><a href="#knots_005fparallelism" accesskey="2">(knots parallelism)</a></li>
<li><a href="#knots_005fpromise" accesskey="3">(knots promise)</a></li>
<li><a href="#knots_005fqueue" accesskey="4">(knots queue)</a></li>
<li><a href="#knots_005fresource_002dpool" accesskey="5">(knots resource-pool)</a></li>
<li><a href="#knots_005fthread_002dpool" accesskey="6">(knots thread-pool)</a></li>
<li><a href="#knots_005ftimeout" accesskey="7">(knots timeout)</a></li>
<li><a href="#knots_005fweb_002dserver" accesskey="8">(knots web-server)</a></li>
</ul>
<hr>
<div class="section-level-extent" id="knots_005fnon_002dblocking">
<div class="nav-panel">
<p>
Next: <a href="#knots_005fparallelism" accesskey="n" rel="next">(knots parallelism)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-non_002dblocking_0029"><span>1.1 (knots non-blocking)<a class="copiable-link" href="#g_t_0028knots-non_002dblocking_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Procedures" accesskey="1">Procedures</a></li>
</ul>
<div class="subsection-level-extent" id="Procedures">
<h4 class="subsection"><span>1.1.1 Procedures<a class="copiable-link" href="#Procedures"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-non_002dblocking_002dopen_002dsocket_002dfor_002duri"><span class="category-def">Procedure: </span><span><strong class="def-name">non-blocking-open-socket-for-uri</strong> <var class="def-var-arguments">_ KEY: #:verify-certificate?</var><a class="copiable-link" href="#index-non_002dblocking_002dopen_002dsocket_002dfor_002duri"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-non_002dblocking_002dport"><span class="category-def">Procedure: </span><span><strong class="def-name">non-blocking-port</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-non_002dblocking_002dport"> &para;</a></span></dt>
<dd><p>Make PORT non-blocking and return it.
</p>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005fparallelism">
<div class="nav-panel">
<p>
Next: <a href="#knots_005fpromise" accesskey="n" rel="next">(knots promise)</a>, Previous: <a href="#knots_005fnon_002dblocking" accesskey="p" rel="prev">(knots non-blocking)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-parallelism_0029"><span>1.2 (knots parallelism)<a class="copiable-link" href="#g_t_0028knots-parallelism_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Macros" accesskey="1">Macros</a></li>
<li><a href="#Procedures-1" accesskey="2">Procedures</a></li>
</ul>
<div class="subsection-level-extent" id="Macros">
<h4 class="subsection"><span>1.2.1 Macros<a class="copiable-link" href="#Macros"> &para;</a></span></h4>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-fibers_002dlet"><span class="category-def">Macro: </span><span><strong class="def-name">fibers-let</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002dlet"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-fibers_002dparallel"><span class="category-def">Macro: </span><span><strong class="def-name">fibers-parallel</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002dparallel"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-parallelism_002dlimiter_003f"><span class="category-def">Macro: </span><span><strong class="def-name">parallelism-limiter?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-parallelism_002dlimiter_003f"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-with_002dparallelism_002dlimiter"><span class="category-def">Macro: </span><span><strong class="def-name">with-parallelism-limiter</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-with_002dparallelism_002dlimiter"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Procedures-1">
<h4 class="subsection"><span>1.2.2 Procedures<a class="copiable-link" href="#Procedures-1"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-call_002dwith_002dparallelism_002dlimiter"><span class="category-def">Procedure: </span><span><strong class="def-name">call-with-parallelism-limiter</strong> <var class="def-var-arguments">a b</var><a class="copiable-link" href="#index-call_002dwith_002dparallelism_002dlimiter"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-destroy_002dparallelism_002dlimiter"><span class="category-def">Procedure: </span><span><strong class="def-name">destroy-parallelism-limiter</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-destroy_002dparallelism_002dlimiter"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fiberize"><span class="category-def">Procedure: </span><span><strong class="def-name">fiberize</strong> <var class="def-var-arguments">_ KEY: #:parallelism #:input-channel #:process-channel</var><a class="copiable-link" href="#index-fiberize"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dbatch_002dfor_002deach"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-batch-for-each</strong> <var class="def-var-arguments">a b . rest</var><a class="copiable-link" href="#index-fibers_002dbatch_002dfor_002deach"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dbatch_002dmap"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-batch-map</strong> <var class="def-var-arguments">a b . rest</var><a class="copiable-link" href="#index-fibers_002dbatch_002dmap"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dfor_002deach"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-for-each</strong> <var class="def-var-arguments">a . rest</var><a class="copiable-link" href="#index-fibers_002dfor_002deach"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dmap"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-map</strong> <var class="def-var-arguments">a . rest</var><a class="copiable-link" href="#index-fibers_002dmap"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dmap_002dwith_002dprogress"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-map-with-progress</strong> <var class="def-var-arguments">_ _ KEY: #:report</var><a class="copiable-link" href="#index-fibers_002dmap_002dwith_002dprogress"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dparallelism_002dlimiter"><span class="category-def">Procedure: </span><span><strong class="def-name">make-parallelism-limiter</strong> <var class="def-var-arguments">_ KEY: #:name</var><a class="copiable-link" href="#index-make_002dparallelism_002dlimiter"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005fpromise">
<div class="nav-panel">
<p>
Next: <a href="#knots_005fqueue" accesskey="n" rel="next">(knots queue)</a>, Previous: <a href="#knots_005fparallelism" accesskey="p" rel="prev">(knots parallelism)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-promise_0029"><span>1.3 (knots promise)<a class="copiable-link" href="#g_t_0028knots-promise_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Macros-1" accesskey="1">Macros</a></li>
<li><a href="#Procedures-2" accesskey="2">Procedures</a></li>
</ul>
<div class="subsection-level-extent" id="Macros-1">
<h4 class="subsection"><span>1.3.1 Macros<a class="copiable-link" href="#Macros-1"> &para;</a></span></h4>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-fibers_002dpromise_003f"><span class="category-def">Macro: </span><span><strong class="def-name">fibers-promise?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002dpromise_003f"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Procedures-2">
<h4 class="subsection"><span>1.3.2 Procedures<a class="copiable-link" href="#Procedures-2"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002ddelay"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-delay</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002ddelay"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dforce"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-force</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002dforce"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dpromise_002dreset"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-promise-reset</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002dpromise_002dreset"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-fibers_002dpromise_002dresult_002davailable_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">fibers-promise-result-available?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fibers_002dpromise_002dresult_002davailable_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005fqueue">
<div class="nav-panel">
<p>
Next: <a href="#knots_005fresource_002dpool" accesskey="n" rel="next">(knots resource-pool)</a>, Previous: <a href="#knots_005fpromise" accesskey="p" rel="prev">(knots promise)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-queue_0029"><span>1.4 (knots queue)<a class="copiable-link" href="#g_t_0028knots-queue_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Procedures-3" accesskey="1">Procedures</a></li>
</ul>
<div class="subsection-level-extent" id="Procedures-3">
<h4 class="subsection"><span>1.4.1 Procedures<a class="copiable-link" href="#Procedures-3"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-spawn_002dqueueing_002dfiber"><span class="category-def">Procedure: </span><span><strong class="def-name">spawn-queueing-fiber</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-spawn_002dqueueing_002dfiber"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005fresource_002dpool">
<div class="nav-panel">
<p>
Next: <a href="#knots_005fthread_002dpool" accesskey="n" rel="next">(knots thread-pool)</a>, Previous: <a href="#knots_005fqueue" accesskey="p" rel="prev">(knots queue)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-resource_002dpool_0029"><span>1.5 (knots resource-pool)<a class="copiable-link" href="#g_t_0028knots-resource_002dpool_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Macros-2" accesskey="1">Macros</a></li>
<li><a href="#Parameters" accesskey="2">Parameters</a></li>
<li><a href="#Procedures-4" accesskey="3">Procedures</a></li>
<li><a href="#Record-Types" accesskey="4">Record Types</a></li>
</ul>
<div class="subsection-level-extent" id="Macros-2">
<h4 class="subsection"><span>1.5.1 Macros<a class="copiable-link" href="#Macros-2"> &para;</a></span></h4>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-resource_002dpool_002dchannel"><span class="category-def">Macro: </span><span><strong class="def-name">resource-pool-channel</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-resource_002dpool_002dchannel"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-resource_002dpool_002dconfiguration"><span class="category-def">Macro: </span><span><strong class="def-name">resource-pool-configuration</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-resource_002dpool_002dconfiguration"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-resource_002dpool_002dname"><span class="category-def">Macro: </span><span><strong class="def-name">resource-pool-name</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-resource_002dpool_002dname"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-resource_002dpool_003f"><span class="category-def">Macro: </span><span><strong class="def-name">resource-pool?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-resource_002dpool_003f"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-with_002dresource_002dfrom_002dpool"><span class="category-def">Macro: </span><span><strong class="def-name">with-resource-from-pool</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-with_002dresource_002dfrom_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Parameters">
<h4 class="subsection"><span>1.5.2 Parameters<a class="copiable-link" href="#Parameters"> &para;</a></span></h4>
<dl class="first-defvr">
<dt class="defvr" id="index-resource_002dpool_002ddefault_002dtimeout_002dhandler"><span class="category-def">Parameter: </span><span><strong class="def-name">resource-pool-default-timeout-handler</strong><a class="copiable-link" href="#index-resource_002dpool_002ddefault_002dtimeout_002dhandler"> &para;</a></span></dt>
<dd><p>Default value:
</p>
<pre class="verbatim">#f
</pre>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Procedures-4">
<h4 class="subsection"><span>1.5.3 Procedures<a class="copiable-link" href="#Procedures-4"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-call_002dwith_002dresource_002dfrom_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">call-with-resource-from-pool</strong> <var class="def-var-arguments">_ _ KEY: #:timeout #:timeout-handler #:max-waiters #:channel #:destroy-resource-on-exception?</var><a class="copiable-link" href="#index-call_002dwith_002dresource_002dfrom_002dpool"> &para;</a></span></dt>
<dd><p>Call PROC with a resource from POOL, blocking until a resource becomes
available. Return the resource once PROC has returned.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-destroy_002dresource_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">destroy-resource-pool</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-destroy_002dresource_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dfixed_002dsize_002dresource_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">make-fixed-size-resource-pool</strong> <var class="def-var-arguments">_ KEY: #:delay-logger #:duration-logger #:destructor #:scheduler #:name #:default-checkout-timeout #:default-max-waiters</var><a class="copiable-link" href="#index-make_002dfixed_002dsize_002dresource_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dresource_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">make-resource-pool</strong> <var class="def-var-arguments">_ _ KEY: #:min-size #:idle-seconds #:delay-logger #:duration-logger #:destructor #:lifetime #:scheduler #:name #:add-resources-parallelism #:default-checkout-timeout #:default-max-waiters</var><a class="copiable-link" href="#index-make_002dresource_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dresource_002dpool_002ddestroy_002dresource_002dexception"><span class="category-def">Procedure: </span><span><strong class="def-name">make-resource-pool-destroy-resource-exception</strong><a class="copiable-link" href="#index-make_002dresource_002dpool_002ddestroy_002dresource_002dexception"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002ddestroy_002dresource_002dexception_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-destroy-resource-exception?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002ddestroy_002dresource_002dexception_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002ddestroyed_002derror_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-destroyed-error-pool</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002ddestroyed_002derror_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002ddestroyed_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-destroyed-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002ddestroyed_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002dstats"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-stats</strong> <var class="def-var-arguments">_ KEY: #:timeout</var><a class="copiable-link" href="#index-resource_002dpool_002dstats"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002dtimeout_002derror_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-timeout-error-pool</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002dtimeout_002derror_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002dtimeout_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-timeout-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002dtimeout_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-too-many-waiters-error-pool</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_002dwaiters_002dcount"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-too-many-waiters-error-waiters-count</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_002dwaiters_002dcount"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">resource-pool-too-many-waiters-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Record-Types">
<h4 class="subsection"><span>1.5.4 Record Types<a class="copiable-link" href="#Record-Types"> &para;</a></span></h4>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026resource_002dpool_002ddestroy_002dresource"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;resource-pool-destroy-resource</strong><a class="copiable-link" href="#index-_0026resource_002dpool_002ddestroy_002dresource"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
</ul>
</dd></dl>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026resource_002dpool_002ddestroyed"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;resource-pool-destroyed</strong><a class="copiable-link" href="#index-_0026resource_002dpool_002ddestroyed"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">pool</code></li></ul>
</dd></dl>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026resource_002dpool_002dtimeout"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;resource-pool-timeout</strong><a class="copiable-link" href="#index-_0026resource_002dpool_002dtimeout"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">pool</code></li></ul>
</dd></dl>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026resource_002dpool_002dtoo_002dmany_002dwaiters"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;resource-pool-too-many-waiters</strong><a class="copiable-link" href="#index-_0026resource_002dpool_002dtoo_002dmany_002dwaiters"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">pool</code></li><li><code class="code">waiters-count</code></li></ul>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005fthread_002dpool">
<div class="nav-panel">
<p>
Next: <a href="#knots_005ftimeout" accesskey="n" rel="next">(knots timeout)</a>, Previous: <a href="#knots_005fresource_002dpool" accesskey="p" rel="prev">(knots resource-pool)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-thread_002dpool_0029"><span>1.6 (knots thread-pool)<a class="copiable-link" href="#g_t_0028knots-thread_002dpool_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Macros-3" accesskey="1">Macros</a></li>
<li><a href="#Procedures-5" accesskey="2">Procedures</a></li>
<li><a href="#Record-Types-1" accesskey="3">Record Types</a></li>
</ul>
<div class="subsection-level-extent" id="Macros-3">
<h4 class="subsection"><span>1.6.1 Macros<a class="copiable-link" href="#Macros-3"> &para;</a></span></h4>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-fixed_002dsize_002dthread_002dpool_002dchannel"><span class="category-def">Macro: </span><span><strong class="def-name">fixed-size-thread-pool-channel</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fixed_002dsize_002dthread_002dpool_002dchannel"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-fixed_002dsize_002dthread_002dpool_002dcurrent_002dprocedures"><span class="category-def">Macro: </span><span><strong class="def-name">fixed-size-thread-pool-current-procedures</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fixed_002dsize_002dthread_002dpool_002dcurrent_002dprocedures"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-fixed_002dsize_002dthread_002dpool_003f"><span class="category-def">Macro: </span><span><strong class="def-name">fixed-size-thread-pool?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-fixed_002dsize_002dthread_002dpool_003f"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-thread_002dpool_002dresource_002dpool"><span class="category-def">Macro: </span><span><strong class="def-name">thread-pool-resource-pool</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-thread_002dpool_002dresource_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-thread_002dpool_003f"><span class="category-def">Macro: </span><span><strong class="def-name">thread-pool?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-thread_002dpool_003f"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Procedures-5">
<h4 class="subsection"><span>1.6.2 Procedures<a class="copiable-link" href="#Procedures-5"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-call_002dwith_002dthread"><span class="category-def">Procedure: </span><span><strong class="def-name">call-with-thread</strong> <var class="def-var-arguments">_ _ KEY: #:duration-logger #:checkout-timeout #:channel #:destroy-thread-on-exception? #:max-waiters</var><a class="copiable-link" href="#index-call_002dwith_002dthread"> &para;</a></span></dt>
<dd><p>Send PROC to the thread pool through CHANNEL. Return the result of
PROC. If already in the thread pool, call PROC immediately.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-destroy_002dthread_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">destroy-thread-pool</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-destroy_002dthread_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dfixed_002dsize_002dthread_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">make-fixed-size-thread-pool</strong> <var class="def-var-arguments">_ KEY: #:thread-initializer #:thread-destructor #:delay-logger #:duration-logger #:thread-lifetime #:expire-on-exception? #:name #:use-default-io-waiters? #:default-checkout-timeout</var><a class="copiable-link" href="#index-make_002dfixed_002dsize_002dthread_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dthread_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">make-thread-pool</strong> <var class="def-var-arguments">_ KEY: #:min-size #:scheduler #:thread-initializer #:thread-destructor #:delay-logger #:duration-logger #:thread-lifetime #:expire-on-exception? #:name #:use-default-io-waiters? #:default-checkout-timeout</var><a class="copiable-link" href="#index-make_002dthread_002dpool"> &para;</a></span></dt>
<dd><p>Return a channel used to offload work to a dedicated thread. ARGS are
the arguments of the thread pool procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-set_002dthread_002dname"><span class="category-def">Procedure: </span><span><strong class="def-name">set-thread-name</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-set_002dthread_002dname"> &para;</a></span></dt>
<dd><p>Set the name of the calling thread to NAME. NAME is truncated to 15
bytes.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-thread_002dname"><span class="category-def">Procedure: </span><span><strong class="def-name">thread-name</strong><a class="copiable-link" href="#index-thread_002dname"> &para;</a></span></dt>
<dd><p>Return the name of the calling thread as a string.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-thread_002dpool_002darguments_002dparameter"><span class="category-def">Procedure: </span><span><strong class="def-name">thread-pool-arguments-parameter</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-thread_002dpool_002darguments_002dparameter"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-thread_002dpool_002ddefault_002dcheckout_002dtimeout"><span class="category-def">Procedure: </span><span><strong class="def-name">thread-pool-default-checkout-timeout</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-thread_002dpool_002ddefault_002dcheckout_002dtimeout"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-thread_002dpool_002dtimeout_002derror_002dpool"><span class="category-def">Procedure: </span><span><strong class="def-name">thread-pool-timeout-error-pool</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-thread_002dpool_002dtimeout_002derror_002dpool"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-thread_002dpool_002dtimeout_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">thread-pool-timeout-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-thread_002dpool_002dtimeout_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Record-Types-1">
<h4 class="subsection"><span>1.6.3 Record Types<a class="copiable-link" href="#Record-Types-1"> &para;</a></span></h4>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026thread_002dpool_002dtimeout_002derror"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;thread-pool-timeout-error</strong><a class="copiable-link" href="#index-_0026thread_002dpool_002dtimeout_002derror"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">pool</code></li></ul>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005ftimeout">
<div class="nav-panel">
<p>
Next: <a href="#knots_005fweb_002dserver" accesskey="n" rel="next">(knots web-server)</a>, Previous: <a href="#knots_005fthread_002dpool" accesskey="p" rel="prev">(knots thread-pool)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-timeout_0029"><span>1.7 (knots timeout)<a class="copiable-link" href="#g_t_0028knots-timeout_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Procedures-6" accesskey="1">Procedures</a></li>
<li><a href="#Record-Types-2" accesskey="2">Record Types</a></li>
</ul>
<div class="subsection-level-extent" id="Procedures-6">
<h4 class="subsection"><span>1.7.1 Procedures<a class="copiable-link" href="#Procedures-6"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-port_002dread_002dtimeout_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">port-read-timeout-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-port_002dread_002dtimeout_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-port_002dtimeout_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">port-timeout-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-port_002dtimeout_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-port_002dwrite_002dtimeout_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">port-write-timeout-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-port_002dwrite_002dtimeout_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-wait_002duntil_002dport_002dreadable_002doperation"><span class="category-def">Procedure: </span><span><strong class="def-name">wait-until-port-readable-operation</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-wait_002duntil_002dport_002dreadable_002doperation"> &para;</a></span></dt>
<dd><p>Make an operation that will succeed when PORT is readable.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-wait_002duntil_002dport_002dwritable_002doperation"><span class="category-def">Procedure: </span><span><strong class="def-name">wait-until-port-writable-operation</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-wait_002duntil_002dport_002dwritable_002doperation"> &para;</a></span></dt>
<dd><p>Make an operation that will succeed when PORT is writable.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-with_002dfibers_002dtimeout"><span class="category-def">Procedure: </span><span><strong class="def-name">with-fibers-timeout</strong> <var class="def-var-arguments">_ KEY: #:timeout #:on-timeout</var><a class="copiable-link" href="#index-with_002dfibers_002dtimeout"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-with_002dport_002dtimeouts"><span class="category-def">Procedure: </span><span><strong class="def-name">with-port-timeouts</strong> <var class="def-var-arguments">_ KEY: #:timeout #:read-timeout #:write-timeout</var><a class="copiable-link" href="#index-with_002dport_002dtimeouts"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Record-Types-2">
<h4 class="subsection"><span>1.7.2 Record Types<a class="copiable-link" href="#Record-Types-2"> &para;</a></span></h4>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026port_002dread_002dtimeout_002derror"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;port-read-timeout-error</strong><a class="copiable-link" href="#index-_0026port_002dread_002dtimeout_002derror"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">thunk</code></li><li><code class="code">port</code></li></ul>
</dd></dl>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026port_002dtimeout_002derror"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;port-timeout-error</strong><a class="copiable-link" href="#index-_0026port_002dtimeout_002derror"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">thunk</code></li><li><code class="code">port</code></li></ul>
</dd></dl>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026port_002dwrite_002dtimeout_002derror"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;port-write-timeout-error</strong><a class="copiable-link" href="#index-_0026port_002dwrite_002dtimeout_002derror"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">thunk</code></li><li><code class="code">port</code></li></ul>
</dd></dl>
<hr>
</div>
</div>
<div class="section-level-extent" id="knots_005fweb_002dserver">
<div class="nav-panel">
<p>
Previous: <a href="#knots_005ftimeout" accesskey="p" rel="prev">(knots timeout)</a>, Up: <a href="#API" accesskey="u" rel="up">API</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h3 class="section" id="g_t_0028knots-web_002dserver_0029"><span>1.8 (knots web-server)<a class="copiable-link" href="#g_t_0028knots-web_002dserver_0029"> &para;</a></span></h3>
<ul class="mini-toc">
<li><a href="#Macros-4" accesskey="1">Macros</a></li>
<li><a href="#Procedures-7" accesskey="2">Procedures</a></li>
<li><a href="#Record-Types-3" accesskey="3">Record Types</a></li>
</ul>
<div class="subsection-level-extent" id="Macros-4">
<h4 class="subsection"><span>1.8.1 Macros<a class="copiable-link" href="#Macros-4"> &para;</a></span></h4>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-web_002dserver_002dport"><span class="category-def">Macro: </span><span><strong class="def-name">web-server-port</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-web_002dserver_002dport"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-web_002dserver_002dsocket"><span class="category-def">Macro: </span><span><strong class="def-name">web-server-socket</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-web_002dserver_002dsocket"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
<dl class="first-deffn first-defmac-alias-first-deffn">
<dt class="deffn defmac-alias-deffn" id="index-web_002dserver_003f"><span class="category-def">Macro: </span><span><strong class="def-name">web-server?</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-web_002dserver_003f"> &para;</a></span></dt>
<dd><p>Undocumented macro.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Procedures-7">
<h4 class="subsection"><span>1.8.2 Procedures<a class="copiable-link" href="#Procedures-7"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-default_002dwrite_002dresponse_002dexception_002dhandler"><span class="category-def">Procedure: </span><span><strong class="def-name">default-write-response-exception-handler</strong> <var class="def-var-arguments">a b</var><a class="copiable-link" href="#index-default_002dwrite_002dresponse_002dexception_002dhandler"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dchunked_002doutput_002dport_002fknots"><span class="category-def">Procedure: </span><span><strong class="def-name">make-chunked-output-port/knots</strong> <var class="def-var-arguments">_ KEY: #:keep-alive? #:buffering</var><a class="copiable-link" href="#index-make_002dchunked_002doutput_002dport_002fknots"> &para;</a></span></dt>
<dd><p>Returns a new port which translates non-encoded data into a HTTP chunked
transfer encoded data and writes this to PORT. Data written to this
port is buffered until the port is flushed, at which point it is all
sent as one chunk. The port will otherwise be flushed every BUFFERING
bytes, which defaults to 1200. Take care to close the port when done,
as it will output the remaining data, and encode the final zero chunk.
When the port is closed it will also close PORT, unless KEEP-ALIVE? is
true.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-read_002drequest_002dbody_002fknots"><span class="category-def">Procedure: </span><span><strong class="def-name">read-request-body/knots</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-read_002drequest_002dbody_002fknots"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-request_002dbody_002dended_002dprematurely_002derror_003f"><span class="category-def">Procedure: </span><span><strong class="def-name">request-body-ended-prematurely-error?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-request_002dbody_002dended_002dprematurely_002derror_003f"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-request_002dbody_002dport_002fknots"><span class="category-def">Procedure: </span><span><strong class="def-name">request-body-port/knots</strong> <var class="def-var-arguments">a</var><a class="copiable-link" href="#index-request_002dbody_002dport_002fknots"> &para;</a></span></dt>
<dd><p>Undocumented procedure.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-run_002dknots_002dweb_002dserver"><span class="category-def">Procedure: </span><span><strong class="def-name">run-knots-web-server</strong> <var class="def-var-arguments">_ KEY: #:host #:family #:addr #:port #:socket #:read-request-exception-handler #:write-response-exception-handler #:connection-idle-timeout #:connection-buffer-size</var><a class="copiable-link" href="#index-run_002dknots_002dweb_002dserver"> &para;</a></span></dt>
<dd><p>Run the knots web server.
</p>
<p>HANDLER should be a procedure that takes one argument, the HTTP request
and returns two values, the response and response body.
</p>
<p>For example, here is a simple &quot;Hello, World!&quot; server:
</p>
<div class="example">
<pre class="example-preformatted"> (define (handler request)
(let ((body (read-request-body request)))
(values '((content-type . (text/plain)))
&quot;Hello, World!&quot;)))
(run-knots-web-server handler)
</pre></div>
<p>The response and body will be run through sanitize-response before
sending back to the client.
</p>
</dd></dl>
<dl class="first-deffn">
<dt class="deffn" id="index-sanitize_002dresponse"><span class="category-def">Procedure: </span><span><strong class="def-name">sanitize-response</strong> <var class="def-var-arguments">a b c</var><a class="copiable-link" href="#index-sanitize_002dresponse"> &para;</a></span></dt>
<dd><p>&quot;Sanitize&quot; the given response and body, making them appropriate for the
given request.
</p>
<p>As a convenience to web handler authors, RESPONSE may be given as an
alist of headers, in which case it is used to construct a default
response. Ensures that the response version corresponds to the request
version. If BODY is a string, encodes the string to a bytevector, in an
encoding appropriate for RESPONSE. Adds a content-length and
content-type header, as necessary.
</p>
<p>If BODY is a procedure, it is called with a port as an argument, and the
output collected as a bytevector. In the future we might try to instead
use a compressing, chunk-encoded port, and call this procedure later, in
the write-client procedure. Authors are advised not to rely on the
procedure being called at any particular time.
</p>
</dd></dl>
</div>
<div class="subsection-level-extent" id="Record-Types-3">
<h4 class="subsection"><span>1.8.3 Record Types<a class="copiable-link" href="#Record-Types-3"> &para;</a></span></h4>
<dl class="first-deftp">
<dt class="deftp" id="index-_0026request_002dbody_002dended_002dprematurely"><span class="category-def">Record type: </span><span><strong class="def-name">&amp;request-body-ended-prematurely</strong><a class="copiable-link" href="#index-_0026request_002dbody_002dended_002dprematurely"> &para;</a></span></dt>
<dd><p>This record type has the following fields:
</p>
<ul class="itemize mark-bullet">
<li><code class="code">bytes-read</code></li></ul>
</dd></dl>
<hr>
</div>
</div>
</div>
<div class="appendix-level-extent" id="Version-History">
<div class="nav-panel">
<p>
Next: <a href="#Copying-Information" accesskey="n" rel="next">Copying Information</a>, Previous: <a href="#API" accesskey="p" rel="prev">API</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="appendix" id="Version-History-1"><span>Appendix A Version History<a class="copiable-link" href="#Version-History-1"> &para;</a></span></h2>
<dl class="table">
<dt><em class="dfn">Version 0.Y.0, Month DD, 20YY</em></dt>
<dd><ul class="itemize mark-bullet">
<li>No initial release has yet been made.
</li></ul>
</dd>
</dl>
<hr>
</div>
<div class="appendix-level-extent" id="Copying-Information">
<div class="nav-panel">
<p>
Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Version-History" accesskey="p" rel="prev">Version History</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="appendix" id="Copying-Information-1"><span>Appendix B Copying Information<a class="copiable-link" href="#Copying-Information-1"> &para;</a></span></h2>
<p>Copyright © 2024, 2025 Christopher Baines &lt;mail@cbaines.net&gt;
</p>
<p>This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 3 of the
License, or (at your option) any later version.
</p>
<hr>
</div>
<div class="unnumbered-level-extent" id="Concept-Index">
<div class="nav-panel">
<p>
Next: <a href="#Data-Type-Index" accesskey="n" rel="next">Data Type Index</a>, Previous: <a href="#Copying-Information" accesskey="p" rel="prev">Copying Information</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="unnumbered" id="Concept-Index-1"><span>Concept Index<a class="copiable-link" href="#Concept-Index-1"> &para;</a></span></h2>
<hr>
</div>
<div class="unnumbered-level-extent" id="Data-Type-Index">
<div class="nav-panel">
<p>
Next: <a href="#Procedure-Index" accesskey="n" rel="next">Procedure Index</a>, Previous: <a href="#Concept-Index" accesskey="p" rel="prev">Concept Index</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="unnumbered" id="Data-Type-Index-1"><span>Data Type Index<a class="copiable-link" href="#Data-Type-Index-1"> &para;</a></span></h2>
<div class="printindex tp-printindex">
<table class="tp-entries-printindex" border="0">
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Data-Type-Index_tp_symbol-1">&amp;</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026port_002dread_002dtimeout_002derror"><code>&amp;port-read-timeout-error</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026port_002dtimeout_002derror"><code>&amp;port-timeout-error</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026port_002dwrite_002dtimeout_002derror"><code>&amp;port-write-timeout-error</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026request_002dbody_002dended_002dprematurely"><code>&amp;request-body-ended-prematurely</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026resource_002dpool_002ddestroy_002dresource"><code>&amp;resource-pool-destroy-resource</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026resource_002dpool_002ddestroyed"><code>&amp;resource-pool-destroyed</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026resource_002dpool_002dtimeout"><code>&amp;resource-pool-timeout</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026resource_002dpool_002dtoo_002dmany_002dwaiters"><code>&amp;resource-pool-too-many-waiters</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-_0026thread_002dpool_002dtimeout_002derror"><code>&amp;thread-pool-timeout-error</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
</table>
</div>
<hr>
</div>
<div class="unnumbered-level-extent" id="Procedure-Index">
<div class="nav-panel">
<p>
Next: <a href="#Variable-Index" accesskey="n" rel="next">Variable Index</a>, Previous: <a href="#Data-Type-Index" accesskey="p" rel="prev">Data Type Index</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="unnumbered" id="Procedure-Index-1"><span>Procedure Index<a class="copiable-link" href="#Procedure-Index-1"> &para;</a></span></h2>
<div class="printindex fn-printindex">
<table class="fn-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-C"><b>C</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-D"><b>D</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-F"><b>F</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-M"><b>M</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-N"><b>N</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-P"><b>P</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-R"><b>R</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-S"><b>S</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-T"><b>T</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-W"><b>W</b></a>
&nbsp;
</td></tr></table>
<table class="fn-entries-printindex" border="0">
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-C">C</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-call_002dwith_002dparallelism_002dlimiter"><code>call-with-parallelism-limiter</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-call_002dwith_002dresource_002dfrom_002dpool"><code>call-with-resource-from-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-call_002dwith_002dthread"><code>call-with-thread</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-D">D</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-default_002dwrite_002dresponse_002dexception_002dhandler"><code>default-write-response-exception-handler</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-destroy_002dparallelism_002dlimiter"><code>destroy-parallelism-limiter</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-destroy_002dresource_002dpool"><code>destroy-resource-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-destroy_002dthread_002dpool"><code>destroy-thread-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-F">F</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fiberize"><code>fiberize</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dbatch_002dfor_002deach"><code>fibers-batch-for-each</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dbatch_002dmap"><code>fibers-batch-map</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002ddelay"><code>fibers-delay</code></a></td><td class="printindex-index-section"><a href="#knots_005fpromise">knots_promise</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dfor_002deach"><code>fibers-for-each</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dforce"><code>fibers-force</code></a></td><td class="printindex-index-section"><a href="#knots_005fpromise">knots_promise</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dlet"><code>fibers-let</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dmap"><code>fibers-map</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dmap_002dwith_002dprogress"><code>fibers-map-with-progress</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dparallel"><code>fibers-parallel</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dpromise_002dreset"><code>fibers-promise-reset</code></a></td><td class="printindex-index-section"><a href="#knots_005fpromise">knots_promise</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dpromise_002dresult_002davailable_003f"><code>fibers-promise-result-available?</code></a></td><td class="printindex-index-section"><a href="#knots_005fpromise">knots_promise</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fibers_002dpromise_003f"><code>fibers-promise?</code></a></td><td class="printindex-index-section"><a href="#knots_005fpromise">knots_promise</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fixed_002dsize_002dthread_002dpool_002dchannel"><code>fixed-size-thread-pool-channel</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fixed_002dsize_002dthread_002dpool_002dcurrent_002dprocedures"><code>fixed-size-thread-pool-current-procedures</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-fixed_002dsize_002dthread_002dpool_003f"><code>fixed-size-thread-pool?</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-M">M</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dchunked_002doutput_002dport_002fknots"><code>make-chunked-output-port/knots</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dfixed_002dsize_002dresource_002dpool"><code>make-fixed-size-resource-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dfixed_002dsize_002dthread_002dpool"><code>make-fixed-size-thread-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dparallelism_002dlimiter"><code>make-parallelism-limiter</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dresource_002dpool"><code>make-resource-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dresource_002dpool_002ddestroy_002dresource_002dexception"><code>make-resource-pool-destroy-resource-exception</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-make_002dthread_002dpool"><code>make-thread-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-N">N</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-non_002dblocking_002dopen_002dsocket_002dfor_002duri"><code>non-blocking-open-socket-for-uri</code></a></td><td class="printindex-index-section"><a href="#knots_005fnon_002dblocking">knots_non-blocking</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-non_002dblocking_002dport"><code>non-blocking-port</code></a></td><td class="printindex-index-section"><a href="#knots_005fnon_002dblocking">knots_non-blocking</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-P">P</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-parallelism_002dlimiter_003f"><code>parallelism-limiter?</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-port_002dread_002dtimeout_002derror_003f"><code>port-read-timeout-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-port_002dtimeout_002derror_003f"><code>port-timeout-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-port_002dwrite_002dtimeout_002derror_003f"><code>port-write-timeout-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-R">R</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-read_002drequest_002dbody_002fknots"><code>read-request-body/knots</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002dbody_002dended_002dprematurely_002derror_003f"><code>request-body-ended-prematurely-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-request_002dbody_002dport_002fknots"><code>request-body-port/knots</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dchannel"><code>resource-pool-channel</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dconfiguration"><code>resource-pool-configuration</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002ddestroy_002dresource_002dexception_003f"><code>resource-pool-destroy-resource-exception?</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002ddestroyed_002derror_002dpool"><code>resource-pool-destroyed-error-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002ddestroyed_002derror_003f"><code>resource-pool-destroyed-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dname"><code>resource-pool-name</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dstats"><code>resource-pool-stats</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dtimeout_002derror_002dpool"><code>resource-pool-timeout-error-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dtimeout_002derror_003f"><code>resource-pool-timeout-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_002dpool"><code>resource-pool-too-many-waiters-error-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_002dwaiters_002dcount"><code>resource-pool-too-many-waiters-error-waiters-count</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002dtoo_002dmany_002dwaiters_002derror_003f"><code>resource-pool-too-many-waiters-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_003f"><code>resource-pool?</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-run_002dknots_002dweb_002dserver"><code>run-knots-web-server</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-S">S</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-sanitize_002dresponse"><code>sanitize-response</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-set_002dthread_002dname"><code>set-thread-name</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-spawn_002dqueueing_002dfiber"><code>spawn-queueing-fiber</code></a></td><td class="printindex-index-section"><a href="#knots_005fqueue">knots_queue</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-T">T</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dname"><code>thread-name</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dpool_002darguments_002dparameter"><code>thread-pool-arguments-parameter</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dpool_002ddefault_002dcheckout_002dtimeout"><code>thread-pool-default-checkout-timeout</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dpool_002dresource_002dpool"><code>thread-pool-resource-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dpool_002dtimeout_002derror_002dpool"><code>thread-pool-timeout-error-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dpool_002dtimeout_002derror_003f"><code>thread-pool-timeout-error?</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-thread_002dpool_003f"><code>thread-pool?</code></a></td><td class="printindex-index-section"><a href="#knots_005fthread_002dpool">knots_thread-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Procedure-Index_fn_letter-W">W</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-wait_002duntil_002dport_002dreadable_002doperation"><code>wait-until-port-readable-operation</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-wait_002duntil_002dport_002dwritable_002doperation"><code>wait-until-port-writable-operation</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-web_002dserver_002dport"><code>web-server-port</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-web_002dserver_002dsocket"><code>web-server-socket</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-web_002dserver_003f"><code>web-server?</code></a></td><td class="printindex-index-section"><a href="#knots_005fweb_002dserver">knots_web-server</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-with_002dfibers_002dtimeout"><code>with-fibers-timeout</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-with_002dparallelism_002dlimiter"><code>with-parallelism-limiter</code></a></td><td class="printindex-index-section"><a href="#knots_005fparallelism">knots_parallelism</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-with_002dport_002dtimeouts"><code>with-port-timeouts</code></a></td><td class="printindex-index-section"><a href="#knots_005ftimeout">knots_timeout</a></td></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-with_002dresource_002dfrom_002dpool"><code>with-resource-from-pool</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
</table>
<table class="fn-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-C"><b>C</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-D"><b>D</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-F"><b>F</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-M"><b>M</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-N"><b>N</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-P"><b>P</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-R"><b>R</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-S"><b>S</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-T"><b>T</b></a>
&nbsp;
<a class="summary-letter-printindex" href="#Procedure-Index_fn_letter-W"><b>W</b></a>
&nbsp;
</td></tr></table>
</div>
<hr>
</div>
<div class="unnumbered-level-extent" id="Variable-Index">
<div class="nav-panel">
<p>
Previous: <a href="#Procedure-Index" accesskey="p" rel="prev">Procedure Index</a>, Up: <a href="#Top" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<h2 class="unnumbered" id="Variable-Index-1"><span>Variable Index<a class="copiable-link" href="#Variable-Index-1"> &para;</a></span></h2>
<div class="printindex vr-printindex">
<table class="vr-entries-printindex" border="0">
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
<tr><td colspan="3"><hr></td></tr>
<tr><th id="Variable-Index_vr_letter-R">R</th></tr>
<tr><td></td><td class="printindex-index-entry"><a href="#index-resource_002dpool_002ddefault_002dtimeout_002dhandler"><code>resource-pool-default-timeout-handler</code></a></td><td class="printindex-index-section"><a href="#knots_005fresource_002dpool">knots_resource-pool</a></td></tr>
<tr><td colspan="3"><hr></td></tr>
</table>
</div>
</div>
</div>
</body>
</html>