Package io.grpc
Class MethodDescriptor<ReqT,RespT>
- java.lang.Object
-
- io.grpc.MethodDescriptor<ReqT,RespT>
-
@Immutable public final class MethodDescriptor<ReqT,RespT> extends Object
Description of a remote method used byChannel
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.
- Since:
- 1.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MethodDescriptor.Builder<ReqT,RespT>
A builder for aMethodDescriptor
.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.static interface
MethodDescriptor.PrototypeMarshaller<T>
A marshaller that uses a fixed instance of the type it produces.static interface
MethodDescriptor.ReflectableMarshaller<T>
A marshaller that supports retrieving its type parameterT
at runtime.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static <RequestT,ResponseT>
MethodDescriptor<RequestT,ResponseT>create(MethodDescriptor.MethodType type, String fullMethodName, MethodDescriptor.Marshaller<RequestT> requestMarshaller, MethodDescriptor.Marshaller<ResponseT> responseMarshaller)
Deprecated.usenewBuilder()
.static String
extractBareMethodName(String fullMethodName)
Extract the method name out of a fully qualified method name.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
getBareMethodName()
A convenience method forextractBareMethodName(getFullMethodName())
.String
getFullMethodName()
The fully qualified name of the method.MethodDescriptor.Marshaller<ReqT>
getRequestMarshaller()
Returns the marshaller for the request type.MethodDescriptor.Marshaller<RespT>
getResponseMarshaller()
Returns the marshaller for the response type.Object
getSchemaDescriptor()
Returns the schema descriptor for this method.String
getServiceName()
A convenience method forextractFullServiceName(getFullMethodName())
.MethodDescriptor.MethodType
getType()
The call type of the method.boolean
isIdempotent()
Returns whether this method is idempotent.boolean
isSafe()
Returns whether this method is safe.boolean
isSampledToLocalTracing()
Returns whether RPCs for this method may be sampled into the local tracing store.static <ReqT,RespT>
MethodDescriptor.Builder<ReqT,RespT>newBuilder()
Creates a new builder for aMethodDescriptor
.static <ReqT,RespT>
MethodDescriptor.Builder<ReqT,RespT>newBuilder(MethodDescriptor.Marshaller<ReqT> requestMarshaller, MethodDescriptor.Marshaller<RespT> responseMarshaller)
Creates a new builder for aMethodDescriptor
.ReqT
parseRequest(InputStream input)
Parse an incoming request message.RespT
parseResponse(InputStream input)
Parse a response payload from the givenInputStream
.InputStream
streamRequest(ReqT requestMessage)
Convert a request message to anInputStream
.InputStream
streamResponse(RespT response)
Serialize an outgoing response message.MethodDescriptor.Builder<ReqT,RespT>
toBuilder()
Turns this descriptor into a builder.<NewReqT,NewRespT>
MethodDescriptor.Builder<NewReqT,NewRespT>toBuilder(MethodDescriptor.Marshaller<NewReqT> requestMarshaller, MethodDescriptor.Marshaller<NewRespT> responseMarshaller)
Turns this descriptor into a builder, replacing the request and response marshallers.String
toString()
-
-
-
Method Detail
-
create
@Deprecated public static <RequestT,ResponseT> MethodDescriptor<RequestT,ResponseT> create(MethodDescriptor.MethodType type, String fullMethodName, MethodDescriptor.Marshaller<RequestT> requestMarshaller, MethodDescriptor.Marshaller<ResponseT> responseMarshaller)
Deprecated.usenewBuilder()
.Creates a newMethodDescriptor
.- Parameters:
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 responses- Since:
- 1.0.0
-
getType
public MethodDescriptor.MethodType getType()
The call type of the method.- Since:
- 1.0.0
-
getFullMethodName
public String getFullMethodName()
The fully qualified name of the method.- Since:
- 1.0.0
-
getServiceName
@Nullable @ExperimentalApi("https://github.com/grpc/grpc-java/issues/5635") public String getServiceName()
A convenience method forextractFullServiceName(getFullMethodName())
.- Since:
- 1.21.0
-
getBareMethodName
@Nullable @ExperimentalApi("https://github.com/grpc/grpc-java/issues/5635") public String getBareMethodName()
A convenience method forextractBareMethodName(getFullMethodName())
.- Since:
- 1.33.0
-
parseResponse
public RespT parseResponse(InputStream input)
Parse a response payload from the givenInputStream
.- Parameters:
input
- stream containing response message to parse.- Returns:
- parsed response message object.
- Since:
- 1.0.0
-
streamRequest
public InputStream streamRequest(ReqT requestMessage)
Convert a request message to anInputStream
. The returned InputStream should be closed by the caller.- Parameters:
requestMessage
- to serialize using the requestMethodDescriptor.Marshaller
.- Returns:
- serialized request message.
- Since:
- 1.0.0
-
parseRequest
public ReqT parseRequest(InputStream input)
Parse an incoming request message.- Parameters:
input
- the serialized message as a byte stream.- Returns:
- a parsed instance of the message.
- Since:
- 1.0.0
-
streamResponse
public InputStream streamResponse(RespT response)
Serialize an outgoing response message. The returned InputStream should be closed by the caller.- Parameters:
response
- the response message to serialize.- Returns:
- the serialized message as a byte stream.
- Since:
- 1.0.0
-
getRequestMarshaller
public MethodDescriptor.Marshaller<ReqT> getRequestMarshaller()
Returns the marshaller for the request type. Allows introspection of the request marshaller.- Since:
- 1.1.0
-
getResponseMarshaller
public MethodDescriptor.Marshaller<RespT> getResponseMarshaller()
Returns the marshaller for the response type. Allows introspection of the response marshaller.- Since:
- 1.1.0
-
getSchemaDescriptor
@Nullable public Object getSchemaDescriptor()
Returns the schema descriptor for this method. A schema descriptor is an object that is not used by gRPC core but includes information related to the service method. The type of the object is specific to the consumer, so both the code setting the schema descriptor and the code callinggetSchemaDescriptor()
must coordinate. For example, protobuf generated code sets this value, in order to be consumed by the server reflection service. See also:io.grpc.protobuf.ProtoMethodDescriptorSupplier
.- Since:
- 1.7.0
-
isIdempotent
public boolean isIdempotent()
Returns whether this method is idempotent.- Since:
- 1.0.0
-
isSafe
public boolean isSafe()
Returns whether this method is safe.A safe request does nothing except retrieval so it has no side effects on the server side.
- Since:
- 1.1.0
-
isSampledToLocalTracing
public boolean isSampledToLocalTracing()
Returns whether RPCs for this method may be sampled into the local tracing store.
-
generateFullMethodName
public static String generateFullMethodName(String fullServiceName, String methodName)
Generate the fully qualified method name. This matches the name- Parameters:
fullServiceName
- the fully qualified service name that is prefixed with the package namemethodName
- the short method name- Since:
- 1.0.0
-
extractFullServiceName
@Nullable public static String extractFullServiceName(String fullMethodName)
Extract the fully qualified service name out of a fully qualified method name. May returnnull
if the input is malformed, but you cannot rely on it for the validity of the input.- Since:
- 1.0.0
-
extractBareMethodName
@Nullable @ExperimentalApi("https://github.com/grpc/grpc-java/issues/5635") public static String extractBareMethodName(String fullMethodName)
Extract the method name out of a fully qualified method name. May returnnull
if the input is malformed, but you cannot rely on it for the validity of the input.- Since:
- 1.33.0
-
newBuilder
@CheckReturnValue public static <ReqT,RespT> MethodDescriptor.Builder<ReqT,RespT> newBuilder()
Creates a new builder for aMethodDescriptor
.- Since:
- 1.1.0
-
newBuilder
@CheckReturnValue public static <ReqT,RespT> MethodDescriptor.Builder<ReqT,RespT> newBuilder(MethodDescriptor.Marshaller<ReqT> requestMarshaller, MethodDescriptor.Marshaller<RespT> responseMarshaller)
Creates a new builder for aMethodDescriptor
.- Since:
- 1.1.0
-
toBuilder
@CheckReturnValue public MethodDescriptor.Builder<ReqT,RespT> toBuilder()
Turns this descriptor into a builder.- Since:
- 1.1.0
-
toBuilder
@CheckReturnValue public <NewReqT,NewRespT> MethodDescriptor.Builder<NewReqT,NewRespT> toBuilder(MethodDescriptor.Marshaller<NewReqT> requestMarshaller, MethodDescriptor.Marshaller<NewRespT> responseMarshaller)
Turns this descriptor into a builder, replacing the request and response marshallers.- Since:
- 1.1.0
-
-