xref: /aosp_15_r20/external/protobuf/php/src/Google/Protobuf/Duration.php (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker<?php
2*1b3f573fSAndroid Build Coastguard Worker# Generated by the protocol buffer compiler.  DO NOT EDIT!
3*1b3f573fSAndroid Build Coastguard Worker# source: google/protobuf/duration.proto
4*1b3f573fSAndroid Build Coastguard Worker
5*1b3f573fSAndroid Build Coastguard Workernamespace Google\Protobuf;
6*1b3f573fSAndroid Build Coastguard Worker
7*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\GPBType;
8*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\RepeatedField;
9*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\GPBUtil;
10*1b3f573fSAndroid Build Coastguard Worker
11*1b3f573fSAndroid Build Coastguard Worker/**
12*1b3f573fSAndroid Build Coastguard Worker * A Duration represents a signed, fixed-length span of time represented
13*1b3f573fSAndroid Build Coastguard Worker * as a count of seconds and fractions of seconds at nanosecond
14*1b3f573fSAndroid Build Coastguard Worker * resolution. It is independent of any calendar and concepts like "day"
15*1b3f573fSAndroid Build Coastguard Worker * or "month". It is related to Timestamp in that the difference between
16*1b3f573fSAndroid Build Coastguard Worker * two Timestamp values is a Duration and it can be added or subtracted
17*1b3f573fSAndroid Build Coastguard Worker * from a Timestamp. Range is approximately +-10,000 years.
18*1b3f573fSAndroid Build Coastguard Worker * # Examples
19*1b3f573fSAndroid Build Coastguard Worker * Example 1: Compute Duration from two Timestamps in pseudo code.
20*1b3f573fSAndroid Build Coastguard Worker *     Timestamp start = ...;
21*1b3f573fSAndroid Build Coastguard Worker *     Timestamp end = ...;
22*1b3f573fSAndroid Build Coastguard Worker *     Duration duration = ...;
23*1b3f573fSAndroid Build Coastguard Worker *     duration.seconds = end.seconds - start.seconds;
24*1b3f573fSAndroid Build Coastguard Worker *     duration.nanos = end.nanos - start.nanos;
25*1b3f573fSAndroid Build Coastguard Worker *     if (duration.seconds < 0 && duration.nanos > 0) {
26*1b3f573fSAndroid Build Coastguard Worker *       duration.seconds += 1;
27*1b3f573fSAndroid Build Coastguard Worker *       duration.nanos -= 1000000000;
28*1b3f573fSAndroid Build Coastguard Worker *     } else if (duration.seconds > 0 && duration.nanos < 0) {
29*1b3f573fSAndroid Build Coastguard Worker *       duration.seconds -= 1;
30*1b3f573fSAndroid Build Coastguard Worker *       duration.nanos += 1000000000;
31*1b3f573fSAndroid Build Coastguard Worker *     }
32*1b3f573fSAndroid Build Coastguard Worker * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
33*1b3f573fSAndroid Build Coastguard Worker *     Timestamp start = ...;
34*1b3f573fSAndroid Build Coastguard Worker *     Duration duration = ...;
35*1b3f573fSAndroid Build Coastguard Worker *     Timestamp end = ...;
36*1b3f573fSAndroid Build Coastguard Worker *     end.seconds = start.seconds + duration.seconds;
37*1b3f573fSAndroid Build Coastguard Worker *     end.nanos = start.nanos + duration.nanos;
38*1b3f573fSAndroid Build Coastguard Worker *     if (end.nanos < 0) {
39*1b3f573fSAndroid Build Coastguard Worker *       end.seconds -= 1;
40*1b3f573fSAndroid Build Coastguard Worker *       end.nanos += 1000000000;
41*1b3f573fSAndroid Build Coastguard Worker *     } else if (end.nanos >= 1000000000) {
42*1b3f573fSAndroid Build Coastguard Worker *       end.seconds += 1;
43*1b3f573fSAndroid Build Coastguard Worker *       end.nanos -= 1000000000;
44*1b3f573fSAndroid Build Coastguard Worker *     }
45*1b3f573fSAndroid Build Coastguard Worker * Example 3: Compute Duration from datetime.timedelta in Python.
46*1b3f573fSAndroid Build Coastguard Worker *     td = datetime.timedelta(days=3, minutes=10)
47*1b3f573fSAndroid Build Coastguard Worker *     duration = Duration()
48*1b3f573fSAndroid Build Coastguard Worker *     duration.FromTimedelta(td)
49*1b3f573fSAndroid Build Coastguard Worker * # JSON Mapping
50*1b3f573fSAndroid Build Coastguard Worker * In JSON format, the Duration type is encoded as a string rather than an
51*1b3f573fSAndroid Build Coastguard Worker * object, where the string ends in the suffix "s" (indicating seconds) and
52*1b3f573fSAndroid Build Coastguard Worker * is preceded by the number of seconds, with nanoseconds expressed as
53*1b3f573fSAndroid Build Coastguard Worker * fractional seconds. For example, 3 seconds with 0 nanoseconds should be
54*1b3f573fSAndroid Build Coastguard Worker * encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
55*1b3f573fSAndroid Build Coastguard Worker * be expressed in JSON format as "3.000000001s", and 3 seconds and 1
56*1b3f573fSAndroid Build Coastguard Worker * microsecond should be expressed in JSON format as "3.000001s".
57*1b3f573fSAndroid Build Coastguard Worker *
58*1b3f573fSAndroid Build Coastguard Worker * Generated from protobuf message <code>google.protobuf.Duration</code>
59*1b3f573fSAndroid Build Coastguard Worker */
60*1b3f573fSAndroid Build Coastguard Workerclass Duration extends \Google\Protobuf\Internal\Message
61*1b3f573fSAndroid Build Coastguard Worker{
62*1b3f573fSAndroid Build Coastguard Worker    /**
63*1b3f573fSAndroid Build Coastguard Worker     * Signed seconds of the span of time. Must be from -315,576,000,000
64*1b3f573fSAndroid Build Coastguard Worker     * to +315,576,000,000 inclusive. Note: these bounds are computed from:
65*1b3f573fSAndroid Build Coastguard Worker     * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
66*1b3f573fSAndroid Build Coastguard Worker     *
67*1b3f573fSAndroid Build Coastguard Worker     * Generated from protobuf field <code>int64 seconds = 1;</code>
68*1b3f573fSAndroid Build Coastguard Worker     */
69*1b3f573fSAndroid Build Coastguard Worker    protected $seconds = 0;
70*1b3f573fSAndroid Build Coastguard Worker    /**
71*1b3f573fSAndroid Build Coastguard Worker     * Signed fractions of a second at nanosecond resolution of the span
72*1b3f573fSAndroid Build Coastguard Worker     * of time. Durations less than one second are represented with a 0
73*1b3f573fSAndroid Build Coastguard Worker     * `seconds` field and a positive or negative `nanos` field. For durations
74*1b3f573fSAndroid Build Coastguard Worker     * of one second or more, a non-zero value for the `nanos` field must be
75*1b3f573fSAndroid Build Coastguard Worker     * of the same sign as the `seconds` field. Must be from -999,999,999
76*1b3f573fSAndroid Build Coastguard Worker     * to +999,999,999 inclusive.
77*1b3f573fSAndroid Build Coastguard Worker     *
78*1b3f573fSAndroid Build Coastguard Worker     * Generated from protobuf field <code>int32 nanos = 2;</code>
79*1b3f573fSAndroid Build Coastguard Worker     */
80*1b3f573fSAndroid Build Coastguard Worker    protected $nanos = 0;
81*1b3f573fSAndroid Build Coastguard Worker
82*1b3f573fSAndroid Build Coastguard Worker    /**
83*1b3f573fSAndroid Build Coastguard Worker     * Constructor.
84*1b3f573fSAndroid Build Coastguard Worker     *
85*1b3f573fSAndroid Build Coastguard Worker     * @param array $data {
86*1b3f573fSAndroid Build Coastguard Worker     *     Optional. Data for populating the Message object.
87*1b3f573fSAndroid Build Coastguard Worker     *
88*1b3f573fSAndroid Build Coastguard Worker     *     @type int|string $seconds
89*1b3f573fSAndroid Build Coastguard Worker     *           Signed seconds of the span of time. Must be from -315,576,000,000
90*1b3f573fSAndroid Build Coastguard Worker     *           to +315,576,000,000 inclusive. Note: these bounds are computed from:
91*1b3f573fSAndroid Build Coastguard Worker     *           60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
92*1b3f573fSAndroid Build Coastguard Worker     *     @type int $nanos
93*1b3f573fSAndroid Build Coastguard Worker     *           Signed fractions of a second at nanosecond resolution of the span
94*1b3f573fSAndroid Build Coastguard Worker     *           of time. Durations less than one second are represented with a 0
95*1b3f573fSAndroid Build Coastguard Worker     *           `seconds` field and a positive or negative `nanos` field. For durations
96*1b3f573fSAndroid Build Coastguard Worker     *           of one second or more, a non-zero value for the `nanos` field must be
97*1b3f573fSAndroid Build Coastguard Worker     *           of the same sign as the `seconds` field. Must be from -999,999,999
98*1b3f573fSAndroid Build Coastguard Worker     *           to +999,999,999 inclusive.
99*1b3f573fSAndroid Build Coastguard Worker     * }
100*1b3f573fSAndroid Build Coastguard Worker     */
101*1b3f573fSAndroid Build Coastguard Worker    public function __construct($data = NULL) {
102*1b3f573fSAndroid Build Coastguard Worker        \GPBMetadata\Google\Protobuf\Duration::initOnce();
103*1b3f573fSAndroid Build Coastguard Worker        parent::__construct($data);
104*1b3f573fSAndroid Build Coastguard Worker    }
105*1b3f573fSAndroid Build Coastguard Worker
106*1b3f573fSAndroid Build Coastguard Worker    /**
107*1b3f573fSAndroid Build Coastguard Worker     * Signed seconds of the span of time. Must be from -315,576,000,000
108*1b3f573fSAndroid Build Coastguard Worker     * to +315,576,000,000 inclusive. Note: these bounds are computed from:
109*1b3f573fSAndroid Build Coastguard Worker     * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
110*1b3f573fSAndroid Build Coastguard Worker     *
111*1b3f573fSAndroid Build Coastguard Worker     * Generated from protobuf field <code>int64 seconds = 1;</code>
112*1b3f573fSAndroid Build Coastguard Worker     * @return int|string
113*1b3f573fSAndroid Build Coastguard Worker     */
114*1b3f573fSAndroid Build Coastguard Worker    public function getSeconds()
115*1b3f573fSAndroid Build Coastguard Worker    {
116*1b3f573fSAndroid Build Coastguard Worker        return $this->seconds;
117*1b3f573fSAndroid Build Coastguard Worker    }
118*1b3f573fSAndroid Build Coastguard Worker
119*1b3f573fSAndroid Build Coastguard Worker    /**
120*1b3f573fSAndroid Build Coastguard Worker     * Signed seconds of the span of time. Must be from -315,576,000,000
121*1b3f573fSAndroid Build Coastguard Worker     * to +315,576,000,000 inclusive. Note: these bounds are computed from:
122*1b3f573fSAndroid Build Coastguard Worker     * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
123*1b3f573fSAndroid Build Coastguard Worker     *
124*1b3f573fSAndroid Build Coastguard Worker     * Generated from protobuf field <code>int64 seconds = 1;</code>
125*1b3f573fSAndroid Build Coastguard Worker     * @param int|string $var
126*1b3f573fSAndroid Build Coastguard Worker     * @return $this
127*1b3f573fSAndroid Build Coastguard Worker     */
128*1b3f573fSAndroid Build Coastguard Worker    public function setSeconds($var)
129*1b3f573fSAndroid Build Coastguard Worker    {
130*1b3f573fSAndroid Build Coastguard Worker        GPBUtil::checkInt64($var);
131*1b3f573fSAndroid Build Coastguard Worker        $this->seconds = $var;
132*1b3f573fSAndroid Build Coastguard Worker
133*1b3f573fSAndroid Build Coastguard Worker        return $this;
134*1b3f573fSAndroid Build Coastguard Worker    }
135*1b3f573fSAndroid Build Coastguard Worker
136*1b3f573fSAndroid Build Coastguard Worker    /**
137*1b3f573fSAndroid Build Coastguard Worker     * Signed fractions of a second at nanosecond resolution of the span
138*1b3f573fSAndroid Build Coastguard Worker     * of time. Durations less than one second are represented with a 0
139*1b3f573fSAndroid Build Coastguard Worker     * `seconds` field and a positive or negative `nanos` field. For durations
140*1b3f573fSAndroid Build Coastguard Worker     * of one second or more, a non-zero value for the `nanos` field must be
141*1b3f573fSAndroid Build Coastguard Worker     * of the same sign as the `seconds` field. Must be from -999,999,999
142*1b3f573fSAndroid Build Coastguard Worker     * to +999,999,999 inclusive.
143*1b3f573fSAndroid Build Coastguard Worker     *
144*1b3f573fSAndroid Build Coastguard Worker     * Generated from protobuf field <code>int32 nanos = 2;</code>
145*1b3f573fSAndroid Build Coastguard Worker     * @return int
146*1b3f573fSAndroid Build Coastguard Worker     */
147*1b3f573fSAndroid Build Coastguard Worker    public function getNanos()
148*1b3f573fSAndroid Build Coastguard Worker    {
149*1b3f573fSAndroid Build Coastguard Worker        return $this->nanos;
150*1b3f573fSAndroid Build Coastguard Worker    }
151*1b3f573fSAndroid Build Coastguard Worker
152*1b3f573fSAndroid Build Coastguard Worker    /**
153*1b3f573fSAndroid Build Coastguard Worker     * Signed fractions of a second at nanosecond resolution of the span
154*1b3f573fSAndroid Build Coastguard Worker     * of time. Durations less than one second are represented with a 0
155*1b3f573fSAndroid Build Coastguard Worker     * `seconds` field and a positive or negative `nanos` field. For durations
156*1b3f573fSAndroid Build Coastguard Worker     * of one second or more, a non-zero value for the `nanos` field must be
157*1b3f573fSAndroid Build Coastguard Worker     * of the same sign as the `seconds` field. Must be from -999,999,999
158*1b3f573fSAndroid Build Coastguard Worker     * to +999,999,999 inclusive.
159*1b3f573fSAndroid Build Coastguard Worker     *
160*1b3f573fSAndroid Build Coastguard Worker     * Generated from protobuf field <code>int32 nanos = 2;</code>
161*1b3f573fSAndroid Build Coastguard Worker     * @param int $var
162*1b3f573fSAndroid Build Coastguard Worker     * @return $this
163*1b3f573fSAndroid Build Coastguard Worker     */
164*1b3f573fSAndroid Build Coastguard Worker    public function setNanos($var)
165*1b3f573fSAndroid Build Coastguard Worker    {
166*1b3f573fSAndroid Build Coastguard Worker        GPBUtil::checkInt32($var);
167*1b3f573fSAndroid Build Coastguard Worker        $this->nanos = $var;
168*1b3f573fSAndroid Build Coastguard Worker
169*1b3f573fSAndroid Build Coastguard Worker        return $this;
170*1b3f573fSAndroid Build Coastguard Worker    }
171*1b3f573fSAndroid Build Coastguard Worker
172*1b3f573fSAndroid Build Coastguard Worker}
173*1b3f573fSAndroid Build Coastguard Worker
174