forked from grpc-ecosystem/go-grpc-middleware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Simplify chain interceptors (grpc-ecosystem#421)
The four (client/server, unary/stream) interceptors have to wrap a slice of interceptors in functions which satisfy the handler interface, but which are closures over the other parameters an interceptor is expected to have. The previous approach accomplished this goal with recursion. This had two drawbacks: first, the code was difficult to understand, as most recursion attempts to fully encode state in function parameters, but here state was necessarily also encoded in the closure; and second, the recursive base-case meant that even the innermost interceptor was not calling the bare handler, it was calling a wrapped handler. This new approach instead iteratively constructs wrappers from the inside out. It results in fewer lines of code, with fewer variables held in each closure. Hopefully this results in higher readability.
- Loading branch information
1 parent
1778d41
commit 6465c16
Showing
1 changed file
with
78 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters