- Allow Resources to be set
- Allow clients to subscribe/unsubscribe to resources
- Managing, storing, and versioning resources correctly based on updates
- Correct ACK/NACK according to XDS protocol
- Started a separate blocking thread to be used for stream read
- Handling both requests from clients and updates from tests and respond
with the correct version of resource
- Consolidated all 4 resources (LDS, CDS, EDS, RDS) to share common code
- Updated all tests to use the fake properly
- Fixed potential crash cases in the subchannel thread for clean TSAN,
UBSAN runs
Introduce RAII wrappers in the grpc::internal and grpc_core
namespaces, and use them in place of std::mutex and
std::condition_variable.
Note that, since std::mutex is also used by the public
C++ headers we cannot introduce these wrappers in grpc_core.
Also, note that in grpcpp we cannot use gRPC core and vice versa.
So we had to duplicate the code, once using core_codegen_interface
and once using direct calls.