diff options
author | Nathaniel Manista <nathaniel@google.com> | 2015-08-31 21:29:12 +0000 |
---|---|---|
committer | Nathaniel Manista <nathaniel@google.com> | 2015-08-31 21:29:12 +0000 |
commit | 65ad41f53b1d230cfdcb33f9e111b9a1358a1bbb (patch) | |
tree | 0797f12faa342e725d58a05af02bcf32ed4357d1 /src/python/grpcio/grpc/framework/crust/_service.py | |
parent | c059c984614425c6327818eba482e7c8d608d6d5 (diff) |
Fixes for bugs found during manual use
(1) In _ingestion, it's the "details" attribute of a
NoSuchMethodException that we want. The "message" is inherited from the
base Exception class.
(2) In _transmission, use a proper sum type for representing operation
abortion. Trying to overload the existing _completion value for
status-and-details-when-aborting was trying to be too clever.
(3) In _calls... oof. Just look. Oof. Test coverage for this code path
is added.
(4) In _service, the application-provided
face.MultiMethodImplementation isn't directly callable, but rather
exposes a method named "service".
(5) In crust.implementations, the wrapping that we've put around the
application-provided face.MultiMethodImplementation *is* directly
callable, and *does not* expose a method named "service".
(6) Also in crust.implementations, base.NoSuchMethodError's constructor
takes a code value and a details value.
(7) Again in crust.implementations, the application-provided
face.MultiMethodImplementation may be None, and if it is None, we
shouldn't wrap it with an adaptation function that would only raise a
TypeError at a later time.
Diffstat (limited to 'src/python/grpcio/grpc/framework/crust/_service.py')
-rw-r--r-- | src/python/grpcio/grpc/framework/crust/_service.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/python/grpcio/grpc/framework/crust/_service.py b/src/python/grpcio/grpc/framework/crust/_service.py index 2455a58f59..6ff7249e75 100644 --- a/src/python/grpcio/grpc/framework/crust/_service.py +++ b/src/python/grpcio/grpc/framework/crust/_service.py @@ -154,7 +154,7 @@ def adapt_multi_method(multi_method, pool): outcome = operation_context.add_termination_callback(rendezvous.set_outcome) if outcome is None: def in_pool(): - request_consumer = multi_method( + request_consumer = multi_method.service( group, method, rendezvous, _ServicerContext(rendezvous)) for request in rendezvous: request_consumer.consume(request) |