# Module Nethttp_client_conncache

    module Nethttp_client_conncache: sig .. end

Connection cache

This module allows one to create special connection caches, e.g. by deriving from the official ones

    type transport_layer_id = int

Same as in `Nethttp_client.transport_layer_id`

    type inactive_data = {

`` | `conn_trans : `transport_layer_id`;`
`` | `tls_stashed_endpoint : `exn option`;`

}

    type conn_state = [ `Active of <  > | `Inactive of inactive_data ]

A TCP connection may be either ``Inactive`, i.e. it is not used by any pipeline, or ``Active obj`, i.e. it is in use by the pipeline `obj` (this is the `Nethttp_client.pipeline` coerced to `< >`).

Since Ocamlnet-4, ``Inactive` connections carry an `inactive_data` record (was a `transport_layer_id` before). Since Ocamlnet-3.3, ``Inactive` connections carry the transport ID as argument. Since 3.8, there is the option of storing an exception value `private_data`. This may be used by implementations to store private data together with the file descriptor.

    type peer = [ `Direct of string * int
           | `Direct_name of string * int
           | `Http_proxy of string * int
           | `Http_proxy_connect of (string * int) * (string * int)
           | `Socks5 of (string * int) * (string * int) ]

    class type connection_cache = object .. end

    class restrictive_cache : unit -> connection_cache

A restrictive cache closes connections as soon as there are no pending requests.

    class aggressive_cache : unit -> connection_cache

This type of cache tries to keep connections as long open as possible.