Restructure _BaseCallHandler
et al. for interceptors
#1028
Merged
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.
Motivation:
The state management in
_BaseCallHandler
and its associated subclassesis a little handwavy and somewhat implicit. To support server
interceptors we need a stronger idea of the state of the call.
Modifications:
_BaseCallHandler
to have an explicit state machine and holdan interceptor pipeline. This is the 'main' state machine. Each
subclass also has its own down state machine holding state relating to
the event observer and observer context. Most of the logic shared between
the state machines is very similar, it may be beneficial to abstract
some of this away in the future.
client, generated server code will have its own interceptor factory
which will pass interceptors to the call handler factory).
Result: