Source File
duration.pb.go
Belonging Package
google.golang.org/protobuf/types/known/durationpb
// Protocol Buffers - Google's data interchange format// Copyright 2008 Google Inc. All rights reserved.// https://developers.google.com/protocol-buffers///// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met://// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.// * Neither the name of Google Inc. nor the names of its// contributors may be used to endorse or promote products derived from// this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.// Code generated by protoc-gen-go. DO NOT EDIT.// source: google/protobuf/duration.proto// Package durationpb contains generated types for google/protobuf/duration.proto.//// The Duration message represents a signed span of time.//// # Conversion to a Go Duration//// The AsDuration method can be used to convert a Duration message to a// standard Go time.Duration value://// d := dur.AsDuration()// ... // make use of d as a time.Duration//// Converting to a time.Duration is a common operation so that the extensive// set of time-based operations provided by the time package can be leveraged.// See https://golang.org/pkg/time for more information.//// The AsDuration method performs the conversion on a best-effort basis.// Durations with denormal values (e.g., nanoseconds beyond -99999999 and// +99999999, inclusive; or seconds and nanoseconds with opposite signs)// are normalized during the conversion to a time.Duration. To manually check for// invalid Duration per the documented limitations in duration.proto,// additionally call the CheckValid method://// if err := dur.CheckValid(); err != nil {// ... // handle error// }//// Note that the documented limitations in duration.proto does not protect a// Duration from overflowing the representable range of a time.Duration in Go.// The AsDuration method uses saturation arithmetic such that an overflow clamps// the resulting value to the closest representable value (e.g., math.MaxInt64// for positive overflow and math.MinInt64 for negative overflow).//// # Conversion from a Go Duration//// The durationpb.New function can be used to construct a Duration message// from a standard Go time.Duration value://// dur := durationpb.New(d)// ... // make use of d as a *durationpb.Durationpackage durationpbimport (protoreflectprotoimplmathreflectsynctimeunsafe)// A Duration represents a signed, fixed-length span of time represented// as a count of seconds and fractions of seconds at nanosecond// resolution. It is independent of any calendar and concepts like "day"// or "month". It is related to Timestamp in that the difference between// two Timestamp values is a Duration and it can be added or subtracted// from a Timestamp. Range is approximately +-10,000 years.//// # Examples//// Example 1: Compute Duration from two Timestamps in pseudo code.//// Timestamp start = ...;// Timestamp end = ...;// Duration duration = ...;//// duration.seconds = end.seconds - start.seconds;// duration.nanos = end.nanos - start.nanos;//// if (duration.seconds < 0 && duration.nanos > 0) {// duration.seconds += 1;// duration.nanos -= 1000000000;// } else if (duration.seconds > 0 && duration.nanos < 0) {// duration.seconds -= 1;// duration.nanos += 1000000000;// }//// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.//// Timestamp start = ...;// Duration duration = ...;// Timestamp end = ...;//// end.seconds = start.seconds + duration.seconds;// end.nanos = start.nanos + duration.nanos;//// if (end.nanos < 0) {// end.seconds -= 1;// end.nanos += 1000000000;// } else if (end.nanos >= 1000000000) {// end.seconds += 1;// end.nanos -= 1000000000;// }//// Example 3: Compute Duration from datetime.timedelta in Python.//// td = datetime.timedelta(days=3, minutes=10)// duration = Duration()// duration.FromTimedelta(td)//// # JSON Mapping//// In JSON format, the Duration type is encoded as a string rather than an// object, where the string ends in the suffix "s" (indicating seconds) and// is preceded by the number of seconds, with nanoseconds expressed as// fractional seconds. For example, 3 seconds with 0 nanoseconds should be// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should// be expressed in JSON format as "3.000000001s", and 3 seconds and 1// microsecond should be expressed in JSON format as "3.000001s".type Duration struct {state protoimpl.MessageState `protogen:"open.v1"`// Signed seconds of the span of time. Must be from -315,576,000,000// to +315,576,000,000 inclusive. Note: these bounds are computed from:// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 yearsSeconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`// Signed fractions of a second at nanosecond resolution of the span// of time. Durations less than one second are represented with a 0// `seconds` field and a positive or negative `nanos` field. For durations// of one second or more, a non-zero value for the `nanos` field must be// of the same sign as the `seconds` field. Must be from -999,999,999// to +999,999,999 inclusive.Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`unknownFields protoimpl.UnknownFieldssizeCache protoimpl.SizeCache}// New constructs a new Duration from the provided time.Duration.func ( time.Duration) *Duration {:= .Nanoseconds():= / 1e9-= * 1e9return &Duration{Seconds: int64(), Nanos: int32()}}// AsDuration converts x to a time.Duration,// returning the closest duration value in the event of overflow.func ( *Duration) () time.Duration {:= .GetSeconds():= .GetNanos():= time.Duration() * time.Second:= /time.Second != time.Duration()+= time.Duration() * time.Nanosecond= || ( < 0 && < 0 && > 0)= || ( > 0 && > 0 && < 0)if {switch {case < 0:return time.Duration(math.MinInt64)case > 0:return time.Duration(math.MaxInt64)}}return}// IsValid reports whether the duration is valid.// It is equivalent to CheckValid == nil.func ( *Duration) () bool {return .check() == 0}// CheckValid returns an error if the duration is invalid.// In particular, it checks whether the value is within the range of// -10000 years to +10000 years inclusive.// An error is reported for a nil Duration.func ( *Duration) () error {switch .check() {case invalidNil:return protoimpl.X.NewError("invalid nil Duration")case invalidUnderflow:return protoimpl.X.NewError("duration (%v) exceeds -10000 years", )case invalidOverflow:return protoimpl.X.NewError("duration (%v) exceeds +10000 years", )case invalidNanosRange:return protoimpl.X.NewError("duration (%v) has out-of-range nanos", )case invalidNanosSign:return protoimpl.X.NewError("duration (%v) has seconds and nanos with different signs", )default:return nil}}const (_ = iotainvalidNilinvalidUnderflowinvalidOverflowinvalidNanosRangeinvalidNanosSign)func ( *Duration) () uint {const = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min:= .GetSeconds():= .GetNanos()switch {case == nil:return invalidNilcase < -:return invalidUnderflowcase > +:return invalidOverflowcase <= -1e9 || >= +1e9:return invalidNanosRangecase ( > 0 && < 0) || ( < 0 && > 0):return invalidNanosSigndefault:return 0}}func ( *Duration) () {* = Duration{}:= &file_google_protobuf_duration_proto_msgTypes[0]:= protoimpl.X.MessageStateOf(protoimpl.Pointer()).StoreMessageInfo()}func ( *Duration) () string {return protoimpl.X.MessageStringOf()}func (*Duration) () {}func ( *Duration) () protoreflect.Message {:= &file_google_protobuf_duration_proto_msgTypes[0]if != nil {:= protoimpl.X.MessageStateOf(protoimpl.Pointer())if .LoadMessageInfo() == nil {.StoreMessageInfo()}return}return .MessageOf()}// Deprecated: Use Duration.ProtoReflect.Descriptor instead.func (*Duration) () ([]byte, []int) {return file_google_protobuf_duration_proto_rawDescGZIP(), []int{0}}func ( *Duration) () int64 {if != nil {return .Seconds}return 0}func ( *Duration) () int32 {if != nil {return .Nanos}return 0}var File_google_protobuf_duration_proto protoreflect.FileDescriptorconst file_google_protobuf_duration_proto_rawDesc = "" +"\n" +"\x1egoogle/protobuf/duration.proto\x12\x0fgoogle.protobuf\":\n" +"\bDuration\x12\x18\n" +"\aseconds\x18\x01 \x01(\x03R\aseconds\x12\x14\n" +"\x05nanos\x18\x02 \x01(\x05R\x05nanosB\x83\x01\n" +"\x13com.google.protobufB\rDurationProtoP\x01Z1google.golang.org/protobuf/types/known/durationpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"var (file_google_protobuf_duration_proto_rawDescOnce sync.Oncefile_google_protobuf_duration_proto_rawDescData []byte)func file_google_protobuf_duration_proto_rawDescGZIP() []byte {file_google_protobuf_duration_proto_rawDescOnce.Do(func() {file_google_protobuf_duration_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)))})return file_google_protobuf_duration_proto_rawDescData}var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)var file_google_protobuf_duration_proto_goTypes = []any{(*Duration)(nil), // 0: google.protobuf.Duration}var file_google_protobuf_duration_proto_depIdxs = []int32{0, // [0:0] is the sub-list for method output_type0, // [0:0] is the sub-list for method input_type0, // [0:0] is the sub-list for extension type_name0, // [0:0] is the sub-list for extension extendee0, // [0:0] is the sub-list for field type_name}func init() { file_google_protobuf_duration_proto_init() }func file_google_protobuf_duration_proto_init() {if File_google_protobuf_duration_proto != nil {return}type struct{}:= protoimpl.TypeBuilder{File: protoimpl.DescBuilder{GoPackagePath: reflect.TypeOf({}).PkgPath(),RawDescriptor: unsafe.Slice(unsafe.StringData(file_google_protobuf_duration_proto_rawDesc), len(file_google_protobuf_duration_proto_rawDesc)),NumEnums: 0,NumMessages: 1,NumExtensions: 0,NumServices: 0,},GoTypes: file_google_protobuf_duration_proto_goTypes,DependencyIndexes: file_google_protobuf_duration_proto_depIdxs,MessageInfos: file_google_protobuf_duration_proto_msgTypes,}.Build()File_google_protobuf_duration_proto = .Filefile_google_protobuf_duration_proto_goTypes = nilfile_google_protobuf_duration_proto_depIdxs = nil}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |