...

Text file src/github.com/linkerd/linkerd2-proxy-api/proto/google/protobuf/duration.proto

Documentation: github.com/linkerd/linkerd2-proxy-api/proto/google/protobuf

     1// Protocol Buffers - Google's data interchange format
     2// Copyright 2008 Google Inc.  All rights reserved.
     3// https://developers.google.com/protocol-buffers/
     4//
     5// Redistribution and use in source and binary forms, with or without
     6// modification, are permitted provided that the following conditions are
     7// met:
     8//
     9//     * Redistributions of source code must retain the above copyright
    10// notice, this list of conditions and the following disclaimer.
    11//     * Redistributions in binary form must reproduce the above
    12// copyright notice, this list of conditions and the following disclaimer
    13// in the documentation and/or other materials provided with the
    14// distribution.
    15//     * Neither the name of Google Inc. nor the names of its
    16// contributors may be used to endorse or promote products derived from
    17// this software without specific prior written permission.
    18//
    19// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    20// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    21// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    22// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    23// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    24// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    25// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    26// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    27// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    28// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    29// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    30
    31syntax = "proto3";
    32
    33package google.protobuf;
    34
    35option csharp_namespace = "Google.Protobuf.WellKnownTypes";
    36option cc_enable_arenas = true;
    37option go_package = "github.com/golang/protobuf/ptypes/duration";
    38option java_package = "com.google.protobuf";
    39option java_outer_classname = "DurationProto";
    40option java_multiple_files = true;
    41option objc_class_prefix = "GPB";
    42
    43// A Duration represents a signed, fixed-length span of time represented
    44// as a count of seconds and fractions of seconds at nanosecond
    45// resolution. It is independent of any calendar and concepts like "day"
    46// or "month". It is related to Timestamp in that the difference between
    47// two Timestamp values is a Duration and it can be added or subtracted
    48// from a Timestamp. Range is approximately +-10,000 years.
    49//
    50// # Examples
    51//
    52// Example 1: Compute Duration from two Timestamps in pseudo code.
    53//
    54//     Timestamp start = ...;
    55//     Timestamp end = ...;
    56//     Duration duration = ...;
    57//
    58//     duration.seconds = end.seconds - start.seconds;
    59//     duration.nanos = end.nanos - start.nanos;
    60//
    61//     if (duration.seconds < 0 && duration.nanos > 0) {
    62//       duration.seconds += 1;
    63//       duration.nanos -= 1000000000;
    64//     } else if (durations.seconds > 0 && duration.nanos < 0) {
    65//       duration.seconds -= 1;
    66//       duration.nanos += 1000000000;
    67//     }
    68//
    69// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
    70//
    71//     Timestamp start = ...;
    72//     Duration duration = ...;
    73//     Timestamp end = ...;
    74//
    75//     end.seconds = start.seconds + duration.seconds;
    76//     end.nanos = start.nanos + duration.nanos;
    77//
    78//     if (end.nanos < 0) {
    79//       end.seconds -= 1;
    80//       end.nanos += 1000000000;
    81//     } else if (end.nanos >= 1000000000) {
    82//       end.seconds += 1;
    83//       end.nanos -= 1000000000;
    84//     }
    85//
    86// Example 3: Compute Duration from datetime.timedelta in Python.
    87//
    88//     td = datetime.timedelta(days=3, minutes=10)
    89//     duration = Duration()
    90//     duration.FromTimedelta(td)
    91//
    92// # JSON Mapping
    93//
    94// In JSON format, the Duration type is encoded as a string rather than an
    95// object, where the string ends in the suffix "s" (indicating seconds) and
    96// is preceded by the number of seconds, with nanoseconds expressed as
    97// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
    98// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
    99// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
   100// microsecond should be expressed in JSON format as "3.000001s".
   101//
   102//
   103message Duration {
   104
   105  // Signed seconds of the span of time. Must be from -315,576,000,000
   106  // to +315,576,000,000 inclusive. Note: these bounds are computed from:
   107  // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
   108  int64 seconds = 1;
   109
   110  // Signed fractions of a second at nanosecond resolution of the span
   111  // of time. Durations less than one second are represented with a 0
   112  // `seconds` field and a positive or negative `nanos` field. For durations
   113  // of one second or more, a non-zero value for the `nanos` field must be
   114  // of the same sign as the `seconds` field. Must be from -999,999,999
   115  // to +999,999,999 inclusive.
   116  int32 nanos = 2;
   117}

View as plain text