.. index:: single: http_socket
.. _http_socket/0:

.. rst-class:: right

**object**

``http_socket``
===============

Sockets-backed HTTP transport predicates built on top of the ``sockets``, ``http_client_core``, and ``http_server`` libraries.

| **Availability:** 
|    ``logtalk_load(http_socket(loader))``

| **Author:** Paulo Moura
| **Version:** 1:0:0
| **Date:** 2026-07-08

| **Compilation flags:**
|    ``static, context_switching_calls, threaded``


| **Implements:**
|    ``public`` :ref:`http_socket_protocol <http_socket_protocol/0>`
| **Imports:**
|    ``public`` :ref:`options <options/0>`
|    ``public`` :ref:`http_message_helpers <http_message_helpers/0>`
|    ``public`` :ref:`http_text_helpers <http_text_helpers/0>`
| **Uses:**
|    :ref:`http_client_core <http_client_core/0>`
|    :ref:`http_core <http_core/0>`
|    :ref:`http_server <http_server/0>`
|    :ref:`list <list/0>`
|    :ref:`socket <socket/0>`
|    :ref:`user <user/0>`

| **Remarks:**
|    (none)

| **Inherited public predicates:**
|     :ref:`options_protocol/0::check_option/1`  :ref:`options_protocol/0::check_options/1`  :ref:`http_socket_protocol/0::close_connection/1`  :ref:`http_socket_protocol/0::close_connection_pool/1`  :ref:`http_socket_protocol/0::close_listener/1`  :ref:`http_socket_protocol/0::connection_pool_stats/2`  :ref:`http_socket_protocol/0::connection_streams/3`  :ref:`options_protocol/0::default_option/1`  :ref:`options_protocol/0::default_options/1`  :ref:`http_socket_protocol/0::exchange/3`  :ref:`http_socket_protocol/0::exchange/4`  :ref:`http_socket_protocol/0::exchange/5`  :ref:`http_socket_protocol/0::exchange_sequence/3`  :ref:`http_socket_protocol/0::exchange_sequence/4`  :ref:`http_socket_protocol/0::open_connection/4`  :ref:`http_socket_protocol/0::open_connection_pool/4`  :ref:`http_socket_protocol/0::open_listener/4`  :ref:`options_protocol/0::option/2`  :ref:`options_protocol/0::option/3`  :ref:`http_socket_protocol/0::request_listener_shutdown/1`  :ref:`http_socket_protocol/0::request_shutdown/1`  :ref:`http_socket_protocol/0::serve_listener/4`  :ref:`http_socket_protocol/0::serve_listener/5`  :ref:`http_socket_protocol/0::serve_once/3`  :ref:`http_socket_protocol/0::serve_until_shutdown/4`  :ref:`http_socket_protocol/0::serve_until_shutdown/5`  :ref:`http_socket_protocol/0::serve_websocket_once/5`  :ref:`http_socket_protocol/0::supported_request_scheme/1`  :ref:`http_socket_protocol/0::supported_websocket_scheme/1`  :ref:`options_protocol/0::valid_option/1`  :ref:`options_protocol/0::valid_options/1`  

.. contents::
   :local:
   :backlinks: top

Public predicates
-----------------

(no local declarations; see entity ancestors if any)

Protected predicates
--------------------

(no local declarations; see entity ancestors if any)

Private predicates
------------------

.. index:: connection_pool_seed_/1
.. _http_socket/0::connection_pool_seed_/1:

``connection_pool_seed_/1``
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Last allocated connection pool identifier.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``connection_pool_seed_(PoolId)``
| **Mode and number of proofs:**
|    ``connection_pool_seed_(?positive_integer)`` - ``zero_or_one``


------------

.. index:: connection_pool_config_/6
.. _http_socket/0::connection_pool_config_/6:

``connection_pool_config_/6``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Stored connection pool configuration indexed by pool identifier.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``connection_pool_config_(PoolId,Host,Port,MinSize,MaxSize,ConnectionOptions)``
| **Mode and number of proofs:**
|    ``connection_pool_config_(?positive_integer,?atom,?integer,?non_negative_integer,?positive_integer,?list)`` - ``zero_or_more``


------------

.. index:: connection_pool_available_/2
.. _http_socket/0::connection_pool_available_/2:

``connection_pool_available_/2``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Reusable idle client connections indexed by pool identifier.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``connection_pool_available_(PoolId,Connection)``
| **Mode and number of proofs:**
|    ``connection_pool_available_(?positive_integer,?compound)`` - ``zero_or_more``


------------

.. index:: connection_pool_in_use_/2
.. _http_socket/0::connection_pool_in_use_/2:

``connection_pool_in_use_/2``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Checked-out client connections indexed by pool identifier.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``connection_pool_in_use_(PoolId,Connection)``
| **Mode and number of proofs:**
|    ``connection_pool_in_use_(?positive_integer,?compound)`` - ``zero_or_more``


------------

.. index:: listener_shutdown_seed_/1
.. _http_socket/0::listener_shutdown_seed_/1:

``listener_shutdown_seed_/1``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Last allocated shutdown run identifier for open-ended listener loops.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``listener_shutdown_seed_(RunId)``
| **Mode and number of proofs:**
|    ``listener_shutdown_seed_(?positive_integer)`` - ``zero_or_one``


------------

.. index:: listener_shutdown_control_/3
.. _http_socket/0::listener_shutdown_control_/3:

``listener_shutdown_control_/3``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Registered shutdown control terms and their associated listeners.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``listener_shutdown_control_(Control,Listener,RunId)``
| **Mode and number of proofs:**
|    ``listener_shutdown_control_(?nonvar,?compound,?positive_integer)`` - ``zero_or_more``


------------

.. index:: listener_shutdown_requested_/2
.. _http_socket/0::listener_shutdown_requested_/2:

``listener_shutdown_requested_/2``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Recorded shutdown requests indexed by control term and run identifier.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``listener_shutdown_requested_(Control,RunId)``
| **Mode and number of proofs:**
|    ``listener_shutdown_requested_(?nonvar,?positive_integer)`` - ``zero_or_more``


------------

.. index:: listener_active_worker_/3
.. _http_socket/0::listener_active_worker_/3:

``listener_active_worker_/3``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Active listener worker records indexed by control term and run identifier.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``listener_active_worker_(Control,RunId,Worker)``
| **Mode and number of proofs:**
|    ``listener_active_worker_(?nonvar,?positive_integer,?compound)`` - ``zero_or_more``


------------

.. index:: listener_endpoint_/3
.. _http_socket/0::listener_endpoint_/3:

``listener_endpoint_/3``
^^^^^^^^^^^^^^^^^^^^^^^^

Stored listener endpoints indexed by listener handle.

| **Compilation flags:**
|    ``dynamic``

| **Template:**
|    ``listener_endpoint_(Listener,Host,Port)``
| **Mode and number of proofs:**
|    ``listener_endpoint_(?compound,?atom,?integer)`` - ``zero_or_more``


------------

Operators
---------

(none)

