• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • CPACK
    • Home
    • List packs
    • Submit pack
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

/usr/lib/swipl/library/ext/http/http/http_stream.pl
All Application Manual Name SummaryHelp

  • http
    • http
      • http_unix_daemon.pl -- Run SWI-Prolog HTTP server as a Unix system daemon
      • thread_httpd.pl -- Threaded HTTP server
      • http_wrapper.pl
      • http_header.pl
      • http_stream.pl -- HTTP Streams
        • http_chunked_open/3
        • http_is_chunked/1
        • http_chunked_flush/2
        • http_chunked_add_trailer/3
        • stream_range_open/3
        • multipart_open/3
        • multipart_open_next/1
        • cgi_open/4
        • cgi_property/2
        • cgi_set/2
        • cgi_discard/1
        • is_cgi_stream/1
        • cgi_statistics/1
        • encoding_filter/3
        • current_transfer_encoding/1
      • http_exception.pl -- Map Prolog exceptions to HTTP errors
      • http_path.pl -- Abstract specification of HTTP server locations
      • http_dispatch.pl -- Dispatch requests in the HTTP server
      • http_host.pl -- Obtain public server location
      • http_parameters.pl -- Extract parameters (GET and POST) from HTTP requests
      • http_client.pl -- HTTP client library
      • http_multipart_plugin.pl -- Multipart form-data plugin
      • http_hook.pl -- HTTP library hooks
      • html_write.pl -- Write HTML text
      • html_quasiquotations.pl -- HTML quasi quotations
      • mimetype.pl -- Determine mime-type for a file
      • html_head.pl -- Automatic inclusion of CSS and scripts links
      • http_server_files.pl -- Serve files needed by modules from the server
      • term_html.pl -- Represent Prolog terms as HTML
      • json.pl -- Reading and writing JSON serialization
      • http_open.pl -- HTTP client library
      • http_session.pl -- HTTP Session management
      • http_openid.pl -- OpenID consumer and server library
      • yadis.pl -- Yadis discovery
      • ax.pl -- Attribute Exchange library
      • http_authenticate.pl -- Authenticate HTTP connections using 401 headers
      • http_json.pl -- HTTP JSON Plugin module
      • http_dirindex.pl -- HTTP directory listings
      • js_write.pl -- Utilities for including JavaScript
      • js_grammar.pl -- JavaScript grammar
      • http_cors.pl -- Enable CORS: Cross-Origin Resource Sharing
      • json_convert.pl -- Convert between JSON terms and Prolog application terms
      • http_server.pl -- HTTP server library
      • http_dyn_workers.pl -- Dynamically schedule HTTP workers.
      • http_server_health.pl -- HTTP Server health statistics
      • hub.pl -- Manage a hub for websockets
      • websocket.pl -- WebSocket support
      • http_log.pl -- HTTP Logging module
      • mimepack.pl -- Create a MIME message
 cgi_open(+OutStream, -CGIStream, :Hook, +Options) is det
Process CGI output. OutStream is normally the socket returning data to the HTTP client. CGIStream is the stream the (Prolog) code writes to. The CGIStream provides the following functions:
  • At the end of the header, it calls Hook using call(Hook, header, Stream), where Stream is a stream holding the buffered header.
  • If the stream is closed, it calls Hook using call(Hook, data, Stream), where Stream holds the buffered data.

The stream calls Hook, adding the event and CGIStream to the closure. Defined events are:

header
Called if the header is complete. Typically it uses cgi_property/2 to extract the collected header and combines these with the request and policies to decide on encoding, transfer-encoding, connection parameters and the complete header (as a Prolog term). Typically it uses cgi_set/2 to associate these with the stream.
send_header
Called if the HTTP header must be sent. This is immediately after setting the transfer encoding to chunked or when the CGI stream is closed. Typically it requests the current header, optionally the content-length and sends the header to the original (client) stream.
close
Called from close/1 on the CGI stream after everything is complete.

The predicates cgi_property/2 and cgi_set/2 can be used to control the stream and store status info. Terms are stored as Prolog records and can thus be transferred between threads.

ClioPatria (version V3.1.1-51-ga0b30a5)