As opposed to a flat directory, we now have the following structure:
- security
-context
- credentials
- composite
- fake
- google_default
- iam
- jwt
- oauth2
- plugin
- ssl
- transport
- util
We have not refactored the test code yet but this PR is already large
enough...
For some definition of "smart"... client_channel simply passes along
pollset/pollset_set, removing the need to instantiate a pollset_set in
the subchannel_call_holder: it's now up to the LB policies to handle the
pollset/pollset_set.
Added the ability to create channels from client_channel_factory. This
will be used by the grpclb code to create the channels to communicate
with the LB servers.
This extends the existing http parser to support requests as well as responses.
httpcli continues to exist and work as it has previously, though in the new
directory src/core/http (to reflect the fact the directory now contains code
relevant to parsing requests, which httpcli would not generally involve itself
in).
Allow plugins to extend the set of filters used by gRPC core:
- plugins at construction time can register against the 'channel_init' system to be allowed to mutate a new channel_stack_builder type
- channel_stack_builder provides a central and rather dynamic place to construct the list of filters required by a channel stack
- ultimately we construct the channel stack in the fashion we always have
This is also a prerequisite step to allowing filters to be implemented from wrapped languages.