@Immutable public class MethodDescriptor<ReqT,RespT> extends Object
Channel
to initiate a call.
Provides the name of the operation to execute as well as MethodDescriptor.Marshaller
instances
used to parse and serialize request and response messages.
Can be constructed manually but will often be generated by stub code generators.
Modifier and Type | Class and Description |
---|---|
static interface |
MethodDescriptor.Marshaller<T>
A typed abstraction over message serialization and deserialization, a.k.a.
|
static class |
MethodDescriptor.MethodType
The call type of a method.
|
Modifier and Type | Method and Description |
---|---|
static <RequestT,ResponseT> |
create(MethodDescriptor.MethodType type,
String fullMethodName,
MethodDescriptor.Marshaller<RequestT> requestMarshaller,
MethodDescriptor.Marshaller<ResponseT> responseMarshaller)
Creates a new
MethodDescriptor . |
static String |
extractFullServiceName(String fullMethodName)
Extract the fully qualified service name out of a fully qualified method name.
|
static String |
generateFullMethodName(String fullServiceName,
String methodName)
Generate the fully qualified method name.
|
String |
getFullMethodName()
The fully qualified name of the method.
|
MethodDescriptor.MethodType |
getType()
The call type of the method.
|
boolean |
isIdempotent()
Returns whether this method is idempotent.
|
ReqT |
parseRequest(InputStream input)
Parse an incoming request message.
|
RespT |
parseResponse(InputStream input)
Parse a response payload from the given
InputStream . |
InputStream |
streamRequest(ReqT requestMessage)
Convert a request message to an
InputStream . |
InputStream |
streamResponse(RespT response)
Serialize an outgoing response message.
|
MethodDescriptor<ReqT,RespT> |
withIdempotent(boolean idempotent)
Set idempotency on this method.
|
@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1774") public static <RequestT,ResponseT> MethodDescriptor<RequestT,ResponseT> create(MethodDescriptor.MethodType type, String fullMethodName, MethodDescriptor.Marshaller<RequestT> requestMarshaller, MethodDescriptor.Marshaller<ResponseT> responseMarshaller)
MethodDescriptor
.type
- the call type of this methodfullMethodName
- the fully qualified name of this methodrequestMarshaller
- the marshaller used to encode and decode requestsresponseMarshaller
- the marshaller used to encode and decode responsespublic MethodDescriptor.MethodType getType()
public String getFullMethodName()
public RespT parseResponse(InputStream input)
InputStream
.input
- stream containing response message to parse.public InputStream streamRequest(ReqT requestMessage)
InputStream
.requestMessage
- to serialize using the request MethodDescriptor.Marshaller
.public ReqT parseRequest(InputStream input)
input
- the serialized message as a byte stream.public InputStream streamResponse(RespT response)
response
- the response message to serialize.@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1775") public boolean isIdempotent()
@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1775") public MethodDescriptor<ReqT,RespT> withIdempotent(boolean idempotent)
idempotent
- the idempotency of this method.@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1774") public static String generateFullMethodName(String fullServiceName, String methodName)
fullServiceName
- the fully qualified service name that is prefixed with the package namemethodName
- the short method name@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1774") @Nullable public static String extractFullServiceName(String fullMethodName)
null
if the input is malformed, but you cannot rely on it for the validity of the
input.