public interface Service
Starting with version 2.3.0, RPC implementations should not try to build on this, but should instead provide code generator plugins which generate code specific to the particular RPC implementation. This way the generated code can be more appropriate for the implementation in use and can avoid unnecessary layers of indirection.
|Modifier and Type||Method and Description|
Call a method of the service specified by MethodDescriptor.
ServiceDescriptordescribing this service and its methods.
void callMethod(Descriptors.MethodDescriptor method, RpcController controller, Message request, RpcCallback<Message> done)
Call a method of the service specified by MethodDescriptor. This is
normally implemented as a simple
switch() that calls the standard
definitions of the service's methods.
method.getService() == getDescriptorForType()
requestis of the exact same class as the object returned by
controlleris of the correct type for the RPC implementation being used by this Service. For stubs, the "correct type" depends on the RpcChannel which the stub is using. Server-side Service implementations are expected to accept whatever type of
RpcControllerthe server-side RPC implementation uses.
donewill be called when the method is complete. This may be before
callMethod()returns or it may be at some point in the future.
doneis the response. It must be of the exact same type as would be returned by
null. Further details about the failure can be found by querying
Message getRequestPrototype(Descriptors.MethodDescriptor method)
callMethod() requires that the request passed in is of a
particular subclass of
gets the default instances of this type for a given method. You can then
Message.newBuilderForType() on this instance to
construct a builder to build an object which you can then pass to
MethodDescriptor method = service.getDescriptorForType().findMethodByName("Foo"); Message request = stub.getRequestPrototype(method).newBuilderForType() .mergeFrom(input).build(); service.callMethod(method, request, callback);
Message getResponsePrototype(Descriptors.MethodDescriptor method)
getRequestPrototype(), but gets a prototype of the response message.
getResponsePrototype()is generally not needed because the
Serviceimplementation constructs the response message itself, but it may be useful in some cases to know ahead of time what type of object will be returned.