类 SpanObject
java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessageV3
org.apache.skywalking.apm.network.language.agent.v3.SpanObject
- 所有已实现的接口:
com.google.protobuf.Message,com.google.protobuf.MessageLite,com.google.protobuf.MessageLiteOrBuilder,com.google.protobuf.MessageOrBuilder,Serializable,SpanObjectOrBuilder
public final class SpanObject
extends com.google.protobuf.GeneratedMessageV3
implements SpanObjectOrBuilder
Span represents a execution unit in the system, with duration and many other attributes. Span could be a method, a RPC, MQ message produce or consume. In the practice, the span should be added when it is really necessary, to avoid payload overhead. We recommend to creating spans in across process(client/server of RPC/MQ) and across thread cases only.Protobuf type
skywalking.v3.SpanObject- 另请参阅:
-
嵌套类概要
嵌套类修饰符和类型类说明static final classSpan represents a execution unit in the system, with duration and many other attributes.从类继承的嵌套类/接口 com.google.protobuf.GeneratedMessageV3
com.google.protobuf.GeneratedMessageV3.BuilderParent, com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageType extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage,BuilderType extends com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageType, BuilderType>>, com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageType extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage>, com.google.protobuf.GeneratedMessageV3.ExtendableMessageOrBuilder<MessageType extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage>, com.google.protobuf.GeneratedMessageV3.FieldAccessorTable, com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter 从类继承的嵌套类/接口 com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessageLite.InternalOneOfEnum -
字段概要
字段修饰符和类型字段说明static final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final int从类继承的字段 com.google.protobuf.GeneratedMessageV3
alwaysUseFieldBuilders, unknownFields从类继承的字段 com.google.protobuf.AbstractMessage
memoizedSize从类继承的字段 com.google.protobuf.AbstractMessageLite
memoizedHashCode -
方法概要
修饰符和类型方法说明booleanintComponent id is a predefinited number id in the SkyWalking.static SpanObjectstatic final com.google.protobuf.Descriptors.DescriptorlongEnd timestamp in milliseconds of this span, measured between the current time and midnight, January 1, 1970 UTC.booleanThe status of the span.getLogs(int index) String key, String value pair with an accurate timestamp.intString key, String value pair with an accurate timestamp.String key, String value pair with an accurate timestamp.getLogsOrBuilder(int index) String key, String value pair with an accurate timestamp.List<? extends LogOrBuilder>String key, String value pair with an accurate timestamp.A logic name represents this span.com.google.protobuf.ByteStringA logic name represents this span.intThe number id of the parent span in the whole segmentcom.google.protobuf.Parser<SpanObject>getPeer()Remote address of the peer in RPC/MQ case.com.google.protobuf.ByteStringRemote address of the peer in RPC/MQ case.getRefs(int index) <Optional> In the across thread and across process, these references targeting the parent segments.int<Optional> In the across thread and across process, these references targeting the parent segments.<Optional> In the across thread and across process, these references targeting the parent segments.getRefsOrBuilder(int index) <Optional> In the across thread and across process, these references targeting the parent segments.List<? extends SegmentReferenceOrBuilder><Optional> In the across thread and across process, these references targeting the parent segments.intbooleanForce the backend don't do analysis, if the value is TRUE.intThe number id of the span.Span layer represent the component tech stack, related to the network tech.intSpan layer represent the component tech stack, related to the network tech.Span type represents the role in the RPC context.intSpan type represents the role in the RPC context.longStart timestamp in milliseconds of this span, measured between the current time and midnight, January 1, 1970 UTC.getTags(int index) String key, String value pair.intString key, String value pair.String key, String value pair.getTagsOrBuilder(int index) String key, String value pair.List<? extends KeyStringValuePairOrBuilder>String key, String value pair.final com.google.protobuf.UnknownFieldSetinthashCode()protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTablefinal booleanstatic SpanObject.Builderstatic SpanObject.BuildernewBuilder(SpanObject prototype) protected SpanObject.BuildernewBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) protected ObjectnewInstance(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused) static SpanObjectparseDelimitedFrom(InputStream input) static SpanObjectparseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static SpanObjectparseFrom(byte[] data) static SpanObjectparseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static SpanObjectparseFrom(com.google.protobuf.ByteString data) static SpanObjectparseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static SpanObjectparseFrom(com.google.protobuf.CodedInputStream input) static SpanObjectparseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static SpanObjectparseFrom(InputStream input) static SpanObjectparseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static SpanObjectparseFrom(ByteBuffer data) static SpanObjectparseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static com.google.protobuf.Parser<SpanObject>parser()voidwriteTo(com.google.protobuf.CodedOutputStream output) 从类继承的方法 com.google.protobuf.GeneratedMessageV3
canUseUnsafe, computeStringSize, computeStringSizeNoTag, emptyBooleanList, emptyDoubleList, emptyFloatList, emptyIntList, emptyLongList, getAllFields, getDescriptorForType, getField, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, hasField, hasOneof, internalGetMapField, isStringEmpty, makeExtensionsImmutable, mergeFromAndMakeImmutableInternal, mutableCopy, mutableCopy, mutableCopy, mutableCopy, mutableCopy, newBooleanList, newBuilderForType, newDoubleList, newFloatList, newIntList, newLongList, parseDelimitedWithIOException, parseDelimitedWithIOException, parseUnknownField, parseUnknownFieldProto3, parseWithIOException, parseWithIOException, parseWithIOException, parseWithIOException, serializeBooleanMapTo, serializeIntegerMapTo, serializeLongMapTo, serializeStringMapTo, writeReplace, writeString, writeStringNoTag从类继承的方法 com.google.protobuf.AbstractMessage
findInitializationErrors, getInitializationErrorString, hashBoolean, hashEnum, hashEnumList, hashFields, hashLong, toString从类继承的方法 com.google.protobuf.AbstractMessageLite
addAll, addAll, checkByteStringIsUtf8, toByteArray, toByteString, writeDelimitedTo, writeTo从接口继承的方法 com.google.protobuf.MessageLite
toByteArray, toByteString, writeDelimitedTo, writeTo从接口继承的方法 com.google.protobuf.MessageOrBuilder
findInitializationErrors, getAllFields, getDescriptorForType, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, hasField, hasOneof
-
字段详细资料
-
SPANID_FIELD_NUMBER
public static final int SPANID_FIELD_NUMBER- 另请参阅:
-
PARENTSPANID_FIELD_NUMBER
public static final int PARENTSPANID_FIELD_NUMBER- 另请参阅:
-
STARTTIME_FIELD_NUMBER
public static final int STARTTIME_FIELD_NUMBER- 另请参阅:
-
ENDTIME_FIELD_NUMBER
public static final int ENDTIME_FIELD_NUMBER- 另请参阅:
-
REFS_FIELD_NUMBER
public static final int REFS_FIELD_NUMBER- 另请参阅:
-
OPERATIONNAME_FIELD_NUMBER
public static final int OPERATIONNAME_FIELD_NUMBER- 另请参阅:
-
PEER_FIELD_NUMBER
public static final int PEER_FIELD_NUMBER- 另请参阅:
-
SPANTYPE_FIELD_NUMBER
public static final int SPANTYPE_FIELD_NUMBER- 另请参阅:
-
SPANLAYER_FIELD_NUMBER
public static final int SPANLAYER_FIELD_NUMBER- 另请参阅:
-
COMPONENTID_FIELD_NUMBER
public static final int COMPONENTID_FIELD_NUMBER- 另请参阅:
-
ISERROR_FIELD_NUMBER
public static final int ISERROR_FIELD_NUMBER- 另请参阅:
-
TAGS_FIELD_NUMBER
public static final int TAGS_FIELD_NUMBER- 另请参阅:
-
LOGS_FIELD_NUMBER
public static final int LOGS_FIELD_NUMBER- 另请参阅:
-
SKIPANALYSIS_FIELD_NUMBER
public static final int SKIPANALYSIS_FIELD_NUMBER- 另请参阅:
-
-
方法详细资料
-
newInstance
- 覆盖:
newInstance在类中com.google.protobuf.GeneratedMessageV3
-
getUnknownFields
public final com.google.protobuf.UnknownFieldSet getUnknownFields()- 指定者:
getUnknownFields在接口中com.google.protobuf.MessageOrBuilder- 覆盖:
getUnknownFields在类中com.google.protobuf.GeneratedMessageV3
-
getDescriptor
public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() -
internalGetFieldAccessorTable
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()- 指定者:
internalGetFieldAccessorTable在类中com.google.protobuf.GeneratedMessageV3
-
getSpanId
public int getSpanId()The number id of the span. Should be unique in the whole segment. Starting at 0.
int32 spanId = 1;- 指定者:
getSpanId在接口中SpanObjectOrBuilder- 返回:
- The spanId.
-
getParentSpanId
public int getParentSpanId()The number id of the parent span in the whole segment. -1 represents no parent span. Also, be known as the root/first span of the segment.
int32 parentSpanId = 2;- 指定者:
getParentSpanId在接口中SpanObjectOrBuilder- 返回:
- The parentSpanId.
-
getStartTime
public long getStartTime()Start timestamp in milliseconds of this span, measured between the current time and midnight, January 1, 1970 UTC.
int64 startTime = 3;- 指定者:
getStartTime在接口中SpanObjectOrBuilder- 返回:
- The startTime.
-
getEndTime
public long getEndTime()End timestamp in milliseconds of this span, measured between the current time and midnight, January 1, 1970 UTC.
int64 endTime = 4;- 指定者:
getEndTime在接口中SpanObjectOrBuilder- 返回:
- The endTime.
-
getRefsList
<Optional> In the across thread and across process, these references targeting the parent segments. The references usually have only one element, but in batch consumer case, such as in MQ or async batch process, it could be multiple.
repeated .skywalking.v3.SegmentReference refs = 5;- 指定者:
getRefsList在接口中SpanObjectOrBuilder
-
getRefsOrBuilderList
<Optional> In the across thread and across process, these references targeting the parent segments. The references usually have only one element, but in batch consumer case, such as in MQ or async batch process, it could be multiple.
repeated .skywalking.v3.SegmentReference refs = 5;- 指定者:
getRefsOrBuilderList在接口中SpanObjectOrBuilder
-
getRefsCount
public int getRefsCount()<Optional> In the across thread and across process, these references targeting the parent segments. The references usually have only one element, but in batch consumer case, such as in MQ or async batch process, it could be multiple.
repeated .skywalking.v3.SegmentReference refs = 5;- 指定者:
getRefsCount在接口中SpanObjectOrBuilder
-
getRefs
<Optional> In the across thread and across process, these references targeting the parent segments. The references usually have only one element, but in batch consumer case, such as in MQ or async batch process, it could be multiple.
repeated .skywalking.v3.SegmentReference refs = 5;- 指定者:
getRefs在接口中SpanObjectOrBuilder
-
getRefsOrBuilder
<Optional> In the across thread and across process, these references targeting the parent segments. The references usually have only one element, but in batch consumer case, such as in MQ or async batch process, it could be multiple.
repeated .skywalking.v3.SegmentReference refs = 5;- 指定者:
getRefsOrBuilder在接口中SpanObjectOrBuilder
-
getOperationName
A logic name represents this span. We don't recommend to include the parameter, such as HTTP request parameters, as a part of the operation, especially this is the name of the entry span. All statistic for the endpoints are aggregated base on this name. Those parameters should be added in the tags if necessary. If in some cases, it have to be a part of the operation name, users should use the Group Parameterized Endpoints capability at the backend to get the meaningful metrics. Read https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/endpoint-grouping-rules.md
string operationName = 6;- 指定者:
getOperationName在接口中SpanObjectOrBuilder- 返回:
- The operationName.
-
getOperationNameBytes
public com.google.protobuf.ByteString getOperationNameBytes()A logic name represents this span. We don't recommend to include the parameter, such as HTTP request parameters, as a part of the operation, especially this is the name of the entry span. All statistic for the endpoints are aggregated base on this name. Those parameters should be added in the tags if necessary. If in some cases, it have to be a part of the operation name, users should use the Group Parameterized Endpoints capability at the backend to get the meaningful metrics. Read https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/endpoint-grouping-rules.md
string operationName = 6;- 指定者:
getOperationNameBytes在接口中SpanObjectOrBuilder- 返回:
- The bytes for operationName.
-
getPeer
Remote address of the peer in RPC/MQ case. This is required when spanType = Exit, as it is a part of the SkyWalking STAM(Streaming Topology Analysis Method). For more details, read https://wu-sheng.github.io/STAM/
string peer = 7;- 指定者:
getPeer在接口中SpanObjectOrBuilder- 返回:
- The peer.
-
getPeerBytes
public com.google.protobuf.ByteString getPeerBytes()Remote address of the peer in RPC/MQ case. This is required when spanType = Exit, as it is a part of the SkyWalking STAM(Streaming Topology Analysis Method). For more details, read https://wu-sheng.github.io/STAM/
string peer = 7;- 指定者:
getPeerBytes在接口中SpanObjectOrBuilder- 返回:
- The bytes for peer.
-
getSpanTypeValue
public int getSpanTypeValue()Span type represents the role in the RPC context.
.skywalking.v3.SpanType spanType = 8;- 指定者:
getSpanTypeValue在接口中SpanObjectOrBuilder- 返回:
- The enum numeric value on the wire for spanType.
-
getSpanType
Span type represents the role in the RPC context.
.skywalking.v3.SpanType spanType = 8;- 指定者:
getSpanType在接口中SpanObjectOrBuilder- 返回:
- The spanType.
-
getSpanLayerValue
public int getSpanLayerValue()Span layer represent the component tech stack, related to the network tech.
.skywalking.v3.SpanLayer spanLayer = 9;- 指定者:
getSpanLayerValue在接口中SpanObjectOrBuilder- 返回:
- The enum numeric value on the wire for spanLayer.
-
getSpanLayer
Span layer represent the component tech stack, related to the network tech.
.skywalking.v3.SpanLayer spanLayer = 9;- 指定者:
getSpanLayer在接口中SpanObjectOrBuilder- 返回:
- The spanLayer.
-
getComponentId
public int getComponentId()Component id is a predefinited number id in the SkyWalking. It represents the framework, tech stack used by this tracked span, such as Spring. All IDs are defined in the https://github.com/apache/skywalking/blob/master/oap-server/server-bootstrap/src/main/resources/component-libraries.yml Send a pull request if you want to add languages, components or mapping defintions, all public components could be accepted. Follow this doc for more details, https://github.com/apache/skywalking/blob/master/docs/en/guides/Component-library-settings.md
int32 componentId = 10;- 指定者:
getComponentId在接口中SpanObjectOrBuilder- 返回:
- The componentId.
-
getIsError
public boolean getIsError()The status of the span. False means the tracked execution ends in the unexpected status. This affects the successful rate statistic in the backend. Exception or error code happened in the tracked process doesn't mean isError == true, the implementations of agent plugin and tracing SDK make the final decision.
bool isError = 11;- 指定者:
getIsError在接口中SpanObjectOrBuilder- 返回:
- The isError.
-
getTagsList
String key, String value pair. Tags provides more informance, includes parameters. In the OAP backend analysis, some special tag or tag combination could provide other advanced features. https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#special-span-tags
repeated .skywalking.v3.KeyStringValuePair tags = 12;- 指定者:
getTagsList在接口中SpanObjectOrBuilder
-
getTagsOrBuilderList
String key, String value pair. Tags provides more informance, includes parameters. In the OAP backend analysis, some special tag or tag combination could provide other advanced features. https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#special-span-tags
repeated .skywalking.v3.KeyStringValuePair tags = 12;- 指定者:
getTagsOrBuilderList在接口中SpanObjectOrBuilder
-
getTagsCount
public int getTagsCount()String key, String value pair. Tags provides more informance, includes parameters. In the OAP backend analysis, some special tag or tag combination could provide other advanced features. https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#special-span-tags
repeated .skywalking.v3.KeyStringValuePair tags = 12;- 指定者:
getTagsCount在接口中SpanObjectOrBuilder
-
getTags
String key, String value pair. Tags provides more informance, includes parameters. In the OAP backend analysis, some special tag or tag combination could provide other advanced features. https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#special-span-tags
repeated .skywalking.v3.KeyStringValuePair tags = 12;- 指定者:
getTags在接口中SpanObjectOrBuilder
-
getTagsOrBuilder
String key, String value pair. Tags provides more informance, includes parameters. In the OAP backend analysis, some special tag or tag combination could provide other advanced features. https://github.com/apache/skywalking/blob/master/docs/en/guides/Java-Plugin-Development-Guide.md#special-span-tags
repeated .skywalking.v3.KeyStringValuePair tags = 12;- 指定者:
getTagsOrBuilder在接口中SpanObjectOrBuilder
-
getLogsList
String key, String value pair with an accurate timestamp. Logging some events happening in the context of the span duration.
repeated .skywalking.v3.Log logs = 13;- 指定者:
getLogsList在接口中SpanObjectOrBuilder
-
getLogsOrBuilderList
String key, String value pair with an accurate timestamp. Logging some events happening in the context of the span duration.
repeated .skywalking.v3.Log logs = 13;- 指定者:
getLogsOrBuilderList在接口中SpanObjectOrBuilder
-
getLogsCount
public int getLogsCount()String key, String value pair with an accurate timestamp. Logging some events happening in the context of the span duration.
repeated .skywalking.v3.Log logs = 13;- 指定者:
getLogsCount在接口中SpanObjectOrBuilder
-
getLogs
String key, String value pair with an accurate timestamp. Logging some events happening in the context of the span duration.
repeated .skywalking.v3.Log logs = 13;- 指定者:
getLogs在接口中SpanObjectOrBuilder
-
getLogsOrBuilder
String key, String value pair with an accurate timestamp. Logging some events happening in the context of the span duration.
repeated .skywalking.v3.Log logs = 13;- 指定者:
getLogsOrBuilder在接口中SpanObjectOrBuilder
-
getSkipAnalysis
public boolean getSkipAnalysis()Force the backend don't do analysis, if the value is TRUE. The backend has its own configurations to follow or override this. Use this mostly because the agent/SDK could know more context of the service role.
bool skipAnalysis = 14;- 指定者:
getSkipAnalysis在接口中SpanObjectOrBuilder- 返回:
- The skipAnalysis.
-
isInitialized
public final boolean isInitialized()- 指定者:
isInitialized在接口中com.google.protobuf.MessageLiteOrBuilder- 覆盖:
isInitialized在类中com.google.protobuf.GeneratedMessageV3
-
writeTo
- 指定者:
writeTo在接口中com.google.protobuf.MessageLite- 覆盖:
writeTo在类中com.google.protobuf.GeneratedMessageV3- 抛出:
IOException
-
getSerializedSize
public int getSerializedSize()- 指定者:
getSerializedSize在接口中com.google.protobuf.MessageLite- 覆盖:
getSerializedSize在类中com.google.protobuf.GeneratedMessageV3
-
equals
- 指定者:
equals在接口中com.google.protobuf.Message- 覆盖:
equals在类中com.google.protobuf.AbstractMessage
-
hashCode
public int hashCode()- 指定者:
hashCode在接口中com.google.protobuf.Message- 覆盖:
hashCode在类中com.google.protobuf.AbstractMessage
-
parseFrom
public static SpanObject parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException - 抛出:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static SpanObject parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException - 抛出:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static SpanObject parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException - 抛出:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static SpanObject parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException - 抛出:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static SpanObject parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException - 抛出:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static SpanObject parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException - 抛出:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
- 抛出:
IOException
-
parseFrom
public static SpanObject parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException - 抛出:
IOException
-
parseDelimitedFrom
- 抛出:
IOException
-
parseDelimitedFrom
public static SpanObject parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException - 抛出:
IOException
-
parseFrom
- 抛出:
IOException
-
parseFrom
public static SpanObject parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException - 抛出:
IOException
-
newBuilderForType
- 指定者:
newBuilderForType在接口中com.google.protobuf.Message- 指定者:
newBuilderForType在接口中com.google.protobuf.MessageLite
-
newBuilder
-
newBuilder
-
toBuilder
- 指定者:
toBuilder在接口中com.google.protobuf.Message- 指定者:
toBuilder在接口中com.google.protobuf.MessageLite
-
newBuilderForType
protected SpanObject.Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) - 指定者:
newBuilderForType在类中com.google.protobuf.GeneratedMessageV3
-
getDefaultInstance
-
parser
-
getParserForType
- 指定者:
getParserForType在接口中com.google.protobuf.Message- 指定者:
getParserForType在接口中com.google.protobuf.MessageLite- 覆盖:
getParserForType在类中com.google.protobuf.GeneratedMessageV3
-
getDefaultInstanceForType
- 指定者:
getDefaultInstanceForType在接口中com.google.protobuf.MessageLiteOrBuilder- 指定者:
getDefaultInstanceForType在接口中com.google.protobuf.MessageOrBuilder
-