add_early_handler
Description:
public void add_early_handler (string? path, owned ServerCallback callback)
Adds an "early" handler to this for requests under path
.
Note that "normal" and "early" handlers are matched up together, so if you add a normal handler for "/foo" and an early handler for "/foo/bar", then a request to "/foo/bar" (or any path below it) will run only the early handler. (But if you add both handlers at the same path, then both will get run.)
For requests under path
(that have not already been assigned a status code by a
AuthDomain or a signal handler), callback
will be invoked
after receiving the request headers, but before receiving the request body; the message's
method and SoupMessage:request-headers
s fields will be filled
in.
Early handlers are generally used for processing requests with request bodies in a streaming fashion. If you determine that the request will
contain a message body, normally you would call set_accumulate on
the message's SoupMessage:request-body
to turn off request-body accumulation, and connect to the message's
got_chunk signal to process each chunk as it comes in.
To complete the message processing after the full message body has been read, you can either also connect to
got_body, or else you can register a non-early handler for path
as well. As long as you have not set the status_code by the
time got_body is emitted, the non-early handler will be run as well.
Parameters:
this |
a Server |
path |
the toplevel path for the handler |
callback |
callback to invoke for requests under |
destroy |
destroy notifier to free |
user_data |
data for |