github.com/s7techlab/cckit@v0.10.5/third_party/google/protobuf/any.proto (about)

     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  
    31  syntax = "proto3";
    32  
    33  package google.protobuf;
    34  
    35  option csharp_namespace = "Google.Protobuf.WellKnownTypes";
    36  option go_package = "google.golang.org/protobuf/types/known/anypb";
    37  option java_package = "com.google.protobuf";
    38  option java_outer_classname = "AnyProto";
    39  option java_multiple_files = true;
    40  option objc_class_prefix = "GPB";
    41  
    42  // `Any` contains an arbitrary serialized protocol buffer message along with a
    43  // URL that describes the type of the serialized message.
    44  //
    45  // Protobuf library provides support to pack/unpack Any values in the form
    46  // of utility functions or additional generated methods of the Any type.
    47  //
    48  // Example 1: Pack and unpack a message in C++.
    49  //
    50  //     Foo foo = ...;
    51  //     Any any;
    52  //     any.PackFrom(foo);
    53  //     ...
    54  //     if (any.UnpackTo(&foo)) {
    55  //       ...
    56  //     }
    57  //
    58  // Example 2: Pack and unpack a message in Java.
    59  //
    60  //     Foo foo = ...;
    61  //     Any any = Any.pack(foo);
    62  //     ...
    63  //     if (any.is(Foo.class)) {
    64  //       foo = any.unpack(Foo.class);
    65  //     }
    66  //
    67  // Example 3: Pack and unpack a message in Python.
    68  //
    69  //     foo = Foo(...)
    70  //     any = Any()
    71  //     any.Pack(foo)
    72  //     ...
    73  //     if any.Is(Foo.DESCRIPTOR):
    74  //       any.Unpack(foo)
    75  //       ...
    76  //
    77  // Example 4: Pack and unpack a message in Go
    78  //
    79  //      foo := &pb.Foo{...}
    80  //      any, err := anypb.New(foo)
    81  //      if err != nil {
    82  //        ...
    83  //      }
    84  //      ...
    85  //      foo := &pb.Foo{}
    86  //      if err := any.UnmarshalTo(foo); err != nil {
    87  //        ...
    88  //      }
    89  //
    90  // The pack methods provided by protobuf library will by default use
    91  // 'type.googleapis.com/full.type.name' as the type URL and the unpack
    92  // methods only use the fully qualified type name after the last '/'
    93  // in the type URL, for example "foo.bar.com/x/y.z" will yield type
    94  // name "y.z".
    95  //
    96  //
    97  // JSON
    98  //
    99  // The JSON representation of an `Any` value uses the regular
   100  // representation of the deserialized, embedded message, with an
   101  // additional field `@type` which contains the type URL. Example:
   102  //
   103  //     package google.profile;
   104  //     message Person {
   105  //       string first_name = 1;
   106  //       string last_name = 2;
   107  //     }
   108  //
   109  //     {
   110  //       "@type": "type.googleapis.com/google.profile.Person",
   111  //       "firstName": <string>,
   112  //       "lastName": <string>
   113  //     }
   114  //
   115  // If the embedded message type is well-known and has a custom JSON
   116  // representation, that representation will be embedded adding a field
   117  // `value` which holds the custom JSON in addition to the `@type`
   118  // field. Example (for message [google.protobuf.Duration][]):
   119  //
   120  //     {
   121  //       "@type": "type.googleapis.com/google.protobuf.Duration",
   122  //       "value": "1.212s"
   123  //     }
   124  //
   125  message Any {
   126      // A URL/resource name that uniquely identifies the type of the serialized
   127      // protocol buffer message. This string must contain at least
   128      // one "/" character. The last segment of the URL's path must represent
   129      // the fully qualified name of the type (as in
   130      // `path/google.protobuf.Duration`). The name should be in a canonical form
   131      // (e.g., leading "." is not accepted).
   132      //
   133      // In practice, teams usually precompile into the binary all types that they
   134      // expect it to use in the context of Any. However, for URLs which use the
   135      // scheme `http`, `https`, or no scheme, one can optionally set up a type
   136      // server that maps type URLs to message definitions as follows:
   137      //
   138      // * If no scheme is provided, `https` is assumed.
   139      // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
   140      //   value in binary format, or produce an error.
   141      // * Applications are allowed to cache lookup results based on the
   142      //   URL, or have them precompiled into a binary to avoid any
   143      //   lookup. Therefore, binary compatibility needs to be preserved
   144      //   on changes to types. (Use versioned type names to manage
   145      //   breaking changes.)
   146      //
   147      // Note: this functionality is not currently available in the official
   148      // protobuf release, and it is not used for type URLs beginning with
   149      // type.googleapis.com.
   150      //
   151      // Schemes other than `http`, `https` (or the empty scheme) might be
   152      // used with implementation specific semantics.
   153      //
   154      string type_url = 1;
   155  
   156      // Must be a valid serialized protocol buffer of the above specified type.
   157      bytes value = 2;
   158  }