grpc-java
grpc-java copied to clipboard
PoC: client channels
This PR (based off #3987) proposes a potential implementation for Client Channels that allow server call services on connected clients.
The current implementation uses a bi-directional call as a transport by implementing an in-memory Netty channel due to the complexity of the underlying representation. A custom Marshaller
is used for zero copy operations, to prevent additional buffers from being created. That is achieved with a custom Drainable
implementation and a HasByteBuffer
consumer.
The final version should of course be using a custom implementation of both ManagedChannel
and InternalServer
.
See https://github.com/grpc/grpc/issues/14101 for the main discussion.
- :x: - login: @bsideup / name: Sergei Egorov . The commit (cfd19fd285d40b99443b0f9e12529793948c1a4e, 053ab0fd2f15dab068a1bf818ccd36578c6fef7a, 44bf0d77c5bfc5c10468e4f4bbc82510312ee170, 31d2df2d6daaea71b0bf5c84f1c03c8931438596, 20b2d398e624c211858a38a5676d0a7e85692578) is not authorized under a signed CLA. Please click here to be authorized. For further assistance with EasyCLA, please submit a support request ticket.
I was able to connect a grpc-go based client (exposing service) to grpc-java Netty-based server that successfully called a service defined on the client: https://gist.github.com/bsideup/49a031c3360a68e4542e5597669fe51d