WIP: Trait for HTTP request handler #221
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Trait
HttpRequestHandler<ReturnType>is defined. This trait allows to implement HTTP request handler with arbitrary return type. Special auxiliary traitHttpHandlerWrapper<ReturnType>adds function to convert this return type tongx_int_t. Two conversions are predefined: forOption<ngx_int_t>and forResult<ngx_int_t, E>. Conversion function may include any desired additional actions common for all handlers. For instance, convertor forResult<ngx_int_t, E>logs the error, if any.Trait
HttpRequestHandler<ReturnType>also includes associated type for the HTTP module and associated constant for the handler phase.Handler registration is simplified to a single call of
HttpRequestHandler<ReturnType>::register()function which is implemented by default.All examples are modified to use this trait.
There are some unclear moments:
struct, what can be done with data members of this structure? Are they usable at all?Statusandinto()is acceptable?