parent
2e5123a399
commit
96e379ff8b
6 changed files with 635 additions and 0 deletions
@ -0,0 +1,98 @@ |
||||
// 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. |
||||
syntax = "proto3"; |
||||
|
||||
package google.protobuf; |
||||
|
||||
option java_generate_equals_and_hash = true; |
||||
option java_multiple_files = true; |
||||
option java_outer_classname = "AnyProto"; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
|
||||
// `Any` contains an arbitrary serialized message along with a URL |
||||
// that describes the type of the serialized message. |
||||
// |
||||
// |
||||
// |
||||
// # JSON |
||||
// The JSON representation of an `Any` value uses the regular |
||||
// representation of the deserialized, embedded message, with an |
||||
// additional field `@type` which contains the type URL. Example: |
||||
// |
||||
// package google.profile; |
||||
// message Person { |
||||
// string first_name = 1; |
||||
// string last_name = 2; |
||||
// } |
||||
// |
||||
// { |
||||
// "@type": "type.googleapis.com/google.profile.Person", |
||||
// "firstName": <string>, |
||||
// "lastName": <string> |
||||
// } |
||||
// |
||||
// If the embedded message type is well-known and has a custom JSON |
||||
// representation, that representation will be embedded adding a field |
||||
// `value` which holds the custom JSON in addition to the the `@type` |
||||
// field. Example (for message [google.protobuf.Duration][google.protobuf.Duration]): |
||||
// |
||||
// { |
||||
// "@type": "type.googleapis.com/google.protobuf.Duration", |
||||
// "value": "1.212s" |
||||
// } |
||||
// |
||||
message Any { |
||||
// A URL/resource name whose content describes the type of the |
||||
// serialized message. |
||||
// |
||||
// For URLs which use the schema `http`, `https`, or no schema, the |
||||
// following restrictions and interpretations apply: |
||||
// |
||||
// * If no schema is provided, https is assumed. |
||||
// * The last segment of the URL's path must represent the fully |
||||
// qualified name of the type (as in `path/google.protobuf.Duration`). |
||||
// * An HTTP GET on the URL must yield a [google.protobuf.Type][google.protobuf.Type] |
||||
// value in binary format, or produce an error. |
||||
// * Applications are allowed to cache lookup results based on the |
||||
// URL, or have them precompiled into a binary to avoid any |
||||
// lookup. Therefore, binary compatibility need to be preserved |
||||
// on changes to types. (Use versioned type names to manage |
||||
// breaking changes.) |
||||
// |
||||
// Schemas other than `http`, `https` (or the empty schema) might be |
||||
// used with implementation specific semantics. |
||||
// |
||||
// |
||||
string type_url = 1; |
||||
|
||||
// Must be valid serialized data of the above specified type. |
||||
bytes value = 2; |
||||
} |
@ -0,0 +1,93 @@ |
||||
// 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. |
||||
syntax = "proto3"; |
||||
|
||||
package google.protobuf; |
||||
|
||||
option java_generate_equals_and_hash = true; |
||||
option java_multiple_files = true; |
||||
option java_outer_classname = "DurationProto"; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
|
||||
// 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. |
||||
// |
||||
// 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 (durations.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; |
||||
// } |
||||
// |
||||
message Duration { |
||||
// Signed seconds of the span of time. Must be from -315,576,000,000 |
||||
// to +315,576,000,000 inclusive. |
||||
int64 seconds = 1; |
||||
|
||||
// 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. |
||||
int32 nanos = 2; |
||||
} |
@ -0,0 +1,161 @@ |
||||
// 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. |
||||
syntax = "proto3"; |
||||
|
||||
package google.protobuf; |
||||
|
||||
option java_multiple_files = true; |
||||
option java_outer_classname = "FieldMaskProto"; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
|
||||
// `FieldMask` represents a set of symbolic field paths, for example: |
||||
// |
||||
// paths: "f.a" |
||||
// paths: "f.b.d" |
||||
// |
||||
// Here `f` represents a field in some root message, `a` and `b` |
||||
// fields in the message found in `f`, and `d` a field found in the |
||||
// message in `f.b`. |
||||
// |
||||
// Field masks are used to specify a subset of fields that should be |
||||
// returned by a get operation or modified by an update operation. |
||||
// Field masks also have a custom JSON encoding (see below). |
||||
// |
||||
// # Field Masks in Projections |
||||
// When used in the context of a projection, a response message or |
||||
// sub-message is filtered by the API to only contain those fields as |
||||
// specified in the mask. For example, if the mask in the previous |
||||
// example is applied to a response message as follows: |
||||
// |
||||
// f { |
||||
// a : 22 |
||||
// b { |
||||
// d : 1 |
||||
// x : 2 |
||||
// } |
||||
// y : 13 |
||||
// } |
||||
// z: 8 |
||||
// |
||||
// The result will not contain specific values for fields x,y and z |
||||
// (there value will be set to the default, and omitted in proto text |
||||
// output): |
||||
// |
||||
// |
||||
// f { |
||||
// a : 22 |
||||
// b { |
||||
// d : 1 |
||||
// } |
||||
// } |
||||
// |
||||
// A repeated field is not allowed except at the last position of a |
||||
// field mask. |
||||
// |
||||
// If a FieldMask object is not present in a get operation, the |
||||
// operation applies to all fields (as if a FieldMask of all fields |
||||
// had been specified). |
||||
// |
||||
// Note that a field mask does not necessarily applies to the |
||||
// top-level response message. In case of a REST get operation, the |
||||
// field mask applies directly to the response, but in case of a REST |
||||
// list operation, the mask instead applies to each individual message |
||||
// in the returned resource list. In case of a REST custom method, |
||||
// other definitions may be used. Where the mask applies will be |
||||
// clearly documented together with its declaration in the API. In |
||||
// any case, the effect on the returned resource/resources is required |
||||
// behavior for APIs. |
||||
// |
||||
// # Field Masks in Update Operations |
||||
// A field mask in update operations specifies which fields of the |
||||
// targeted resource are going to be updated. The API is required |
||||
// to only change the values of the fields as specified in the mask |
||||
// and leave the others untouched. If a resource is passed in to |
||||
// describe the updated values, the API ignores the values of all |
||||
// fields not covered by the mask. |
||||
// |
||||
// In order to reset a field's value to the default, the field must |
||||
// be in the mask and set to the default value in the provided resource. |
||||
// Hence, in order to reset all fields of a resource, provide a default |
||||
// instance of the resource and set all fields in the mask, or do |
||||
// not provide a mask as described below. |
||||
// |
||||
// If a field mask is not present on update, the operation applies to |
||||
// all fields (as if a field mask of all fields has been specified). |
||||
// Note that in the presence of schema evolution, this may mean that |
||||
// fields the client does not know and has therefore not filled into |
||||
// the request will be reset to their default. If this is unwanted |
||||
// behavior, a specific service may require a client to always specify |
||||
// a field mask, producing an error if not. |
||||
// |
||||
// As with get operations, the location of the resource which |
||||
// describes the updated values in the request message depends on the |
||||
// operation kind. In any case, the effect of the field mask is |
||||
// required to be honored by the API. |
||||
// |
||||
// ## Considerations for HTTP REST |
||||
// The HTTP kind of an update operation which uses a field mask must |
||||
// be set to PATCH instead of PUT in order to satisfy HTTP semantics |
||||
// (PUT must only be used for full updates). |
||||
// |
||||
// # JSON Encoding of Field Masks |
||||
// In JSON, a field mask is encoded as a single string where paths are |
||||
// separated by a comma. Fields name in each path are converted |
||||
// to/from lower-camel naming conventions. |
||||
// |
||||
// As an example, consider the following message declarations: |
||||
// |
||||
// message Profile { |
||||
// User user = 1; |
||||
// Photo photo = 2; |
||||
// } |
||||
// message User { |
||||
// string display_name = 1; |
||||
// string address = 2; |
||||
// } |
||||
// |
||||
// In proto a field mask for `Profile` may look as such: |
||||
// |
||||
// mask { |
||||
// paths: "user.display_name" |
||||
// paths: "photo" |
||||
// } |
||||
// |
||||
// In JSON, the same mask is represented as below: |
||||
// |
||||
// { |
||||
// mask: "user.displayName,photo" |
||||
// } |
||||
// |
||||
message FieldMask { |
||||
// The set of field mask paths. |
||||
repeated string paths = 1; |
||||
} |
@ -0,0 +1,83 @@ |
||||
// 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. |
||||
syntax = "proto3"; |
||||
|
||||
package google.protobuf; |
||||
|
||||
option java_generate_equals_and_hash = true; |
||||
option java_multiple_files = true; |
||||
option java_outer_classname = "StructProto"; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
|
||||
// `Struct` represents a structured data value, consisting of fields |
||||
// which map to dynamically typed values. In some languages, `Struct` |
||||
// might be supported by a native representation. For example, in |
||||
// scripting languages like JS a struct is represented as an |
||||
// object. The details of that representation are described together |
||||
// with the proto support for the language. |
||||
message Struct { |
||||
// Map of dynamically typed values. |
||||
map<string, Value> fields = 1; |
||||
} |
||||
|
||||
// `Value` represents a dynamically typed value which can be either |
||||
// null, a number, a string, a boolean, a recursive struct value, or a |
||||
// list of values. A producer of value is expected to set one of that |
||||
// variants, absence of any variant indicates an error. |
||||
message Value { |
||||
oneof kind { |
||||
// Represents a null value. |
||||
NullValue null_value = 1; |
||||
// Represents a double value. |
||||
double number_value = 2; |
||||
// Represents a string value. |
||||
string string_value = 3; |
||||
// Represents a boolean value. |
||||
bool bool_value = 4; |
||||
// Represents a structured value. |
||||
Struct struct_value = 5; |
||||
// Represents a repeated `Value`. |
||||
ListValue list_value = 6; |
||||
} |
||||
} |
||||
|
||||
// `NullValue` is a singleton enumeration to represent the null |
||||
// value for the `Value` type union. |
||||
enum NullValue { |
||||
// Null value. |
||||
NULL_VALUE = 0; |
||||
} |
||||
|
||||
// `ListValue` is a wrapper around a repeated field of values. |
||||
message ListValue { |
||||
// Repeated field of dynamically typed values. |
||||
repeated Value values = 1; |
||||
} |
@ -0,0 +1,103 @@ |
||||
// 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. |
||||
syntax = "proto3"; |
||||
|
||||
package google.protobuf; |
||||
|
||||
option java_generate_equals_and_hash = true; |
||||
option java_multiple_files = true; |
||||
option java_outer_classname = "TimestampProto"; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
|
||||
// A Timestamp represents a point in time independent of any time zone |
||||
// or calendar, represented as seconds and fractions of seconds at |
||||
// nanosecond resolution in UTC Epoch time. It is encoded using the |
||||
// Proleptic Gregorian Calendar which extends the Gregorian calendar |
||||
// backwards to year one. It is encoded assuming all minutes are 60 |
||||
// seconds long, i.e. leap seconds are "smeared" so that no leap second |
||||
// table is needed for interpretation. Range is from |
||||
// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. |
||||
// By restricting to that range, we ensure that we can convert to |
||||
// and from RFC 3339 date strings. (See https://www.ietf.org/rfc/rfc3339.txt.) |
||||
// |
||||
// Example 1: compute Timestamp from POSIX `time()`. |
||||
// |
||||
// Timestamp timestamp; |
||||
// timestamp.set_seconds(time(NULL)); |
||||
// timestamp.set_nanos(0); |
||||
// |
||||
// Example 2: compute Timestamp from POSIX `gettimeofday()`. |
||||
// |
||||
// struct timeval tv; |
||||
// gettimeofday(&tv, NULL); |
||||
// |
||||
// Timestamp timestamp; |
||||
// timestamp.set_seconds(tv.tv_sec); |
||||
// timestamp.set_nanos(tv.tv_usec * 1000); |
||||
// |
||||
// Example 3: compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. |
||||
// |
||||
// FILETIME ft; |
||||
// GetSystemTimeAsFileTime(&ft); |
||||
// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; |
||||
// |
||||
// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z |
||||
// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. |
||||
// Timestamp timestamp; |
||||
// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); |
||||
// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); |
||||
// |
||||
// Example 4: compute Timestamp from Java `System.currentTimeMillis()`. |
||||
// |
||||
// long millis = System.currentTimeMillis(); |
||||
// |
||||
// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) |
||||
// .setNanos((int) ((millis % 1000) * 1000000)).build(); |
||||
// |
||||
// Example 5: compute Timestamp from Python `datetime.datetime`. |
||||
// |
||||
// now = datetime.datetime.utcnow() |
||||
// seconds = int(time.mktime(now.timetuple())) |
||||
// nanos = now.microsecond * 1000 |
||||
// timestamp = Timestamp(seconds=seconds, nanos=nanos) |
||||
// |
||||
message Timestamp { |
||||
// Represents seconds of UTC time since Unix epoch |
||||
// 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to |
||||
// 9999-12-31T23:59:59Z inclusive. |
||||
int64 seconds = 1; |
||||
|
||||
// Non-negative fractions of a second at nanosecond resolution. Negative |
||||
// second values with fractions must still have non-negative nanos values |
||||
// that count forward in time. Must be from 0 to 999,999,999 |
||||
// inclusive. |
||||
int32 nanos = 2; |
||||
} |
@ -0,0 +1,97 @@ |
||||
// 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. |
||||
|
||||
// Wrappers for primitive (non-message) types. These types are useful |
||||
// for embedding primitives in the `google.protobuf.Any` type and for places |
||||
// where we need to distinguish between the absence of a primitive |
||||
// typed field and its default value. |
||||
|
||||
syntax = "proto3"; |
||||
|
||||
package google.protobuf; |
||||
|
||||
option java_multiple_files = true; |
||||
option java_outer_classname = "WrappersProto"; |
||||
option java_package = "com.google.protobuf"; |
||||
|
||||
|
||||
// Wrapper message for double. |
||||
message DoubleValue { |
||||
// The double value. |
||||
double value = 1; |
||||
} |
||||
|
||||
// Wrapper message for float. |
||||
message FloatValue { |
||||
// The float value. |
||||
float value = 1; |
||||
} |
||||
|
||||
// Wrapper message for int64. |
||||
message Int64Value { |
||||
// The int64 value. |
||||
int64 value = 1; |
||||
} |
||||
|
||||
// Wrapper message for uint64. |
||||
message UInt64Value { |
||||
// The uint64 value. |
||||
uint64 value = 1; |
||||
} |
||||
|
||||
// Wrapper message for int32. |
||||
message Int32Value { |
||||
// The int32 value. |
||||
int32 value = 1; |
||||
} |
||||
|
||||
// Wrapper message for uint32. |
||||
message UInt32Value { |
||||
// The uint32 value. |
||||
uint32 value = 1; |
||||
} |
||||
|
||||
// Wrapper message for bool. |
||||
message BoolValue { |
||||
// The bool value. |
||||
bool value = 1; |
||||
} |
||||
|
||||
// Wrapper message for string. |
||||
message StringValue { |
||||
// The string value. |
||||
string value = 1; |
||||
} |
||||
|
||||
// Wrapper message for bytes. |
||||
message BytesValue { |
||||
// The bytes value. |
||||
bytes value = 1; |
||||
} |
Loading…
Reference in new issue