This is the public API of the old base package of RPC Framework
extracted into a first-class interface and adapted to metadata, status,
and flow control.
- moves the client/server behaviour to pb/test
- deprecate current bin/interop/interop_{client,server}.rb
- adds executable endpoints to bin
- grpc_ruby_interop_{client, server}
- these will be added to the ruby bin path when the grpc gem
gem is installed, making them easier to execute
- Updates the code generated for the interop service
- Moves the generated interop service/client from bin to pb
Also
- removes an empty file from the health pb directories
- adds the code-generated health service classes to the pb along with
a README explaining how to regenerate the generated code
- adds an implementation of the Health Checker Service along with unit
tests and an integration test
Also:
- adds a pb folder
: in a follow-up PR, all ruby pbs + generated code will be moved to it
Corrects some other issues
- fixes status return when calls fail by always returning the status
- resolves bidi_call client's failure to return an exception on bad
status by swapping the wait for status to the read thread
* this also improves the cancel_after_first_response test
Also
- adds a unit test that verifies that a bidi call will time out.
- timeout has been a default arg till now
- this switches it to a keyword arg with the same behavior
- in addition, it adds deadline as distinct keyword arg, allowing users
the choice of the idiomatic(timeout) or the aligned(deadline)
- We always do the processing asynchronously but maintain a synchronous
API for the implementor of the processor.
- there are a lot of string copies right now. Having a StringPiece
object in grpc++ would really help with that (as we would use it for
C++ metadata).
- Please review the API carefully and if you're happy with it, I'll
proceed with tests.