addEarlyHandler

open fun addEarlyHandler(path: String? = null, callback: ServerCallback)

Adds an "early" handler to @server for requests prefixed by @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 class@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 request-headers properties will be set.

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 method@MessageBody.set_accumulate on the message's request-body to turn off request-body accumulation, and connect to the message's signal@ServerMessage::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 signal@ServerMessage::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 signal@ServerMessage::got-body is emitted, the non-early handler will be run as well.

Parameters

path

the toplevel path for the handler

callback

callback to invoke for requests under @path