public sealed class Status : IMessage<Status>, IEquatable<Status>, IDeepCloneable<Status>, IBufferMessage, IMessage
The Status
type defines a logical error model that is suitable for
different programming environments, including REST APIs and RPC APIs. It is
used by gRPC. Each Status
message contains
three pieces of data: error code, error message, and error details.
You can find out more about this error model and how to work with it in the API Design Guide.
Namespace
Google.RpcAssembly
Google.Api.CommonProtos.dll
Constructors
Status()
public Status()
Status(Status)
public Status(Status other)
Parameter | |
---|---|
Name | Description |
other |
Status |
Fields
CodeFieldNumber
public const int CodeFieldNumber = 1
Field number for the "code" field.
Field Value | |
---|---|
Type | Description |
int |
DetailsFieldNumber
public const int DetailsFieldNumber = 3
Field number for the "details" field.
Field Value | |
---|---|
Type | Description |
int |
MessageFieldNumber
public const int MessageFieldNumber = 2
Field number for the "message" field.
Field Value | |
---|---|
Type | Description |
int |
Properties
Code
public int Code { get; set; }
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
Property Value | |
---|---|
Type | Description |
int |
Descriptor
public static MessageDescriptor Descriptor { get; }
Property Value | |
---|---|
Type | Description |
MessageDescriptor |
Details
public RepeatedField<Any> Details { get; }
A list of messages that carry the error details. There is a common set of message types for APIs to use.
Property Value | |
---|---|
Type | Description |
RepeatedFieldAny |
Message
public string Message { get; set; }
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
Property Value | |
---|---|
Type | Description |
string |
Parser
public static MessageParser<Status> Parser { get; }
Property Value | |
---|---|
Type | Description |
MessageParserStatus |
Methods
CalculateSize()
public int CalculateSize()
Calculates the size of this message in Protocol Buffer wire format, in bytes.
Returns | |
---|---|
Type | Description |
int |
The number of bytes required to write this message to a coded output stream. |
Clone()
public Status Clone()
Creates a deep clone of this object.
Returns | |
---|---|
Type | Description |
Status |
A deep clone of this object. |
Equals(Status)
public bool Equals(Status other)
Parameter | |
---|---|
Name | Description |
other |
Status |
Returns | |
---|---|
Type | Description |
bool |
Equals(object)
public override bool Equals(object other)
Parameter | |
---|---|
Name | Description |
other |
object |
Returns | |
---|---|
Type | Description |
bool |
GetDetail<T>()
public T GetDetail<T>() where T : class, IMessage<T>, new()
Retrieves the error details of type T
from the Status
message.
Returns | |
---|---|
Type | Description |
T |
The first error details of type |
Type Parameter | |
---|---|
Name | Description |
T |
The message type to decode from within the error details. |
GetHashCode()
public override int GetHashCode()
Returns | |
---|---|
Type | Description |
int |
MergeFrom(CodedInputStream)
public void MergeFrom(CodedInputStream input)
Merges the data from the specified coded input stream with the current message.
Parameter | |
---|---|
Name | Description |
input |
CodedInputStream |
See the user guide for precise merge semantics.
MergeFrom(Status)
public void MergeFrom(Status other)
Merges the given message into this one.
Parameter | |
---|---|
Name | Description |
other |
Status |
See the user guide for precise merge semantics.
ToString()
public override string ToString()
Returns | |
---|---|
Type | Description |
string |
UnpackDetailMessages()
public IEnumerable<IMessage> UnpackDetailMessages()
Iterate over all the messages in the Details
Returns | |
---|---|
Type | Description |
IEnumerableIMessage |
Iterate over the messages in the Details that are messages in the standard set of error types defined in the richer error model. Any other messages found in the Details are ignored and not returned.
foreach (var msg in status.UnpackDetailMessages())
{
switch (msg)
{
case ErrorInfo errorInfo:
// Handle errorInfo ...
break;
// Other cases ...
}
}
UnpackDetailMessages(TypeRegistry)
public IEnumerable<IMessage> UnpackDetailMessages(TypeRegistry registry)
Iterate over all the messages in the Details that match types in the given TypeRegistry
Parameter | |
---|---|
Name | Description |
registry |
TypeRegistry The type registry to use to unpack detail messages. |
Returns | |
---|---|
Type | Description |
IEnumerableIMessage |
A (possibly-empty) sequence of detail messages. |
Iterate over the messages in the Details that are messages in the given TypeRegistry. Any other messages found in the Details are ignored and not returned. This allows iterating over custom messages if you are not using the standard set of error types defined in the rich error model.
TypeRegistry myTypes = TypeRegistry.FromMessages(FooMessage.Descriptor, BarMessage.Descriptor);
foreach (var msg in status.UnpackDetailMessages(myTypes))
{
switch (msg)
{
case FooMessage foo:
// Handle foo ...
break;
// Other cases ...
}
}
WriteTo(CodedOutputStream)
public void WriteTo(CodedOutputStream output)
Writes the data to the given coded output stream.
Parameter | |
---|---|
Name | Description |
output |
CodedOutputStream Coded output stream to write the data to. Must not be null. |