John Cormie
John Cormie
binder: BinderChannelBuilder should not force clients to hard code an android.app.Service class name
### Is your feature request related to a problem? `BinderChannelBuilder` requires an `AndroidComponentAddress` and an `AndroidComponentAddress` requires a `ComponentName` (the package name and class name of the target `android.app.Service`). This...
### Is your feature request related to a problem? Yes, lack of message-by-message stream flow control ### Describe the solution you'd like The binder transport should implement the isReady() and...
### What version of gRPC-Java are you using? master ### What is your environment? Android/Linux ### Steps to reproduce the bug 1) Declare an Android Service hosting an BinderServerBuilder-built Server...
Context: The gRPC framework assumes that a `SecurityPolicy`s verdict for a given peer UID will not change over the lifetime of any process with that UID. But Android runtime permissions...
Impls of ManagedClientTransport.Listener "do not need to be thread-safe so notifications must be properly synchronized externally." BinderClientTransport mostly seems to achieve this by holding its "this" lock, except for `unregisterInbound()`...
Parcelables can contain file descriptors or other resources that must be closed, for example `android.os.SharedMemory` and `ParcelFileDescriptor`. But `io.grpc.binder.ParcelableUtils` doesn't say anything about who takes ownership of such objects when...
Both SingleMessageServerStream and MultiMessageServerStream implement close() by asking Outbound to enqueue the status and trailers for sending, then calling Inbound#onCloseSent(). This method always calls ServerStreamListener.closed() even though the status and...
### Is your feature request related to a problem? Many grpc-java unit tests create their own fake implementations of the various listener interfaces for synchronization. This results in code duplication,...
### Is your feature request related to a problem? Both CPU and wall clock time of sending a message are dominated by the overhead of calling transact(). Today we need...