vendor: updated vendor dir for grpc v2 api
This commit is contained in:
parent
a4edf38566
commit
1533dd1d51
24
vendor/github.com/cockroachdb/cmux/.gitignore
generated
vendored
Normal file
24
vendor/github.com/cockroachdb/cmux/.gitignore
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Folders
|
||||||
|
_obj
|
||||||
|
_test
|
||||||
|
|
||||||
|
# Architecture specific extensions/prefixes
|
||||||
|
*.[568vq]
|
||||||
|
[568vq].out
|
||||||
|
|
||||||
|
*.cgo1.go
|
||||||
|
*.cgo2.c
|
||||||
|
_cgo_defun.c
|
||||||
|
_cgo_gotypes.go
|
||||||
|
_cgo_export.*
|
||||||
|
|
||||||
|
_testmain.go
|
||||||
|
|
||||||
|
*.exe
|
||||||
|
*.test
|
||||||
|
*.prof
|
29
vendor/github.com/cockroachdb/cmux/.travis.yml
generated
vendored
Normal file
29
vendor/github.com/cockroachdb/cmux/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
language: go
|
||||||
|
|
||||||
|
go:
|
||||||
|
- 1.5
|
||||||
|
- 1.6
|
||||||
|
- 1.7
|
||||||
|
- tip
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- go: tip
|
||||||
|
|
||||||
|
gobuild_args: -race
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go get -u github.com/kisielk/errcheck; fi
|
||||||
|
- if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go get -u github.com/golang/lint/golint; fi
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- '! gofmt -s -l . | read'
|
||||||
|
- echo $TRAVIS_GO_VERSION
|
||||||
|
- if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then golint ./...; fi
|
||||||
|
- if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then errcheck ./...; fi
|
||||||
|
- if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go tool vet .; fi
|
||||||
|
- if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go tool vet --shadow .; fi
|
||||||
|
|
||||||
|
script:
|
||||||
|
- go test -bench . -v ./...
|
||||||
|
- go test -race -bench . -v ./...
|
11
vendor/github.com/cockroachdb/cmux/CONTRIBUTORS
generated
vendored
Normal file
11
vendor/github.com/cockroachdb/cmux/CONTRIBUTORS
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# The list of people who have contributed code to the cmux repository.
|
||||||
|
#
|
||||||
|
# Auto-generated with:
|
||||||
|
# git log --oneline --pretty=format:'%an <%aE>' | sort -u
|
||||||
|
#
|
||||||
|
Dmitri Shuralyov <shurcooL@gmail.com>
|
||||||
|
Ethan Mosbaugh <emosbaugh@gmail.com>
|
||||||
|
Soheil Hassas Yeganeh <soheil.h.y@gmail.com>
|
||||||
|
Soheil Hassas Yeganeh <soheil@cs.toronto.edu>
|
||||||
|
Tamir Duberstein <tamir@cockroachlabs.com>
|
||||||
|
Tamir Duberstein <tamird@gmail.com>
|
202
vendor/github.com/cockroachdb/cmux/LICENSE
generated
vendored
Normal file
202
vendor/github.com/cockroachdb/cmux/LICENSE
generated
vendored
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
72
vendor/github.com/cockroachdb/cmux/README.md
generated
vendored
Normal file
72
vendor/github.com/cockroachdb/cmux/README.md
generated
vendored
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# cmux: Connection Mux [![Build Status](https://travis-ci.org/cockroachdb/cmux.svg?branch=master)](https://travis-ci.org/cockroachdb/cmux) [![GoDoc](https://godoc.org/github.com/cockroachdb/cmux?status.svg)](https://godoc.org/github.com/cockroachdb/cmux)
|
||||||
|
|
||||||
|
cmux is a generic Go library to multiplex connections based on their payload.
|
||||||
|
Using cmux, you can serve gRPC, SSH, HTTPS, HTTP, Go RPC, and pretty much any
|
||||||
|
other protocol on the same TCP listener.
|
||||||
|
|
||||||
|
## How-To
|
||||||
|
Simply create your main listener, create a cmux for that listener,
|
||||||
|
and then match connections:
|
||||||
|
```go
|
||||||
|
// Create the main listener.
|
||||||
|
l, err := net.Listen("tcp", ":23456")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a cmux.
|
||||||
|
m := cmux.New(l)
|
||||||
|
|
||||||
|
// Match connections in order:
|
||||||
|
// First grpc, then HTTP, and otherwise Go RPC/TCP.
|
||||||
|
grpcL := m.Match(cmux.HTTP2HeaderField("content-type", "application/grpc"))
|
||||||
|
httpL := m.Match(cmux.HTTP1Fast())
|
||||||
|
trpcL := m.Match(cmux.Any()) // Any means anything that is not yet matched.
|
||||||
|
|
||||||
|
// Create your protocol servers.
|
||||||
|
grpcS := grpc.NewServer()
|
||||||
|
grpchello.RegisterGreeterServer(grpcs, &server{})
|
||||||
|
|
||||||
|
httpS := &http.Server{
|
||||||
|
Handler: &helloHTTP1Handler{},
|
||||||
|
}
|
||||||
|
|
||||||
|
trpcS := rpc.NewServer()
|
||||||
|
s.Register(&ExampleRPCRcvr{})
|
||||||
|
|
||||||
|
// Use the muxed listeners for your servers.
|
||||||
|
go grpcS.Serve(grpcL)
|
||||||
|
go httpS.Serve(httpL)
|
||||||
|
go trpcS.Accept(trpcL)
|
||||||
|
|
||||||
|
// Start serving!
|
||||||
|
m.Serve()
|
||||||
|
```
|
||||||
|
|
||||||
|
There are [more examples on GoDoc](https://godoc.org/github.com/cockroachdb/cmux#pkg-examples).
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
Since we are only matching the very first bytes of a connection, the
|
||||||
|
performance overhead on long-lived connections (i.e., RPCs and pipelined HTTP
|
||||||
|
streams) is negligible.
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
* *TLS*: `net/http` uses a [type assertion](https://github.com/golang/go/issues/14221)
|
||||||
|
to identify TLS connections; since cmux's lookahead-implementing connection
|
||||||
|
wraps the underlying TLS connection, this type assertion fails. This means you
|
||||||
|
can serve HTTPS using cmux but `http.Request.TLS` will not be set in your
|
||||||
|
handlers. If you are able to wrap TLS around cmux, you can work around this
|
||||||
|
limitation. See https://github.com/cockroachdb/cockroach/commit/83caba2 for an
|
||||||
|
example of this approach.
|
||||||
|
|
||||||
|
* *Different Protocols on The Same Connection*: `cmux` matches the connection
|
||||||
|
when it's accepted. For example, one connection can be either gRPC or REST, but
|
||||||
|
not both. That is, we assume that a client connection is either used for gRPC
|
||||||
|
or REST.
|
||||||
|
|
||||||
|
# Copyright and License
|
||||||
|
Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
|
||||||
|
See [CONTRIBUTORS](https://github.com/cockroachdb/cmux/blob/master/CONTRIBUTORS)
|
||||||
|
for the CMux Authors. Code is released under
|
||||||
|
[the Apache 2 license](https://github.com/cockroachdb/cmux/blob/master/LICENSE).
|
137
vendor/github.com/cockroachdb/cmux/bench_test.go
generated
vendored
Normal file
137
vendor/github.com/cockroachdb/cmux/bench_test.go
generated
vendored
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"golang.org/x/net/http2"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
benchHTTP1Payload = make([]byte, 4096)
|
||||||
|
benchHTTP2Payload = make([]byte, 4096)
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
copy(benchHTTP1Payload, []byte("GET http://www.w3.org/ HTTP/1.1"))
|
||||||
|
copy(benchHTTP2Payload, http2.ClientPreface)
|
||||||
|
}
|
||||||
|
|
||||||
|
type mockConn struct {
|
||||||
|
net.Conn
|
||||||
|
r io.Reader
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *mockConn) Read(b []byte) (n int, err error) {
|
||||||
|
return c.r.Read(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func discard(l net.Listener) {
|
||||||
|
for {
|
||||||
|
if _, err := l.Accept(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkCMuxConnHTTP1(b *testing.B) {
|
||||||
|
m := New(nil).(*cMux)
|
||||||
|
l := m.Match(HTTP1Fast())
|
||||||
|
|
||||||
|
go discard(l)
|
||||||
|
|
||||||
|
donec := make(chan struct{})
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(b.N)
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.RunParallel(func(pb *testing.PB) {
|
||||||
|
for pb.Next() {
|
||||||
|
wg.Add(1)
|
||||||
|
m.serve(&mockConn{
|
||||||
|
r: bytes.NewReader(benchHTTP1Payload),
|
||||||
|
}, donec, &wg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkCMuxConnHTTP2(b *testing.B) {
|
||||||
|
m := New(nil).(*cMux)
|
||||||
|
l := m.Match(HTTP2())
|
||||||
|
go discard(l)
|
||||||
|
|
||||||
|
donec := make(chan struct{})
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(b.N)
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.RunParallel(func(pb *testing.PB) {
|
||||||
|
for pb.Next() {
|
||||||
|
wg.Add(1)
|
||||||
|
m.serve(&mockConn{
|
||||||
|
r: bytes.NewReader(benchHTTP2Payload),
|
||||||
|
}, donec, &wg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkCMuxConnHTTP1n2(b *testing.B) {
|
||||||
|
m := New(nil).(*cMux)
|
||||||
|
l1 := m.Match(HTTP1Fast())
|
||||||
|
l2 := m.Match(HTTP2())
|
||||||
|
|
||||||
|
go discard(l1)
|
||||||
|
go discard(l2)
|
||||||
|
|
||||||
|
donec := make(chan struct{})
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.RunParallel(func(pb *testing.PB) {
|
||||||
|
for pb.Next() {
|
||||||
|
wg.Add(1)
|
||||||
|
m.serve(&mockConn{
|
||||||
|
r: bytes.NewReader(benchHTTP2Payload),
|
||||||
|
}, donec, &wg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkCMuxConnHTTP2n1(b *testing.B) {
|
||||||
|
m := New(nil).(*cMux)
|
||||||
|
l2 := m.Match(HTTP2())
|
||||||
|
l1 := m.Match(HTTP1Fast())
|
||||||
|
|
||||||
|
go discard(l1)
|
||||||
|
go discard(l2)
|
||||||
|
|
||||||
|
donec := make(chan struct{})
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
b.RunParallel(func(pb *testing.PB) {
|
||||||
|
for pb.Next() {
|
||||||
|
wg.Add(1)
|
||||||
|
m.serve(&mockConn{
|
||||||
|
r: bytes.NewReader(benchHTTP1Payload),
|
||||||
|
}, donec, &wg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
49
vendor/github.com/cockroachdb/cmux/buffer.go
generated
vendored
Normal file
49
vendor/github.com/cockroachdb/cmux/buffer.go
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
|
// bufferedReader is an optimized implementation of io.Reader that behaves like
|
||||||
|
// ```
|
||||||
|
// io.MultiReader(bytes.NewReader(buffer.Bytes()), io.TeeReader(source, buffer))
|
||||||
|
// ```
|
||||||
|
// without allocating.
|
||||||
|
type bufferedReader struct {
|
||||||
|
source io.Reader
|
||||||
|
buffer *bytes.Buffer
|
||||||
|
bufferRead int
|
||||||
|
bufferSize int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *bufferedReader) Read(p []byte) (int, error) {
|
||||||
|
// Functionality of bytes.Reader.
|
||||||
|
bn := copy(p, s.buffer.Bytes()[s.bufferRead:s.bufferSize])
|
||||||
|
s.bufferRead += bn
|
||||||
|
|
||||||
|
p = p[bn:]
|
||||||
|
|
||||||
|
// Funtionality of io.TeeReader.
|
||||||
|
sn, sErr := s.source.Read(p)
|
||||||
|
if sn > 0 {
|
||||||
|
if wn, wErr := s.buffer.Write(p[:sn]); wErr != nil {
|
||||||
|
return bn + wn, wErr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bn + sn, sErr
|
||||||
|
}
|
224
vendor/github.com/cockroachdb/cmux/cmux.go
generated
vendored
Normal file
224
vendor/github.com/cockroachdb/cmux/cmux.go
generated
vendored
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Matcher matches a connection based on its content.
|
||||||
|
type Matcher func(io.Reader) bool
|
||||||
|
|
||||||
|
// ErrorHandler handles an error and returns whether
|
||||||
|
// the mux should continue serving the listener.
|
||||||
|
type ErrorHandler func(error) bool
|
||||||
|
|
||||||
|
var _ net.Error = ErrNotMatched{}
|
||||||
|
|
||||||
|
// ErrNotMatched is returned whenever a connection is not matched by any of
|
||||||
|
// the matchers registered in the multiplexer.
|
||||||
|
type ErrNotMatched struct {
|
||||||
|
c net.Conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e ErrNotMatched) Error() string {
|
||||||
|
return fmt.Sprintf("mux: connection %v not matched by an matcher",
|
||||||
|
e.c.RemoteAddr())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Temporary implements the net.Error interface.
|
||||||
|
func (e ErrNotMatched) Temporary() bool { return true }
|
||||||
|
|
||||||
|
// Timeout implements the net.Error interface.
|
||||||
|
func (e ErrNotMatched) Timeout() bool { return false }
|
||||||
|
|
||||||
|
type errListenerClosed string
|
||||||
|
|
||||||
|
func (e errListenerClosed) Error() string { return string(e) }
|
||||||
|
func (e errListenerClosed) Temporary() bool { return false }
|
||||||
|
func (e errListenerClosed) Timeout() bool { return false }
|
||||||
|
|
||||||
|
// ErrListenerClosed is returned from muxListener.Accept when the underlying
|
||||||
|
// listener is closed.
|
||||||
|
var ErrListenerClosed = errListenerClosed("mux: listener closed")
|
||||||
|
|
||||||
|
// New instantiates a new connection multiplexer.
|
||||||
|
func New(l net.Listener) CMux {
|
||||||
|
return &cMux{
|
||||||
|
root: l,
|
||||||
|
bufLen: 1024,
|
||||||
|
errh: func(_ error) bool { return true },
|
||||||
|
donec: make(chan struct{}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CMux is a multiplexer for network connections.
|
||||||
|
type CMux interface {
|
||||||
|
// Match returns a net.Listener that sees (i.e., accepts) only
|
||||||
|
// the connections matched by at least one of the matcher.
|
||||||
|
//
|
||||||
|
// The order used to call Match determines the priority of matchers.
|
||||||
|
Match(...Matcher) net.Listener
|
||||||
|
// Serve starts multiplexing the listener. Serve blocks and perhaps
|
||||||
|
// should be invoked concurrently within a go routine.
|
||||||
|
Serve() error
|
||||||
|
// HandleError registers an error handler that handles listener errors.
|
||||||
|
HandleError(ErrorHandler)
|
||||||
|
}
|
||||||
|
|
||||||
|
type matchersListener struct {
|
||||||
|
ss []Matcher
|
||||||
|
l muxListener
|
||||||
|
}
|
||||||
|
|
||||||
|
type cMux struct {
|
||||||
|
root net.Listener
|
||||||
|
bufLen int
|
||||||
|
errh ErrorHandler
|
||||||
|
donec chan struct{}
|
||||||
|
sls []matchersListener
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *cMux) Match(matchers ...Matcher) net.Listener {
|
||||||
|
ml := muxListener{
|
||||||
|
Listener: m.root,
|
||||||
|
connc: make(chan net.Conn, m.bufLen),
|
||||||
|
}
|
||||||
|
m.sls = append(m.sls, matchersListener{ss: matchers, l: ml})
|
||||||
|
return ml
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *cMux) Serve() error {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
close(m.donec)
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
for _, sl := range m.sls {
|
||||||
|
close(sl.l.connc)
|
||||||
|
// Drain the connections enqueued for the listener.
|
||||||
|
for c := range sl.l.connc {
|
||||||
|
_ = c.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
for {
|
||||||
|
c, err := m.root.Accept()
|
||||||
|
if err != nil {
|
||||||
|
if !m.handleErr(err) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
wg.Add(1)
|
||||||
|
go m.serve(c, m.donec, &wg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *cMux) serve(c net.Conn, donec <-chan struct{}, wg *sync.WaitGroup) {
|
||||||
|
defer wg.Done()
|
||||||
|
|
||||||
|
muc := newMuxConn(c)
|
||||||
|
for _, sl := range m.sls {
|
||||||
|
for _, s := range sl.ss {
|
||||||
|
matched := s(muc.getSniffer())
|
||||||
|
if matched {
|
||||||
|
select {
|
||||||
|
case sl.l.connc <- muc:
|
||||||
|
case <-donec:
|
||||||
|
_ = c.Close()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = c.Close()
|
||||||
|
err := ErrNotMatched{c: c}
|
||||||
|
if !m.handleErr(err) {
|
||||||
|
_ = m.root.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *cMux) HandleError(h ErrorHandler) {
|
||||||
|
m.errh = h
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *cMux) handleErr(err error) bool {
|
||||||
|
if !m.errh(err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if ne, ok := err.(net.Error); ok {
|
||||||
|
return ne.Temporary()
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type muxListener struct {
|
||||||
|
net.Listener
|
||||||
|
connc chan net.Conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l muxListener) Accept() (net.Conn, error) {
|
||||||
|
c, ok := <-l.connc
|
||||||
|
if !ok {
|
||||||
|
return nil, ErrListenerClosed
|
||||||
|
}
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MuxConn wraps a net.Conn and provides transparent sniffing of connection data.
|
||||||
|
type MuxConn struct {
|
||||||
|
net.Conn
|
||||||
|
buf bytes.Buffer
|
||||||
|
sniffer bufferedReader
|
||||||
|
}
|
||||||
|
|
||||||
|
func newMuxConn(c net.Conn) *MuxConn {
|
||||||
|
return &MuxConn{
|
||||||
|
Conn: c,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// From the io.Reader documentation:
|
||||||
|
//
|
||||||
|
// When Read encounters an error or end-of-file condition after
|
||||||
|
// successfully reading n > 0 bytes, it returns the number of
|
||||||
|
// bytes read. It may return the (non-nil) error from the same call
|
||||||
|
// or return the error (and n == 0) from a subsequent call.
|
||||||
|
// An instance of this general case is that a Reader returning
|
||||||
|
// a non-zero number of bytes at the end of the input stream may
|
||||||
|
// return either err == EOF or err == nil. The next Read should
|
||||||
|
// return 0, EOF.
|
||||||
|
func (m *MuxConn) Read(p []byte) (int, error) {
|
||||||
|
if n, err := m.buf.Read(p); err != io.EOF {
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
return m.Conn.Read(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MuxConn) getSniffer() io.Reader {
|
||||||
|
m.sniffer = bufferedReader{source: m.Conn, buffer: &m.buf, bufferSize: m.buf.Len()}
|
||||||
|
return &m.sniffer
|
||||||
|
}
|
485
vendor/github.com/cockroachdb/cmux/cmux_test.go
generated
vendored
Normal file
485
vendor/github.com/cockroachdb/cmux/cmux_test.go
generated
vendored
Normal file
@ -0,0 +1,485 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"net/rpc"
|
||||||
|
"runtime"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"sync/atomic"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/net/http2"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
testHTTP1Resp = "http1"
|
||||||
|
rpcVal = 1234
|
||||||
|
)
|
||||||
|
|
||||||
|
func safeServe(errCh chan<- error, muxl CMux) {
|
||||||
|
if err := muxl.Serve(); !strings.Contains(err.Error(), "use of closed network connection") {
|
||||||
|
errCh <- err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func safeDial(t *testing.T, addr net.Addr) (*rpc.Client, func()) {
|
||||||
|
c, err := rpc.Dial(addr.Network(), addr.String())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
return c, func() {
|
||||||
|
if err := c.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type chanListener struct {
|
||||||
|
net.Listener
|
||||||
|
connCh chan net.Conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func newChanListener() *chanListener {
|
||||||
|
return &chanListener{connCh: make(chan net.Conn, 1)}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *chanListener) Accept() (net.Conn, error) {
|
||||||
|
if c, ok := <-l.connCh; ok {
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
return nil, errors.New("use of closed network connection")
|
||||||
|
}
|
||||||
|
|
||||||
|
func testListener(t *testing.T) (net.Listener, func()) {
|
||||||
|
l, err := net.Listen("tcp", ":0")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
return l, func() {
|
||||||
|
if err := l.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type testHTTP1Handler struct{}
|
||||||
|
|
||||||
|
func (h *testHTTP1Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
fmt.Fprintf(w, testHTTP1Resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func runTestHTTPServer(errCh chan<- error, l net.Listener) {
|
||||||
|
var mu sync.Mutex
|
||||||
|
conns := make(map[net.Conn]struct{})
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
mu.Lock()
|
||||||
|
for c := range conns {
|
||||||
|
if err := c.Close(); err != nil {
|
||||||
|
errCh <- err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mu.Unlock()
|
||||||
|
}()
|
||||||
|
|
||||||
|
s := &http.Server{
|
||||||
|
Handler: &testHTTP1Handler{},
|
||||||
|
ConnState: func(c net.Conn, state http.ConnState) {
|
||||||
|
mu.Lock()
|
||||||
|
switch state {
|
||||||
|
case http.StateNew:
|
||||||
|
conns[c] = struct{}{}
|
||||||
|
case http.StateClosed:
|
||||||
|
delete(conns, c)
|
||||||
|
}
|
||||||
|
mu.Unlock()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if err := s.Serve(l); err != ErrListenerClosed {
|
||||||
|
errCh <- err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func runTestHTTP1Client(t *testing.T, addr net.Addr) {
|
||||||
|
if r, err := http.Get("http://" + addr.String()); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
} else {
|
||||||
|
defer func() {
|
||||||
|
if err := r.Body.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if b, err := ioutil.ReadAll(r.Body); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
} else {
|
||||||
|
if string(b) != testHTTP1Resp {
|
||||||
|
t.Fatalf("invalid response: want=%s got=%s", testHTTP1Resp, b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type TestRPCRcvr struct{}
|
||||||
|
|
||||||
|
func (r TestRPCRcvr) Test(i int, j *int) error {
|
||||||
|
*j = i
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func runTestRPCServer(errCh chan<- error, l net.Listener) {
|
||||||
|
s := rpc.NewServer()
|
||||||
|
if err := s.Register(TestRPCRcvr{}); err != nil {
|
||||||
|
errCh <- err
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
c, err := l.Accept()
|
||||||
|
if err != nil {
|
||||||
|
if err != ErrListenerClosed {
|
||||||
|
errCh <- err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go s.ServeConn(c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func runTestRPCClient(t *testing.T, addr net.Addr) {
|
||||||
|
c, cleanup := safeDial(t, addr)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
var num int
|
||||||
|
if err := c.Call("TestRPCRcvr.Test", rpcVal, &num); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if num != rpcVal {
|
||||||
|
t.Errorf("wrong rpc response: want=%d got=%v", rpcVal, num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRead(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
errCh := make(chan error)
|
||||||
|
defer func() {
|
||||||
|
select {
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatal(err)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
const payload = "hello world\r\n"
|
||||||
|
const mult = 2
|
||||||
|
|
||||||
|
writer, reader := net.Pipe()
|
||||||
|
go func() {
|
||||||
|
if _, err := io.WriteString(writer, strings.Repeat(payload, mult)); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err := writer.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
l := newChanListener()
|
||||||
|
defer close(l.connCh)
|
||||||
|
l.connCh <- reader
|
||||||
|
muxl := New(l)
|
||||||
|
// Register a bogus matcher to force buffering exactly the right amount.
|
||||||
|
// Before this fix, this would trigger a bug where `Read` would incorrectly
|
||||||
|
// report `io.EOF` when only the buffer had been consumed.
|
||||||
|
muxl.Match(func(r io.Reader) bool {
|
||||||
|
var b [len(payload)]byte
|
||||||
|
_, _ = r.Read(b[:])
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
anyl := muxl.Match(Any())
|
||||||
|
go safeServe(errCh, muxl)
|
||||||
|
muxedConn, err := anyl.Accept()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
for i := 0; i < mult; i++ {
|
||||||
|
var b [len(payload)]byte
|
||||||
|
if n, err := muxedConn.Read(b[:]); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
} else if e := len(b); n != e {
|
||||||
|
t.Errorf("expected to read %d bytes, but read %d bytes", e, n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var b [1]byte
|
||||||
|
if _, err := muxedConn.Read(b[:]); err != io.EOF {
|
||||||
|
t.Errorf("unexpected error %v, expected %v", err, io.EOF)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAny(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
errCh := make(chan error)
|
||||||
|
defer func() {
|
||||||
|
select {
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatal(err)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
l, cleanup := testListener(t)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
muxl := New(l)
|
||||||
|
httpl := muxl.Match(Any())
|
||||||
|
|
||||||
|
go runTestHTTPServer(errCh, httpl)
|
||||||
|
go safeServe(errCh, muxl)
|
||||||
|
|
||||||
|
runTestHTTP1Client(t, l.Addr())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHTTP2(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
errCh := make(chan error)
|
||||||
|
defer func() {
|
||||||
|
select {
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatal(err)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
writer, reader := net.Pipe()
|
||||||
|
go func() {
|
||||||
|
if _, err := io.WriteString(writer, http2.ClientPreface); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err := writer.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
l := newChanListener()
|
||||||
|
l.connCh <- reader
|
||||||
|
muxl := New(l)
|
||||||
|
// Register a bogus matcher that only reads one byte.
|
||||||
|
muxl.Match(func(r io.Reader) bool {
|
||||||
|
var b [1]byte
|
||||||
|
_, _ = r.Read(b[:])
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
h2l := muxl.Match(HTTP2())
|
||||||
|
go safeServe(errCh, muxl)
|
||||||
|
muxedConn, err := h2l.Accept()
|
||||||
|
close(l.connCh)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
var b [len(http2.ClientPreface)]byte
|
||||||
|
if _, err := muxedConn.Read(b[:]); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if string(b[:]) != http2.ClientPreface {
|
||||||
|
t.Errorf("got unexpected read %s, expected %s", b, http2.ClientPreface)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
var b [1]byte
|
||||||
|
if _, err := muxedConn.Read(b[:]); err != io.EOF {
|
||||||
|
t.Errorf("unexpected error %v, expected %v", err, io.EOF)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHTTPGoRPC(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
errCh := make(chan error)
|
||||||
|
defer func() {
|
||||||
|
select {
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatal(err)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
l, cleanup := testListener(t)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
muxl := New(l)
|
||||||
|
httpl := muxl.Match(HTTP2(), HTTP1Fast())
|
||||||
|
rpcl := muxl.Match(Any())
|
||||||
|
|
||||||
|
go runTestHTTPServer(errCh, httpl)
|
||||||
|
go runTestRPCServer(errCh, rpcl)
|
||||||
|
go safeServe(errCh, muxl)
|
||||||
|
|
||||||
|
runTestHTTP1Client(t, l.Addr())
|
||||||
|
runTestRPCClient(t, l.Addr())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestErrorHandler(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
errCh := make(chan error)
|
||||||
|
defer func() {
|
||||||
|
select {
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatal(err)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
l, cleanup := testListener(t)
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
muxl := New(l)
|
||||||
|
httpl := muxl.Match(HTTP2(), HTTP1Fast())
|
||||||
|
|
||||||
|
go runTestHTTPServer(errCh, httpl)
|
||||||
|
go safeServe(errCh, muxl)
|
||||||
|
|
||||||
|
var errCount uint32
|
||||||
|
muxl.HandleError(func(err error) bool {
|
||||||
|
if atomic.AddUint32(&errCount, 1) == 1 {
|
||||||
|
if _, ok := err.(ErrNotMatched); !ok {
|
||||||
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
c, cleanup := safeDial(t, l.Addr())
|
||||||
|
defer cleanup()
|
||||||
|
|
||||||
|
var num int
|
||||||
|
for atomic.LoadUint32(&errCount) == 0 {
|
||||||
|
if err := c.Call("TestRPCRcvr.Test", rpcVal, &num); err == nil {
|
||||||
|
// The connection is simply closed.
|
||||||
|
t.Errorf("unexpected rpc success after %d errors", atomic.LoadUint32(&errCount))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestClose(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
errCh := make(chan error)
|
||||||
|
defer func() {
|
||||||
|
select {
|
||||||
|
case err := <-errCh:
|
||||||
|
t.Fatal(err)
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
l := newChanListener()
|
||||||
|
|
||||||
|
c1, c2 := net.Pipe()
|
||||||
|
|
||||||
|
muxl := New(l)
|
||||||
|
anyl := muxl.Match(Any())
|
||||||
|
|
||||||
|
go safeServe(errCh, muxl)
|
||||||
|
|
||||||
|
l.connCh <- c1
|
||||||
|
|
||||||
|
// First connection goes through.
|
||||||
|
if _, err := anyl.Accept(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Second connection is sent
|
||||||
|
l.connCh <- c2
|
||||||
|
|
||||||
|
// Listener is closed.
|
||||||
|
close(l.connCh)
|
||||||
|
|
||||||
|
// Second connection either goes through or it is closed.
|
||||||
|
if _, err := anyl.Accept(); err != nil {
|
||||||
|
if err != ErrListenerClosed {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if _, err := c2.Read([]byte{}); err != io.ErrClosedPipe {
|
||||||
|
t.Fatalf("connection is not closed and is leaked: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cribbed from google.golang.org/grpc/test/end2end_test.go.
|
||||||
|
|
||||||
|
// interestingGoroutines returns all goroutines we care about for the purpose
|
||||||
|
// of leak checking. It excludes testing or runtime ones.
|
||||||
|
func interestingGoroutines() (gs []string) {
|
||||||
|
buf := make([]byte, 2<<20)
|
||||||
|
buf = buf[:runtime.Stack(buf, true)]
|
||||||
|
for _, g := range strings.Split(string(buf), "\n\n") {
|
||||||
|
sl := strings.SplitN(g, "\n", 2)
|
||||||
|
if len(sl) != 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
stack := strings.TrimSpace(sl[1])
|
||||||
|
if strings.HasPrefix(stack, "testing.RunTests") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if stack == "" ||
|
||||||
|
strings.Contains(stack, "testing.Main(") ||
|
||||||
|
strings.Contains(stack, "testing.tRunner(") ||
|
||||||
|
strings.Contains(stack, "runtime.goexit") ||
|
||||||
|
strings.Contains(stack, "created by runtime.gc") ||
|
||||||
|
strings.Contains(stack, "interestingGoroutines") ||
|
||||||
|
strings.Contains(stack, "runtime.MHeap_Scavenger") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
gs = append(gs, g)
|
||||||
|
}
|
||||||
|
sort.Strings(gs)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// leakCheck snapshots the currently-running goroutines and returns a
|
||||||
|
// function to be run at the end of tests to see whether any
|
||||||
|
// goroutines leaked.
|
||||||
|
func leakCheck(t testing.TB) func() {
|
||||||
|
orig := map[string]bool{}
|
||||||
|
for _, g := range interestingGoroutines() {
|
||||||
|
orig[g] = true
|
||||||
|
}
|
||||||
|
return func() {
|
||||||
|
// Loop, waiting for goroutines to shut down.
|
||||||
|
// Wait up to 5 seconds, but finish as quickly as possible.
|
||||||
|
deadline := time.Now().Add(5 * time.Second)
|
||||||
|
for {
|
||||||
|
var leaked []string
|
||||||
|
for _, g := range interestingGoroutines() {
|
||||||
|
if !orig[g] {
|
||||||
|
leaked = append(leaked, g)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(leaked) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if time.Now().Before(deadline) {
|
||||||
|
time.Sleep(50 * time.Millisecond)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, g := range leaked {
|
||||||
|
t.Errorf("Leaked goroutine: %v", g)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
vendor/github.com/cockroachdb/cmux/doc.go
generated
vendored
Normal file
18
vendor/github.com/cockroachdb/cmux/doc.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
// Package cmux is a library to multiplex network connections based on
|
||||||
|
// their payload. Using cmux, you can serve different protocols from the
|
||||||
|
// same listener.
|
||||||
|
package cmux
|
123
vendor/github.com/cockroachdb/cmux/example_recursive_test.go
generated
vendored
Normal file
123
vendor/github.com/cockroachdb/cmux/example_recursive_test.go
generated
vendored
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"crypto/tls"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"net/rpc"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/cockroachdb/cmux"
|
||||||
|
)
|
||||||
|
|
||||||
|
type recursiveHTTPHandler struct{}
|
||||||
|
|
||||||
|
func (h *recursiveHTTPHandler) ServeHTTP(w http.ResponseWriter,
|
||||||
|
r *http.Request) {
|
||||||
|
|
||||||
|
fmt.Fprintf(w, "example http response")
|
||||||
|
}
|
||||||
|
|
||||||
|
func recursiveServeHTTP(l net.Listener) {
|
||||||
|
s := &http.Server{
|
||||||
|
Handler: &recursiveHTTPHandler{},
|
||||||
|
}
|
||||||
|
if err := s.Serve(l); err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func tlsListener(l net.Listener) net.Listener {
|
||||||
|
// Load certificates.
|
||||||
|
certificate, err := tls.LoadX509KeyPair("cert.pem", "key.pem")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
config := &tls.Config{
|
||||||
|
Certificates: []tls.Certificate{certificate},
|
||||||
|
Rand: rand.Reader,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create TLS listener.
|
||||||
|
tlsl := tls.NewListener(l, config)
|
||||||
|
return tlsl
|
||||||
|
}
|
||||||
|
|
||||||
|
type RecursiveRPCRcvr struct{}
|
||||||
|
|
||||||
|
func (r *RecursiveRPCRcvr) Cube(i int, j *int) error {
|
||||||
|
*j = i * i
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func recursiveServeRPC(l net.Listener) {
|
||||||
|
s := rpc.NewServer()
|
||||||
|
if err := s.Register(&RecursiveRPCRcvr{}); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
conn, err := l.Accept()
|
||||||
|
if err != nil {
|
||||||
|
if err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go s.ServeConn(conn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is an example for serving HTTP, HTTPS, and GoRPC/TLS on the same port.
|
||||||
|
func Example_recursiveCmux() {
|
||||||
|
// Create the TCP listener.
|
||||||
|
l, err := net.Listen("tcp", "127.0.0.1:50051")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a mux.
|
||||||
|
tcpm := cmux.New(l)
|
||||||
|
|
||||||
|
// We first match on HTTP 1.1 methods.
|
||||||
|
httpl := tcpm.Match(cmux.HTTP1Fast())
|
||||||
|
|
||||||
|
// If not matched, we assume that its TLS.
|
||||||
|
tlsl := tcpm.Match(cmux.Any())
|
||||||
|
tlsl = tlsListener(tlsl)
|
||||||
|
|
||||||
|
// Now, we build another mux recursively to match HTTPS and GoRPC.
|
||||||
|
// You can use the same trick for SSH.
|
||||||
|
tlsm := cmux.New(tlsl)
|
||||||
|
httpsl := tlsm.Match(cmux.HTTP1Fast())
|
||||||
|
gorpcl := tlsm.Match(cmux.Any())
|
||||||
|
go recursiveServeHTTP(httpl)
|
||||||
|
go recursiveServeHTTP(httpsl)
|
||||||
|
go recursiveServeRPC(gorpcl)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
if err := tlsm.Serve(); err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if err := tcpm.Serve(); !strings.Contains(err.Error(), "use of closed network connection") {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
133
vendor/github.com/cockroachdb/cmux/example_test.go
generated
vendored
Normal file
133
vendor/github.com/cockroachdb/cmux/example_test.go
generated
vendored
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"net/rpc"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"golang.org/x/net/websocket"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/examples/helloworld/helloworld"
|
||||||
|
|
||||||
|
"github.com/cockroachdb/cmux"
|
||||||
|
)
|
||||||
|
|
||||||
|
type exampleHTTPHandler struct{}
|
||||||
|
|
||||||
|
func (h *exampleHTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
fmt.Fprintf(w, "example http response")
|
||||||
|
}
|
||||||
|
|
||||||
|
func serveHTTP(l net.Listener) {
|
||||||
|
s := &http.Server{
|
||||||
|
Handler: &exampleHTTPHandler{},
|
||||||
|
}
|
||||||
|
if err := s.Serve(l); err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func EchoServer(ws *websocket.Conn) {
|
||||||
|
if _, err := io.Copy(ws, ws); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func serveWS(l net.Listener) {
|
||||||
|
s := &http.Server{
|
||||||
|
Handler: websocket.Handler(EchoServer),
|
||||||
|
}
|
||||||
|
if err := s.Serve(l); err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type ExampleRPCRcvr struct{}
|
||||||
|
|
||||||
|
func (r *ExampleRPCRcvr) Cube(i int, j *int) error {
|
||||||
|
*j = i * i
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func serveRPC(l net.Listener) {
|
||||||
|
s := rpc.NewServer()
|
||||||
|
if err := s.Register(&ExampleRPCRcvr{}); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
conn, err := l.Accept()
|
||||||
|
if err != nil {
|
||||||
|
if err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go s.ServeConn(conn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type grpcServer struct{}
|
||||||
|
|
||||||
|
func (s *grpcServer) SayHello(ctx context.Context, in *helloworld.HelloRequest) (
|
||||||
|
*helloworld.HelloReply, error) {
|
||||||
|
|
||||||
|
return &helloworld.HelloReply{Message: "Hello " + in.Name + " from cmux"}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func serveGRPC(l net.Listener) {
|
||||||
|
grpcs := grpc.NewServer()
|
||||||
|
helloworld.RegisterGreeterServer(grpcs, &grpcServer{})
|
||||||
|
if err := grpcs.Serve(l); err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Example() {
|
||||||
|
l, err := net.Listen("tcp", "127.0.0.1:50051")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
m := cmux.New(l)
|
||||||
|
|
||||||
|
// We first match the connection against HTTP2 fields. If matched, the
|
||||||
|
// connection will be sent through the "grpcl" listener.
|
||||||
|
grpcl := m.Match(cmux.HTTP2HeaderField("content-type", "application/grpc"))
|
||||||
|
//Otherwise, we match it againts a websocket upgrade request.
|
||||||
|
wsl := m.Match(cmux.HTTP1HeaderField("Upgrade", "websocket"))
|
||||||
|
|
||||||
|
// Otherwise, we match it againts HTTP1 methods. If matched,
|
||||||
|
// it is sent through the "httpl" listener.
|
||||||
|
httpl := m.Match(cmux.HTTP1Fast())
|
||||||
|
// If not matched by HTTP, we assume it is an RPC connection.
|
||||||
|
rpcl := m.Match(cmux.Any())
|
||||||
|
|
||||||
|
// Then we used the muxed listeners.
|
||||||
|
go serveGRPC(grpcl)
|
||||||
|
go serveWS(wsl)
|
||||||
|
go serveHTTP(httpl)
|
||||||
|
go serveRPC(rpcl)
|
||||||
|
|
||||||
|
if err := m.Serve(); !strings.Contains(err.Error(), "use of closed network connection") {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
89
vendor/github.com/cockroachdb/cmux/example_tls_test.go
generated
vendored
Normal file
89
vendor/github.com/cockroachdb/cmux/example_tls_test.go
generated
vendored
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"crypto/tls"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/cockroachdb/cmux"
|
||||||
|
)
|
||||||
|
|
||||||
|
type anotherHTTPHandler struct{}
|
||||||
|
|
||||||
|
func (h *anotherHTTPHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
|
fmt.Fprintf(w, "example http response")
|
||||||
|
}
|
||||||
|
|
||||||
|
func serveHTTP1(l net.Listener) {
|
||||||
|
s := &http.Server{
|
||||||
|
Handler: &anotherHTTPHandler{},
|
||||||
|
}
|
||||||
|
if err := s.Serve(l); err != cmux.ErrListenerClosed {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func serveHTTPS(l net.Listener) {
|
||||||
|
// Load certificates.
|
||||||
|
certificate, err := tls.LoadX509KeyPair("cert.pem", "key.pem")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
config := &tls.Config{
|
||||||
|
Certificates: []tls.Certificate{certificate},
|
||||||
|
Rand: rand.Reader,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create TLS listener.
|
||||||
|
tlsl := tls.NewListener(l, config)
|
||||||
|
|
||||||
|
// Serve HTTP over TLS.
|
||||||
|
serveHTTP1(tlsl)
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is an example for serving HTTP and HTTPS on the same port.
|
||||||
|
func Example_bothHTTPAndHTTPS() {
|
||||||
|
// Create the TCP listener.
|
||||||
|
l, err := net.Listen("tcp", "127.0.0.1:50051")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a mux.
|
||||||
|
m := cmux.New(l)
|
||||||
|
|
||||||
|
// We first match on HTTP 1.1 methods.
|
||||||
|
httpl := m.Match(cmux.HTTP1Fast())
|
||||||
|
|
||||||
|
// If not matched, we assume that its TLS.
|
||||||
|
//
|
||||||
|
// Note that you can take this listener, do TLS handshake and
|
||||||
|
// create another mux to multiplex the connections over TLS.
|
||||||
|
tlsl := m.Match(cmux.Any())
|
||||||
|
|
||||||
|
go serveHTTP1(httpl)
|
||||||
|
go serveHTTPS(tlsl)
|
||||||
|
|
||||||
|
if err := m.Serve(); !strings.Contains(err.Error(), "use of closed network connection") {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
164
vendor/github.com/cockroachdb/cmux/matchers.go
generated
vendored
Normal file
164
vendor/github.com/cockroachdb/cmux/matchers.go
generated
vendored
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/net/http2"
|
||||||
|
"golang.org/x/net/http2/hpack"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Any is a Matcher that matches any connection.
|
||||||
|
func Any() Matcher {
|
||||||
|
return func(r io.Reader) bool { return true }
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrefixMatcher returns a matcher that matches a connection if it
|
||||||
|
// starts with any of the strings in strs.
|
||||||
|
func PrefixMatcher(strs ...string) Matcher {
|
||||||
|
pt := newPatriciaTreeString(strs...)
|
||||||
|
return pt.matchPrefix
|
||||||
|
}
|
||||||
|
|
||||||
|
var defaultHTTPMethods = []string{
|
||||||
|
"OPTIONS",
|
||||||
|
"GET",
|
||||||
|
"HEAD",
|
||||||
|
"POST",
|
||||||
|
"PUT",
|
||||||
|
"DELETE",
|
||||||
|
"TRACE",
|
||||||
|
"CONNECT",
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTTP1Fast only matches the methods in the HTTP request.
|
||||||
|
//
|
||||||
|
// This matcher is very optimistic: if it returns true, it does not mean that
|
||||||
|
// the request is a valid HTTP response. If you want a correct but slower HTTP1
|
||||||
|
// matcher, use HTTP1 instead.
|
||||||
|
func HTTP1Fast(extMethods ...string) Matcher {
|
||||||
|
return PrefixMatcher(append(defaultHTTPMethods, extMethods...)...)
|
||||||
|
}
|
||||||
|
|
||||||
|
const maxHTTPRead = 4096
|
||||||
|
|
||||||
|
// HTTP1 parses the first line or upto 4096 bytes of the request to see if
|
||||||
|
// the conection contains an HTTP request.
|
||||||
|
func HTTP1() Matcher {
|
||||||
|
return func(r io.Reader) bool {
|
||||||
|
br := bufio.NewReader(&io.LimitedReader{R: r, N: maxHTTPRead})
|
||||||
|
l, part, err := br.ReadLine()
|
||||||
|
if err != nil || part {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, proto, ok := parseRequestLine(string(l))
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
v, _, ok := http.ParseHTTPVersion(proto)
|
||||||
|
return ok && v == 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// grabbed from net/http.
|
||||||
|
func parseRequestLine(line string) (method, uri, proto string, ok bool) {
|
||||||
|
s1 := strings.Index(line, " ")
|
||||||
|
s2 := strings.Index(line[s1+1:], " ")
|
||||||
|
if s1 < 0 || s2 < 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s2 += s1 + 1
|
||||||
|
return line[:s1], line[s1+1 : s2], line[s2+1:], true
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTTP2 parses the frame header of the first frame to detect whether the
|
||||||
|
// connection is an HTTP2 connection.
|
||||||
|
func HTTP2() Matcher {
|
||||||
|
return hasHTTP2Preface
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTTP1HeaderField returns a matcher matching the header fields of the first
|
||||||
|
// request of an HTTP 1 connection.
|
||||||
|
func HTTP1HeaderField(name, value string) Matcher {
|
||||||
|
return func(r io.Reader) bool {
|
||||||
|
return matchHTTP1Field(r, name, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTTP2HeaderField resturns a matcher matching the header fields of the first
|
||||||
|
// headers frame.
|
||||||
|
func HTTP2HeaderField(name, value string) Matcher {
|
||||||
|
return func(r io.Reader) bool {
|
||||||
|
return matchHTTP2Field(r, name, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func hasHTTP2Preface(r io.Reader) bool {
|
||||||
|
var b [len(http2.ClientPreface)]byte
|
||||||
|
if _, err := io.ReadFull(r, b[:]); err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return string(b[:]) == http2.ClientPreface
|
||||||
|
}
|
||||||
|
|
||||||
|
func matchHTTP1Field(r io.Reader, name, value string) (matched bool) {
|
||||||
|
req, err := http.ReadRequest(bufio.NewReader(r))
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return req.Header.Get(name) == value
|
||||||
|
}
|
||||||
|
|
||||||
|
func matchHTTP2Field(r io.Reader, name, value string) (matched bool) {
|
||||||
|
if !hasHTTP2Preface(r) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
framer := http2.NewFramer(ioutil.Discard, r)
|
||||||
|
hdec := hpack.NewDecoder(uint32(4<<10), func(hf hpack.HeaderField) {
|
||||||
|
if hf.Name == name && hf.Value == value {
|
||||||
|
matched = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
for {
|
||||||
|
f, err := framer.ReadFrame()
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
switch f := f.(type) {
|
||||||
|
case *http2.HeadersFrame:
|
||||||
|
if _, err := hdec.Write(f.HeaderBlockFragment()); err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if matched {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.FrameHeader.Flags&http2.FlagHeadersEndHeaders != 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
179
vendor/github.com/cockroachdb/cmux/patricia.go
generated
vendored
Normal file
179
vendor/github.com/cockroachdb/cmux/patricia.go
generated
vendored
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
|
// patriciaTree is a simple patricia tree that handles []byte instead of string
|
||||||
|
// and cannot be changed after instantiation.
|
||||||
|
type patriciaTree struct {
|
||||||
|
root *ptNode
|
||||||
|
maxDepth int // max depth of the tree.
|
||||||
|
}
|
||||||
|
|
||||||
|
func newPatriciaTree(bs ...[]byte) *patriciaTree {
|
||||||
|
max := 0
|
||||||
|
for _, b := range bs {
|
||||||
|
if max < len(b) {
|
||||||
|
max = len(b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &patriciaTree{
|
||||||
|
root: newNode(bs),
|
||||||
|
maxDepth: max + 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func newPatriciaTreeString(strs ...string) *patriciaTree {
|
||||||
|
b := make([][]byte, len(strs))
|
||||||
|
for i, s := range strs {
|
||||||
|
b[i] = []byte(s)
|
||||||
|
}
|
||||||
|
return newPatriciaTree(b...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *patriciaTree) matchPrefix(r io.Reader) bool {
|
||||||
|
buf := make([]byte, t.maxDepth)
|
||||||
|
n, _ := io.ReadFull(r, buf)
|
||||||
|
return t.root.match(buf[:n], true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *patriciaTree) match(r io.Reader) bool {
|
||||||
|
buf := make([]byte, t.maxDepth)
|
||||||
|
n, _ := io.ReadFull(r, buf)
|
||||||
|
return t.root.match(buf[:n], false)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ptNode struct {
|
||||||
|
prefix []byte
|
||||||
|
next map[byte]*ptNode
|
||||||
|
terminal bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func newNode(strs [][]byte) *ptNode {
|
||||||
|
if len(strs) == 0 {
|
||||||
|
return &ptNode{
|
||||||
|
prefix: []byte{},
|
||||||
|
terminal: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(strs) == 1 {
|
||||||
|
return &ptNode{
|
||||||
|
prefix: strs[0],
|
||||||
|
terminal: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p, strs := splitPrefix(strs)
|
||||||
|
n := &ptNode{
|
||||||
|
prefix: p,
|
||||||
|
}
|
||||||
|
|
||||||
|
nexts := make(map[byte][][]byte)
|
||||||
|
for _, s := range strs {
|
||||||
|
if len(s) == 0 {
|
||||||
|
n.terminal = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
nexts[s[0]] = append(nexts[s[0]], s[1:])
|
||||||
|
}
|
||||||
|
|
||||||
|
n.next = make(map[byte]*ptNode)
|
||||||
|
for first, rests := range nexts {
|
||||||
|
n.next[first] = newNode(rests)
|
||||||
|
}
|
||||||
|
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func splitPrefix(bss [][]byte) (prefix []byte, rest [][]byte) {
|
||||||
|
if len(bss) == 0 || len(bss[0]) == 0 {
|
||||||
|
return prefix, bss
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(bss) == 1 {
|
||||||
|
return bss[0], [][]byte{{}}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; ; i++ {
|
||||||
|
var cur byte
|
||||||
|
eq := true
|
||||||
|
for j, b := range bss {
|
||||||
|
if len(b) <= i {
|
||||||
|
eq = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if j == 0 {
|
||||||
|
cur = b[i]
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if cur != b[i] {
|
||||||
|
eq = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !eq {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
prefix = append(prefix, cur)
|
||||||
|
}
|
||||||
|
|
||||||
|
rest = make([][]byte, 0, len(bss))
|
||||||
|
for _, b := range bss {
|
||||||
|
rest = append(rest, b[len(prefix):])
|
||||||
|
}
|
||||||
|
|
||||||
|
return prefix, rest
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *ptNode) match(b []byte, prefix bool) bool {
|
||||||
|
l := len(n.prefix)
|
||||||
|
if l > 0 {
|
||||||
|
if l > len(b) {
|
||||||
|
l = len(b)
|
||||||
|
}
|
||||||
|
if !bytes.Equal(b[:l], n.prefix) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if n.terminal && (prefix || len(n.prefix) == len(b)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if l >= len(b) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
nextN, ok := n.next[b[l]]
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if l == len(b) {
|
||||||
|
b = b[l:l]
|
||||||
|
} else {
|
||||||
|
b = b[l+1:]
|
||||||
|
}
|
||||||
|
return nextN.match(b, prefix)
|
||||||
|
}
|
56
vendor/github.com/cockroachdb/cmux/patricia_test.go
generated
vendored
Normal file
56
vendor/github.com/cockroachdb/cmux/patricia_test.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
// Copyright 2016 The CMux Authors. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
// implied. See the License for the specific language governing
|
||||||
|
// permissions and limitations under the License.
|
||||||
|
|
||||||
|
package cmux
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func testPTree(t *testing.T, strs ...string) {
|
||||||
|
pt := newPatriciaTreeString(strs...)
|
||||||
|
for _, s := range strs {
|
||||||
|
if !pt.match(strings.NewReader(s)) {
|
||||||
|
t.Errorf("%s is not matched by %s", s, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !pt.matchPrefix(strings.NewReader(s + s)) {
|
||||||
|
t.Errorf("%s is not matched as a prefix by %s", s+s, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
if pt.match(strings.NewReader(s + s)) {
|
||||||
|
t.Errorf("%s matches %s", s+s, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following tests are just to catch index out of
|
||||||
|
// range and off-by-one errors and not the functionality.
|
||||||
|
pt.matchPrefix(strings.NewReader(s[:len(s)-1]))
|
||||||
|
pt.match(strings.NewReader(s[:len(s)-1]))
|
||||||
|
pt.matchPrefix(strings.NewReader(s + "$"))
|
||||||
|
pt.match(strings.NewReader(s + "$"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPatriciaOnePrefix(t *testing.T) {
|
||||||
|
testPTree(t, "prefix")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPatriciaNonOverlapping(t *testing.T) {
|
||||||
|
testPTree(t, "foo", "bar", "dummy")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPatriciaOverlapping(t *testing.T) {
|
||||||
|
testPTree(t, "foo", "far", "farther", "boo", "ba", "bar")
|
||||||
|
}
|
3
vendor/github.com/golang/protobuf/README.md
generated
vendored
3
vendor/github.com/golang/protobuf/README.md
generated
vendored
@ -22,7 +22,7 @@ To use this software, you must:
|
|||||||
for details or, if you are using gccgo, follow the instructions at
|
for details or, if you are using gccgo, follow the instructions at
|
||||||
https://golang.org/doc/install/gccgo
|
https://golang.org/doc/install/gccgo
|
||||||
- Grab the code from the repository and install the proto package.
|
- Grab the code from the repository and install the proto package.
|
||||||
The simplest way is to run `go get -u github.com/golang/protobuf/{proto,protoc-gen-go}`.
|
The simplest way is to run `go get -u github.com/golang/protobuf/protoc-gen-go`.
|
||||||
The compiler plugin, protoc-gen-go, will be installed in $GOBIN,
|
The compiler plugin, protoc-gen-go, will be installed in $GOBIN,
|
||||||
defaulting to $GOPATH/bin. It must be in your $PATH for the protocol
|
defaulting to $GOPATH/bin. It must be in your $PATH for the protocol
|
||||||
compiler, protoc, to find it.
|
compiler, protoc, to find it.
|
||||||
@ -104,7 +104,6 @@ for a protocol buffer variable v:
|
|||||||
When the .proto file specifies `syntax="proto3"`, there are some differences:
|
When the .proto file specifies `syntax="proto3"`, there are some differences:
|
||||||
|
|
||||||
- Non-repeated fields of non-message type are values instead of pointers.
|
- Non-repeated fields of non-message type are values instead of pointers.
|
||||||
- Getters are only generated for message and oneof fields.
|
|
||||||
- Enum types do not get an Enum method.
|
- Enum types do not get an Enum method.
|
||||||
|
|
||||||
Consider file test.proto, containing
|
Consider file test.proto, containing
|
||||||
|
5
vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go
generated
vendored
5
vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: conformance_proto/conformance.proto
|
// source: conformance_proto/conformance.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package conformance is a generated protocol buffer package.
|
Package conformance is a generated protocol buffer package.
|
||||||
@ -1711,7 +1710,7 @@ func init() { proto.RegisterFile("conformance_proto/conformance.proto", fileDesc
|
|||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 2737 bytes of a gzipped FileDescriptorProto
|
// 2737 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8,
|
||||||
0xd5, 0x16, 0x08, 0x59, 0x4b, 0x93, 0x92, 0xa8, 0xd6, 0xd6, 0x96, 0x5d, 0x63, 0x58, 0xb2, 0x7f,
|
0xd5, 0x16, 0x08, 0x59, 0x4b, 0x93, 0x92, 0xa8, 0xd6, 0xd6, 0x96, 0x5d, 0x63, 0x58, 0xb2, 0x7f,
|
||||||
0xd3, 0xf6, 0x8c, 0xac, 0x05, 0x86, 0x65, 0xcf, 0x3f, 0x8e, 0x45, 0x9b, 0xb4, 0xe4, 0x8c, 0x25,
|
0xd3, 0xf6, 0x8c, 0xac, 0x05, 0x86, 0x65, 0xcf, 0x3f, 0x8e, 0x45, 0x9b, 0xb4, 0xe4, 0x8c, 0x25,
|
||||||
0x17, 0x64, 0x8d, 0xab, 0x9c, 0x0b, 0x06, 0xa6, 0x20, 0x15, 0xc7, 0x24, 0xc1, 0x01, 0x48, 0x4f,
|
0x17, 0x64, 0x8d, 0xab, 0x9c, 0x0b, 0x06, 0xa6, 0x20, 0x15, 0xc7, 0x24, 0xc1, 0x01, 0x48, 0x4f,
|
||||||
|
117
vendor/github.com/golang/protobuf/jsonpb/jsonpb.go
generated
vendored
117
vendor/github.com/golang/protobuf/jsonpb/jsonpb.go
generated
vendored
@ -44,6 +44,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"math"
|
||||||
"reflect"
|
"reflect"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -74,6 +75,22 @@ type Marshaler struct {
|
|||||||
OrigName bool
|
OrigName bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// JSONPBMarshaler is implemented by protobuf messages that customize the
|
||||||
|
// way they are marshaled to JSON. Messages that implement this should
|
||||||
|
// also implement JSONPBUnmarshaler so that the custom format can be
|
||||||
|
// parsed.
|
||||||
|
type JSONPBMarshaler interface {
|
||||||
|
MarshalJSONPB(*Marshaler) ([]byte, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// JSONPBUnmarshaler is implemented by protobuf messages that customize
|
||||||
|
// the way they are unmarshaled from JSON. Messages that implement this
|
||||||
|
// should also implement JSONPBMarshaler so that the custom format can be
|
||||||
|
// produced.
|
||||||
|
type JSONPBUnmarshaler interface {
|
||||||
|
UnmarshalJSONPB(*Unmarshaler, []byte) error
|
||||||
|
}
|
||||||
|
|
||||||
// Marshal marshals a protocol buffer into JSON.
|
// Marshal marshals a protocol buffer into JSON.
|
||||||
func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error {
|
func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error {
|
||||||
writer := &errWriter{writer: out}
|
writer := &errWriter{writer: out}
|
||||||
@ -91,6 +108,12 @@ func (m *Marshaler) MarshalToString(pb proto.Message) (string, error) {
|
|||||||
|
|
||||||
type int32Slice []int32
|
type int32Slice []int32
|
||||||
|
|
||||||
|
var nonFinite = map[string]float64{
|
||||||
|
`"NaN"`: math.NaN(),
|
||||||
|
`"Infinity"`: math.Inf(1),
|
||||||
|
`"-Infinity"`: math.Inf(-1),
|
||||||
|
}
|
||||||
|
|
||||||
// For sorting extensions ids to ensure stable output.
|
// For sorting extensions ids to ensure stable output.
|
||||||
func (s int32Slice) Len() int { return len(s) }
|
func (s int32Slice) Len() int { return len(s) }
|
||||||
func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
|
func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
|
||||||
@ -102,6 +125,31 @@ type wkt interface {
|
|||||||
|
|
||||||
// marshalObject writes a struct to the Writer.
|
// marshalObject writes a struct to the Writer.
|
||||||
func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error {
|
func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error {
|
||||||
|
if jsm, ok := v.(JSONPBMarshaler); ok {
|
||||||
|
b, err := jsm.MarshalJSONPB(m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if typeURL != "" {
|
||||||
|
// we are marshaling this object to an Any type
|
||||||
|
var js map[string]*json.RawMessage
|
||||||
|
if err = json.Unmarshal(b, &js); err != nil {
|
||||||
|
return fmt.Errorf("type %T produced invalid JSON: %v", v, err)
|
||||||
|
}
|
||||||
|
turl, err := json.Marshal(typeURL)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to marshal type URL %q to JSON: %v", typeURL, err)
|
||||||
|
}
|
||||||
|
js["@type"] = (*json.RawMessage)(&turl)
|
||||||
|
if b, err = json.Marshal(js); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
out.write(string(b))
|
||||||
|
return out.err
|
||||||
|
}
|
||||||
|
|
||||||
s := reflect.ValueOf(v).Elem()
|
s := reflect.ValueOf(v).Elem()
|
||||||
|
|
||||||
// Handle well-known types.
|
// Handle well-known types.
|
||||||
@ -182,7 +230,7 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU
|
|||||||
|
|
||||||
// IsNil will panic on most value kinds.
|
// IsNil will panic on most value kinds.
|
||||||
switch value.Kind() {
|
switch value.Kind() {
|
||||||
case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
|
case reflect.Chan, reflect.Func, reflect.Interface:
|
||||||
if value.IsNil() {
|
if value.IsNil() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -210,6 +258,10 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU
|
|||||||
if value.Len() == 0 {
|
if value.Len() == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
case reflect.Map, reflect.Ptr, reflect.Slice:
|
||||||
|
if value.IsNil() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -373,10 +425,15 @@ func (m *Marshaler) marshalField(out *errWriter, prop *proto.Properties, v refle
|
|||||||
|
|
||||||
// marshalValue writes the value to the Writer.
|
// marshalValue writes the value to the Writer.
|
||||||
func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error {
|
func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
v = reflect.Indirect(v)
|
v = reflect.Indirect(v)
|
||||||
|
|
||||||
|
// Handle nil pointer
|
||||||
|
if v.Kind() == reflect.Invalid {
|
||||||
|
out.write("null")
|
||||||
|
return out.err
|
||||||
|
}
|
||||||
|
|
||||||
// Handle repeated elements.
|
// Handle repeated elements.
|
||||||
if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 {
|
if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 {
|
||||||
out.write("[")
|
out.write("[")
|
||||||
@ -406,9 +463,6 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle
|
|||||||
|
|
||||||
// Handle well-known types.
|
// Handle well-known types.
|
||||||
// Most are handled up in marshalObject (because 99% are messages).
|
// Most are handled up in marshalObject (because 99% are messages).
|
||||||
type wkt interface {
|
|
||||||
XXX_WellKnownType() string
|
|
||||||
}
|
|
||||||
if wkt, ok := v.Interface().(wkt); ok {
|
if wkt, ok := v.Interface().(wkt); ok {
|
||||||
switch wkt.XXX_WellKnownType() {
|
switch wkt.XXX_WellKnownType() {
|
||||||
case "NullValue":
|
case "NullValue":
|
||||||
@ -496,6 +550,24 @@ func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v refle
|
|||||||
return out.err
|
return out.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle non-finite floats, e.g. NaN, Infinity and -Infinity.
|
||||||
|
if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {
|
||||||
|
f := v.Float()
|
||||||
|
var sval string
|
||||||
|
switch {
|
||||||
|
case math.IsInf(f, 1):
|
||||||
|
sval = `"Infinity"`
|
||||||
|
case math.IsInf(f, -1):
|
||||||
|
sval = `"-Infinity"`
|
||||||
|
case math.IsNaN(f):
|
||||||
|
sval = `"NaN"`
|
||||||
|
}
|
||||||
|
if sval != "" {
|
||||||
|
out.write(sval)
|
||||||
|
return out.err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Default handling defers to the encoding/json library.
|
// Default handling defers to the encoding/json library.
|
||||||
b, err := json.Marshal(v.Interface())
|
b, err := json.Marshal(v.Interface())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -571,10 +643,11 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||||||
return u.unmarshalValue(target.Elem(), inputValue, prop)
|
return u.unmarshalValue(target.Elem(), inputValue, prop)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle well-known types.
|
if jsu, ok := target.Addr().Interface().(JSONPBUnmarshaler); ok {
|
||||||
type wkt interface {
|
return jsu.UnmarshalJSONPB(u, []byte(inputValue))
|
||||||
XXX_WellKnownType() string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle well-known types.
|
||||||
if w, ok := target.Addr().Interface().(wkt); ok {
|
if w, ok := target.Addr().Interface().(wkt); ok {
|
||||||
switch w.XXX_WellKnownType() {
|
switch w.XXX_WellKnownType() {
|
||||||
case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value",
|
case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value",
|
||||||
@ -585,19 +658,22 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||||||
// so we don't have to do any extra work.
|
// so we don't have to do any extra work.
|
||||||
return u.unmarshalValue(target.Field(0), inputValue, prop)
|
return u.unmarshalValue(target.Field(0), inputValue, prop)
|
||||||
case "Any":
|
case "Any":
|
||||||
var jsonFields map[string]json.RawMessage
|
// Use json.RawMessage pointer type instead of value to support pre-1.8 version.
|
||||||
|
// 1.8 changed RawMessage.MarshalJSON from pointer type to value type, see
|
||||||
|
// https://github.com/golang/go/issues/14493
|
||||||
|
var jsonFields map[string]*json.RawMessage
|
||||||
if err := json.Unmarshal(inputValue, &jsonFields); err != nil {
|
if err := json.Unmarshal(inputValue, &jsonFields); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
val, ok := jsonFields["@type"]
|
val, ok := jsonFields["@type"]
|
||||||
if !ok {
|
if !ok || val == nil {
|
||||||
return errors.New("Any JSON doesn't have '@type'")
|
return errors.New("Any JSON doesn't have '@type'")
|
||||||
}
|
}
|
||||||
|
|
||||||
var turl string
|
var turl string
|
||||||
if err := json.Unmarshal([]byte(val), &turl); err != nil {
|
if err := json.Unmarshal([]byte(*val), &turl); err != nil {
|
||||||
return fmt.Errorf("can't unmarshal Any's '@type': %q", val)
|
return fmt.Errorf("can't unmarshal Any's '@type': %q", *val)
|
||||||
}
|
}
|
||||||
target.Field(0).SetString(turl)
|
target.Field(0).SetString(turl)
|
||||||
|
|
||||||
@ -617,8 +693,8 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||||||
return errors.New("Any JSON doesn't have 'value'")
|
return errors.New("Any JSON doesn't have 'value'")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), val, nil); err != nil {
|
if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), *val, nil); err != nil {
|
||||||
return fmt.Errorf("can't unmarshal Any's WKT: %v", err)
|
return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
delete(jsonFields, "@type")
|
delete(jsonFields, "@type")
|
||||||
@ -628,13 +704,13 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil {
|
if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil {
|
||||||
return fmt.Errorf("can't unmarshal nested Any proto: %v", err)
|
return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
b, err := proto.Marshal(m)
|
b, err := proto.Marshal(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("can't marshal proto into Any.Value: %v", err)
|
return fmt.Errorf("can't marshal proto %T into Any.Value: %v", m, err)
|
||||||
}
|
}
|
||||||
target.Field(1).SetBytes(b)
|
target.Field(1).SetBytes(b)
|
||||||
|
|
||||||
@ -911,6 +987,15 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||||||
inputValue = inputValue[1 : len(inputValue)-1]
|
inputValue = inputValue[1 : len(inputValue)-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Non-finite numbers can be encoded as strings.
|
||||||
|
isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64
|
||||||
|
if isFloat {
|
||||||
|
if num, ok := nonFinite[string(inputValue)]; ok {
|
||||||
|
target.SetFloat(num)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Use the encoding/json for parsing other value types.
|
// Use the encoding/json for parsing other value types.
|
||||||
return json.Unmarshal(inputValue, target.Addr().Interface())
|
return json.Unmarshal(inputValue, target.Addr().Interface())
|
||||||
}
|
}
|
||||||
|
122
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go
generated
vendored
122
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go
generated
vendored
@ -35,6 +35,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io"
|
"io"
|
||||||
|
"math"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
@ -43,6 +44,7 @@ import (
|
|||||||
|
|
||||||
pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto"
|
pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto"
|
||||||
proto3pb "github.com/golang/protobuf/proto/proto3_proto"
|
proto3pb "github.com/golang/protobuf/proto/proto3_proto"
|
||||||
|
"github.com/golang/protobuf/ptypes"
|
||||||
anypb "github.com/golang/protobuf/ptypes/any"
|
anypb "github.com/golang/protobuf/ptypes/any"
|
||||||
durpb "github.com/golang/protobuf/ptypes/duration"
|
durpb "github.com/golang/protobuf/ptypes/duration"
|
||||||
stpb "github.com/golang/protobuf/ptypes/struct"
|
stpb "github.com/golang/protobuf/ptypes/struct"
|
||||||
@ -307,6 +309,23 @@ var (
|
|||||||
"value": "1.212s"
|
"value": "1.212s"
|
||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|
||||||
|
nonFinites = &pb.NonFinites{
|
||||||
|
FNan: proto.Float32(float32(math.NaN())),
|
||||||
|
FPinf: proto.Float32(float32(math.Inf(1))),
|
||||||
|
FNinf: proto.Float32(float32(math.Inf(-1))),
|
||||||
|
DNan: proto.Float64(float64(math.NaN())),
|
||||||
|
DPinf: proto.Float64(float64(math.Inf(1))),
|
||||||
|
DNinf: proto.Float64(float64(math.Inf(-1))),
|
||||||
|
}
|
||||||
|
nonFinitesJSON = `{` +
|
||||||
|
`"fNan":"NaN",` +
|
||||||
|
`"fPinf":"Infinity",` +
|
||||||
|
`"fNinf":"-Infinity",` +
|
||||||
|
`"dNan":"NaN",` +
|
||||||
|
`"dPinf":"Infinity",` +
|
||||||
|
`"dNinf":"-Infinity"` +
|
||||||
|
`}`
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -326,6 +345,7 @@ var marshalingTests = []struct {
|
|||||||
}{
|
}{
|
||||||
{"simple flat object", marshaler, simpleObject, simpleObjectJSON},
|
{"simple flat object", marshaler, simpleObject, simpleObjectJSON},
|
||||||
{"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectPrettyJSON},
|
{"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectPrettyJSON},
|
||||||
|
{"non-finite floats fields object", marshaler, nonFinites, nonFinitesJSON},
|
||||||
{"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON},
|
{"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON},
|
||||||
{"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON},
|
{"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON},
|
||||||
{"nested message/enum flat object", marshaler, complexObject, complexObjectJSON},
|
{"nested message/enum flat object", marshaler, complexObject, complexObjectJSON},
|
||||||
@ -350,6 +370,9 @@ var marshalingTests = []struct {
|
|||||||
`{"rFunny":[1,2]}`},
|
`{"rFunny":[1,2]}`},
|
||||||
{"empty value", marshaler, &pb.Simple3{}, `{}`},
|
{"empty value", marshaler, &pb.Simple3{}, `{}`},
|
||||||
{"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`},
|
{"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`},
|
||||||
|
{"empty repeated emitted", Marshaler{EmitDefaults: true}, &pb.SimpleSlice3{}, `{"slices":[]}`},
|
||||||
|
{"empty map emitted", Marshaler{EmitDefaults: true}, &pb.SimpleMap3{}, `{"stringy":{}}`},
|
||||||
|
{"nested struct null", Marshaler{EmitDefaults: true}, &pb.SimpleNull3{}, `{"simple":null}`},
|
||||||
{"map<int64, int32>", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`},
|
{"map<int64, int32>", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`},
|
||||||
{"map<int64, int32>", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON},
|
{"map<int64, int32>", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON},
|
||||||
{"map<string, string>", marshaler,
|
{"map<string, string>", marshaler,
|
||||||
@ -439,6 +462,36 @@ func TestMarshaling(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMarshalJSONPBMarshaler(t *testing.T) {
|
||||||
|
rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
|
||||||
|
msg := dynamicMessage{rawJson: rawJson}
|
||||||
|
str, err := new(Marshaler).MarshalToString(&msg)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("an unexpected error occurred when marshalling JSONPBMarshaler: %v", err)
|
||||||
|
}
|
||||||
|
if str != rawJson {
|
||||||
|
t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, rawJson)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMarshalAnyJSONPBMarshaler(t *testing.T) {
|
||||||
|
msg := dynamicMessage{rawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`}
|
||||||
|
a, err := ptypes.MarshalAny(&msg)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("an unexpected error occurred when marshalling to Any: %v", err)
|
||||||
|
}
|
||||||
|
str, err := new(Marshaler).MarshalToString(a)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("an unexpected error occurred when marshalling Any to JSON: %v", err)
|
||||||
|
}
|
||||||
|
// after custom marshaling, it's round-tripped through JSON decoding/encoding already,
|
||||||
|
// so the keys are sorted, whitespace is compacted, and "@type" key has been added
|
||||||
|
expected := `{"@type":"type.googleapis.com/` + dynamicMessageName +`","baz":[0,1,2,3],"foo":"bar"}`
|
||||||
|
if str != expected {
|
||||||
|
t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var unmarshalingTests = []struct {
|
var unmarshalingTests = []struct {
|
||||||
desc string
|
desc string
|
||||||
unmarshaler Unmarshaler
|
unmarshaler Unmarshaler
|
||||||
@ -477,6 +530,9 @@ var unmarshalingTests = []struct {
|
|||||||
}}},
|
}}},
|
||||||
{"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}},
|
{"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}},
|
||||||
{"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}},
|
{"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}},
|
||||||
|
{"NaN", Unmarshaler{}, `{"oDouble":"NaN"}`, &pb.Simple{ODouble: proto.Float64(math.NaN())}},
|
||||||
|
{"Inf", Unmarshaler{}, `{"oFloat":"Infinity"}`, &pb.Simple{OFloat: proto.Float32(float32(math.Inf(1)))}},
|
||||||
|
{"-Inf", Unmarshaler{}, `{"oDouble":"-Infinity"}`, &pb.Simple{ODouble: proto.Float64(math.Inf(-1))}},
|
||||||
{"map<int64, int32>", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}},
|
{"map<int64, int32>", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}},
|
||||||
{"map<string, string>", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}},
|
{"map<string, string>", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}},
|
||||||
{"map<int32, Object>", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}},
|
{"map<int32, Object>", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}},
|
||||||
@ -635,3 +691,69 @@ func TestUnmarshalingBadInput(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUnmarshalJSONPBUnmarshaler(t *testing.T) {
|
||||||
|
rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
|
||||||
|
var msg dynamicMessage
|
||||||
|
if err := Unmarshal(strings.NewReader(rawJson), &msg); err != nil {
|
||||||
|
t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err)
|
||||||
|
}
|
||||||
|
if msg.rawJson != rawJson {
|
||||||
|
t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", msg.rawJson, rawJson)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) {
|
||||||
|
rawJson := `{ "@type": "blah.com/` + dynamicMessageName + `", "foo": "bar", "baz": [0, 1, 2, 3] }`
|
||||||
|
var got anypb.Any
|
||||||
|
if err := Unmarshal(strings.NewReader(rawJson), &got); err != nil {
|
||||||
|
t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
dm := &dynamicMessage{rawJson: `{"baz":[0,1,2,3],"foo":"bar"}`}
|
||||||
|
var want anypb.Any
|
||||||
|
if b, err := proto.Marshal(dm); err != nil {
|
||||||
|
t.Errorf("an unexpected error occurred when marshaling message: %v", err)
|
||||||
|
} else {
|
||||||
|
want.TypeUrl = "blah.com/" + dynamicMessageName
|
||||||
|
want.Value = b
|
||||||
|
}
|
||||||
|
|
||||||
|
if !proto.Equal(&got, &want) {
|
||||||
|
t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
dynamicMessageName = "google.protobuf.jsonpb.testing.dynamicMessage"
|
||||||
|
)
|
||||||
|
func init() {
|
||||||
|
// we register the custom type below so that we can use it in Any types
|
||||||
|
proto.RegisterType((*dynamicMessage)(nil), dynamicMessageName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// dynamicMessage implements protobuf.Message but is not a normal generated message type.
|
||||||
|
// It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support.
|
||||||
|
type dynamicMessage struct {
|
||||||
|
rawJson string `protobuf:"bytes,1,opt,name=rawJson"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *dynamicMessage) Reset() {
|
||||||
|
m.rawJson = "{}"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *dynamicMessage) String() string {
|
||||||
|
return m.rawJson
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *dynamicMessage) ProtoMessage() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *dynamicMessage) MarshalJSONPB(jm *Marshaler) ([]byte, error) {
|
||||||
|
return []byte(m.rawJson), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error {
|
||||||
|
m.rawJson = string(js)
|
||||||
|
return nil
|
||||||
|
}
|
123
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go
generated
vendored
123
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: more_test_objects.proto
|
// source: more_test_objects.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package jsonpb is a generated protocol buffer package.
|
Package jsonpb is a generated protocol buffer package.
|
||||||
@ -11,8 +10,12 @@ It is generated from these files:
|
|||||||
|
|
||||||
It has these top-level messages:
|
It has these top-level messages:
|
||||||
Simple3
|
Simple3
|
||||||
|
SimpleSlice3
|
||||||
|
SimpleMap3
|
||||||
|
SimpleNull3
|
||||||
Mappy
|
Mappy
|
||||||
Simple
|
Simple
|
||||||
|
NonFinites
|
||||||
Repeats
|
Repeats
|
||||||
Widget
|
Widget
|
||||||
Maps
|
Maps
|
||||||
@ -78,6 +81,54 @@ func (m *Simple3) GetDub() float64 {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SimpleSlice3 struct {
|
||||||
|
Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} }
|
||||||
|
func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SimpleSlice3) ProtoMessage() {}
|
||||||
|
func (*SimpleSlice3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
||||||
|
|
||||||
|
func (m *SimpleSlice3) GetSlices() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Slices
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SimpleMap3 struct {
|
||||||
|
Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SimpleMap3) Reset() { *m = SimpleMap3{} }
|
||||||
|
func (m *SimpleMap3) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SimpleMap3) ProtoMessage() {}
|
||||||
|
func (*SimpleMap3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
||||||
|
|
||||||
|
func (m *SimpleMap3) GetStringy() map[string]string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Stringy
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type SimpleNull3 struct {
|
||||||
|
Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SimpleNull3) Reset() { *m = SimpleNull3{} }
|
||||||
|
func (m *SimpleNull3) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SimpleNull3) ProtoMessage() {}
|
||||||
|
func (*SimpleNull3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
|
||||||
|
|
||||||
|
func (m *SimpleNull3) GetSimple() *Simple3 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Simple
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type Mappy struct {
|
type Mappy struct {
|
||||||
Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||||
Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||||
@ -94,7 +145,7 @@ type Mappy struct {
|
|||||||
func (m *Mappy) Reset() { *m = Mappy{} }
|
func (m *Mappy) Reset() { *m = Mappy{} }
|
||||||
func (m *Mappy) String() string { return proto.CompactTextString(m) }
|
func (m *Mappy) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Mappy) ProtoMessage() {}
|
func (*Mappy) ProtoMessage() {}
|
||||||
func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
|
||||||
|
|
||||||
func (m *Mappy) GetNummy() map[int64]int32 {
|
func (m *Mappy) GetNummy() map[int64]int32 {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
@ -168,6 +219,9 @@ func (m *Mappy) GetU64Booly() map[uint64]bool {
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3")
|
proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3")
|
||||||
|
proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3")
|
||||||
|
proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3")
|
||||||
|
proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3")
|
||||||
proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy")
|
proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy")
|
||||||
proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value)
|
proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value)
|
||||||
}
|
}
|
||||||
@ -175,33 +229,38 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) }
|
func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) }
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 444 bytes of a gzipped FileDescriptorProto
|
// 526 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x94, 0xc1, 0x6b, 0xdb, 0x30,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c,
|
||||||
0x14, 0x87, 0xe7, 0xa4, 0x4e, 0xec, 0x17, 0xba, 0x19, 0x31, 0x98, 0x58, 0x2f, 0xa1, 0x30, 0x08,
|
0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0,
|
||||||
0x83, 0xf9, 0x90, 0x8c, 0xad, 0x6c, 0xa7, 0x74, 0xf4, 0x50, 0x46, 0x1d, 0x70, 0x09, 0x3b, 0x96,
|
0xad, 0x0c, 0xe6, 0x8b, 0x78, 0x74, 0x5d, 0x77, 0x95, 0x8e, 0x5e, 0x94, 0x11, 0x07, 0x1c, 0xc2,
|
||||||
0x78, 0x13, 0x65, 0x9e, 0x6d, 0x19, 0xdb, 0x1a, 0xe8, 0x8f, 0x1f, 0x8c, 0x27, 0xcb, 0xb5, 0x6c,
|
0x2e, 0x4b, 0xdc, 0x99, 0x90, 0xcc, 0x5f, 0xd8, 0xd6, 0xc0, 0xd7, 0xfb, 0xbb, 0x07, 0xe3, 0x48,
|
||||||
0x14, 0xd2, 0x9b, 0xcc, 0xef, 0xfb, 0xf2, 0x9e, 0xf4, 0x1e, 0x81, 0x37, 0x39, 0xaf, 0xd8, 0x43,
|
0x72, 0x2d, 0x07, 0x85, 0x6c, 0x77, 0x52, 0x7e, 0xcf, 0xe3, 0x73, 0x24, 0x1d, 0x02, 0x2f, 0xd3,
|
||||||
0xc3, 0xea, 0xe6, 0x81, 0x27, 0x29, 0xfb, 0xd9, 0xd4, 0x61, 0x59, 0xf1, 0x86, 0x93, 0x59, 0x5a,
|
0xbc, 0x8c, 0x1f, 0xea, 0xb8, 0xaa, 0x1f, 0xf2, 0x68, 0x17, 0x3f, 0xd6, 0x95, 0x57, 0x94, 0x79,
|
||||||
0xf3, 0xa2, 0x4c, 0x2e, 0x2f, 0x60, 0x7e, 0xff, 0x3b, 0x2f, 0x33, 0xb6, 0x21, 0x01, 0x4c, 0x7f,
|
0x9d, 0x13, 0x63, 0x57, 0xe5, 0x59, 0x11, 0xb9, 0xe7, 0x60, 0x2e, 0xb7, 0x69, 0x91, 0xc4, 0x3e,
|
||||||
0x89, 0x84, 0x3a, 0x4b, 0x67, 0xe5, 0xc4, 0x78, 0xbc, 0xfc, 0xe7, 0x81, 0x7b, 0x77, 0x28, 0x4b,
|
0x19, 0xc3, 0xf0, 0x3b, 0x8d, 0x1c, 0xed, 0x42, 0xbb, 0xd4, 0x42, 0x5c, 0xba, 0x6f, 0xe0, 0x94,
|
||||||
0x49, 0x42, 0x70, 0x0b, 0x91, 0xe7, 0x92, 0x3a, 0xcb, 0xe9, 0x6a, 0xb1, 0xa6, 0x61, 0xab, 0x87,
|
0x87, 0xcb, 0x64, 0xfb, 0x18, 0xfb, 0xe4, 0x05, 0x18, 0x15, 0xae, 0x2a, 0x47, 0xbb, 0x18, 0x5e,
|
||||||
0x2a, 0x0d, 0x23, 0x8c, 0x6e, 0x8a, 0xa6, 0x92, 0x71, 0x8b, 0x21, 0x5f, 0x37, 0x55, 0x25, 0xe9,
|
0xda, 0xa1, 0xd8, 0xb9, 0xbf, 0x34, 0x00, 0x0e, 0xce, 0xd7, 0x85, 0x4f, 0x3e, 0x81, 0x59, 0xd5,
|
||||||
0xc4, 0xc6, 0xdf, 0x63, 0xa4, 0x79, 0x85, 0x21, 0xcf, 0x93, 0x34, 0x95, 0x74, 0x6a, 0xe3, 0x77,
|
0xe5, 0x36, 0xdb, 0x34, 0x8c, 0x1b, 0x4d, 0x5f, 0x79, 0xbc, 0x9a, 0xd7, 0x41, 0xde, 0x92, 0x13,
|
||||||
0x18, 0x69, 0x5e, 0x61, 0xc8, 0x27, 0xe2, 0xf1, 0x51, 0xd2, 0x33, 0x1b, 0x7f, 0x8d, 0x91, 0xe6,
|
0x77, 0x59, 0x5d, 0x36, 0x61, 0xcb, 0x4f, 0x6e, 0xe0, 0x54, 0x0e, 0xb0, 0xa7, 0x1f, 0x71, 0xc3,
|
||||||
0x15, 0xa6, 0x78, 0xce, 0x33, 0x49, 0x5d, 0x2b, 0x8f, 0x51, 0xc7, 0xe3, 0x19, 0x79, 0x56, 0x88,
|
0x7a, 0xb2, 0x43, 0x5c, 0x92, 0xe7, 0xa0, 0xff, 0x5c, 0x27, 0x34, 0x76, 0x06, 0xec, 0x37, 0xbe,
|
||||||
0x5c, 0xd2, 0x99, 0x8d, 0xbf, 0xc1, 0x48, 0xf3, 0x0a, 0x23, 0x9f, 0xc1, 0xab, 0x37, 0xeb, 0xb6,
|
0xb9, 0x19, 0x5c, 0x6b, 0xee, 0x15, 0x8c, 0xf8, 0xf7, 0x03, 0x9a, 0x24, 0x3e, 0x79, 0x0b, 0x46,
|
||||||
0xc4, 0x5c, 0x29, 0x17, 0xa3, 0x2b, 0xeb, 0xb4, 0xb5, 0x9e, 0x60, 0x25, 0x7e, 0xfa, 0xd8, 0x8a,
|
0xc5, 0xb6, 0xcc, 0x1e, 0x4d, 0x9f, 0xf5, 0x9b, 0xf0, 0x43, 0x11, 0xbb, 0xbf, 0x2d, 0xd0, 0xe7,
|
||||||
0x9e, 0x55, 0xd4, 0x69, 0x27, 0xea, 0x4f, 0x14, 0x45, 0x57, 0xd1, 0xb7, 0x89, 0xfb, 0x61, 0x45,
|
0xeb, 0xa2, 0x68, 0x88, 0x07, 0x7a, 0x46, 0xd3, 0xb4, 0x6d, 0xdb, 0x69, 0x0d, 0x96, 0x7a, 0x01,
|
||||||
0x61, 0x54, 0x14, 0x5d, 0x45, 0xb0, 0x8a, 0xc3, 0x8a, 0x1d, 0xfc, 0xf6, 0x0a, 0xa0, 0x1f, 0x34,
|
0x46, 0xbc, 0x5f, 0x8e, 0x21, 0x5f, 0xd5, 0x65, 0xd9, 0x38, 0x03, 0x15, 0xbf, 0xc4, 0x48, 0xf0,
|
||||||
0x6e, 0xcb, 0x1f, 0x26, 0xd5, 0xb6, 0x4c, 0x63, 0x3c, 0x92, 0xd7, 0xe0, 0xfe, 0x3d, 0x64, 0x82,
|
0x0c, 0x43, 0x3e, 0x8f, 0x76, 0xbb, 0xc6, 0x19, 0xaa, 0xf8, 0x05, 0x46, 0x82, 0x67, 0x18, 0xf2,
|
||||||
0xd1, 0xc9, 0xd2, 0x59, 0xb9, 0x71, 0xfb, 0xf1, 0x65, 0x72, 0xe5, 0xa0, 0xd9, 0x8f, 0xdc, 0x34,
|
0x11, 0xdd, 0x6c, 0x1a, 0xe7, 0x44, 0xc5, 0xdf, 0x62, 0x24, 0x78, 0x86, 0x31, 0x3e, 0xcf, 0x93,
|
||||||
0x7d, 0x8b, 0xe9, 0x9b, 0xe6, 0x2d, 0x40, 0x3f, 0x7c, 0xd3, 0x74, 0x5b, 0xf3, 0x9d, 0x69, 0x2e,
|
0xc6, 0xd1, 0x95, 0x3c, 0x46, 0x2d, 0x8f, 0x6b, 0xe4, 0xe3, 0x8c, 0xa6, 0x8d, 0x63, 0xa8, 0xf8,
|
||||||
0xd6, 0xaf, 0xba, 0x9b, 0xe8, 0x9d, 0x1e, 0x35, 0xd1, 0xef, 0xc5, 0xa9, 0xf6, 0xfd, 0xb1, 0xf9,
|
0x3b, 0x8c, 0x04, 0xcf, 0x30, 0xf2, 0x11, 0xac, 0xca, 0x9f, 0xf2, 0x12, 0x26, 0x53, 0xce, 0xf7,
|
||||||
0xf4, 0x20, 0xa6, 0xe9, 0x59, 0x4c, 0x6f, 0xd4, 0x7e, 0xbf, 0x2b, 0x96, 0x8b, 0x0f, 0xda, 0x7f,
|
0x8e, 0x2c, 0x52, 0x6e, 0x3d, 0xc1, 0x4c, 0xbc, 0xfa, 0xc0, 0x45, 0x4b, 0x29, 0x8a, 0xb4, 0x15,
|
||||||
0xd9, 0xb7, 0x1f, 0x89, 0x9c, 0x55, 0x87, 0xcc, 0xfc, 0xa9, 0xaf, 0x70, 0x3e, 0xd8, 0x21, 0xcb,
|
0xc5, 0x16, 0x45, 0xda, 0x56, 0xb4, 0x55, 0xe2, 0xaa, 0x5f, 0x91, 0x4a, 0x15, 0x69, 0x5b, 0x11,
|
||||||
0x63, 0x1c, 0xef, 0x03, 0x65, 0x73, 0xaa, 0xa7, 0xae, 0x3f, 0x96, 0xf7, 0xc7, 0x2a, 0x9f, 0x3f,
|
0x94, 0x62, 0xbf, 0x62, 0x0b, 0x4f, 0xae, 0x01, 0xba, 0x87, 0x96, 0xe7, 0x6f, 0xa8, 0x98, 0x3f,
|
||||||
0x47, 0x3e, 0x56, 0xf9, 0xec, 0x84, 0xfc, 0xfe, 0x03, 0xcc, 0xf5, 0x4b, 0x90, 0x05, 0xcc, 0xf7,
|
0x5d, 0x9a, 0x3f, 0x34, 0xbb, 0x27, 0xff, 0x97, 0xc9, 0x9d, 0xdc, 0x03, 0x74, 0x8f, 0x2f, 0x9b,
|
||||||
0xd1, 0xf7, 0x68, 0xf7, 0x23, 0x0a, 0x5e, 0x10, 0x80, 0xd9, 0x36, 0xde, 0x5e, 0xdf, 0x7e, 0x0b,
|
0x3a, 0x37, 0x5f, 0xcb, 0xa6, 0x62, 0x92, 0xfb, 0x4d, 0x74, 0x73, 0x71, 0xac, 0x7d, 0x7b, 0xdf,
|
||||||
0x1c, 0xe2, 0x83, 0x1b, 0xef, 0xee, 0xb6, 0x51, 0x30, 0x49, 0x66, 0xea, 0xaf, 0x6d, 0xf3, 0x3f,
|
0x7c, 0xba, 0x10, 0xd9, 0xb4, 0x14, 0xa6, 0xb5, 0xd7, 0x7e, 0x37, 0x2b, 0x8a, 0x83, 0xf7, 0xda,
|
||||||
0x00, 0x00, 0xff, 0xff, 0xa2, 0x4b, 0xe1, 0x77, 0xf5, 0x04, 0x00, 0x00,
|
0xff, 0xbf, 0x6b, 0x3f, 0xa0, 0x69, 0x5c, 0xae, 0x13, 0xf9, 0x53, 0x9f, 0xe1, 0xac, 0x37, 0x43,
|
||||||
|
0x8a, 0xcb, 0x38, 0xdc, 0x07, 0xca, 0xf2, 0xab, 0x1e, 0x3b, 0xfe, 0xbe, 0xbc, 0x3a, 0x54, 0xf9,
|
||||||
|
0xec, 0x6f, 0xe4, 0x43, 0x95, 0x4f, 0x8e, 0xc8, 0xef, 0xde, 0x83, 0x29, 0x6e, 0x82, 0x8c, 0xc0,
|
||||||
|
0x5c, 0x05, 0x5f, 0x83, 0xc5, 0xb7, 0x60, 0xfc, 0x1f, 0x01, 0x30, 0x66, 0xe1, 0xec, 0xf6, 0xfe,
|
||||||
|
0xcb, 0x58, 0x23, 0x36, 0xe8, 0xe1, 0x62, 0x3e, 0x0b, 0xc6, 0x83, 0xc8, 0x60, 0x7f, 0xe0, 0xfe,
|
||||||
|
0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x34, 0xaf, 0xdb, 0x05, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
12
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto
generated
vendored
12
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto
generated
vendored
@ -37,6 +37,18 @@ message Simple3 {
|
|||||||
double dub = 1;
|
double dub = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message SimpleSlice3 {
|
||||||
|
repeated string slices = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SimpleMap3 {
|
||||||
|
map<string,string> stringy = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SimpleNull3 {
|
||||||
|
Simple3 simple = 1;
|
||||||
|
}
|
||||||
|
|
||||||
enum Numeral {
|
enum Numeral {
|
||||||
UNKNOWN = 0;
|
UNKNOWN = 0;
|
||||||
ARABIC = 1;
|
ARABIC = 1;
|
||||||
|
221
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go
generated
vendored
221
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: test_objects.proto
|
// source: test_objects.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
package jsonpb
|
package jsonpb
|
||||||
|
|
||||||
@ -53,7 +52,7 @@ func (x *Widget_Color) UnmarshalJSON(data []byte) error {
|
|||||||
*x = Widget_Color(value)
|
*x = Widget_Color(value)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} }
|
func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} }
|
||||||
|
|
||||||
// Test message for holding primitive types.
|
// Test message for holding primitive types.
|
||||||
type Simple struct {
|
type Simple struct {
|
||||||
@ -153,6 +152,64 @@ func (m *Simple) GetOBytes() []byte {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test message for holding special non-finites primitives.
|
||||||
|
type NonFinites struct {
|
||||||
|
FNan *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"`
|
||||||
|
FPinf *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"`
|
||||||
|
FNinf *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"`
|
||||||
|
DNan *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"`
|
||||||
|
DPinf *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"`
|
||||||
|
DNinf *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonFinites) Reset() { *m = NonFinites{} }
|
||||||
|
func (m *NonFinites) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*NonFinites) ProtoMessage() {}
|
||||||
|
func (*NonFinites) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
|
||||||
|
|
||||||
|
func (m *NonFinites) GetFNan() float32 {
|
||||||
|
if m != nil && m.FNan != nil {
|
||||||
|
return *m.FNan
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonFinites) GetFPinf() float32 {
|
||||||
|
if m != nil && m.FPinf != nil {
|
||||||
|
return *m.FPinf
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonFinites) GetFNinf() float32 {
|
||||||
|
if m != nil && m.FNinf != nil {
|
||||||
|
return *m.FNinf
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonFinites) GetDNan() float64 {
|
||||||
|
if m != nil && m.DNan != nil {
|
||||||
|
return *m.DNan
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonFinites) GetDPinf() float64 {
|
||||||
|
if m != nil && m.DPinf != nil {
|
||||||
|
return *m.DPinf
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonFinites) GetDNinf() float64 {
|
||||||
|
if m != nil && m.DNinf != nil {
|
||||||
|
return *m.DNinf
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Test message for holding repeated primitives.
|
// Test message for holding repeated primitives.
|
||||||
type Repeats struct {
|
type Repeats struct {
|
||||||
RBool []bool `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"`
|
RBool []bool `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"`
|
||||||
@ -172,7 +229,7 @@ type Repeats struct {
|
|||||||
func (m *Repeats) Reset() { *m = Repeats{} }
|
func (m *Repeats) Reset() { *m = Repeats{} }
|
||||||
func (m *Repeats) String() string { return proto.CompactTextString(m) }
|
func (m *Repeats) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Repeats) ProtoMessage() {}
|
func (*Repeats) ProtoMessage() {}
|
||||||
func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
|
func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
|
||||||
|
|
||||||
func (m *Repeats) GetRBool() []bool {
|
func (m *Repeats) GetRBool() []bool {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
@ -265,7 +322,7 @@ type Widget struct {
|
|||||||
func (m *Widget) Reset() { *m = Widget{} }
|
func (m *Widget) Reset() { *m = Widget{} }
|
||||||
func (m *Widget) String() string { return proto.CompactTextString(m) }
|
func (m *Widget) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Widget) ProtoMessage() {}
|
func (*Widget) ProtoMessage() {}
|
||||||
func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
|
func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
|
||||||
|
|
||||||
func (m *Widget) GetColor() Widget_Color {
|
func (m *Widget) GetColor() Widget_Color {
|
||||||
if m != nil && m.Color != nil {
|
if m != nil && m.Color != nil {
|
||||||
@ -318,7 +375,7 @@ type Maps struct {
|
|||||||
func (m *Maps) Reset() { *m = Maps{} }
|
func (m *Maps) Reset() { *m = Maps{} }
|
||||||
func (m *Maps) String() string { return proto.CompactTextString(m) }
|
func (m *Maps) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Maps) ProtoMessage() {}
|
func (*Maps) ProtoMessage() {}
|
||||||
func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
|
func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
|
||||||
|
|
||||||
func (m *Maps) GetMInt64Str() map[int64]string {
|
func (m *Maps) GetMInt64Str() map[int64]string {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
@ -347,7 +404,7 @@ type MsgWithOneof struct {
|
|||||||
func (m *MsgWithOneof) Reset() { *m = MsgWithOneof{} }
|
func (m *MsgWithOneof) Reset() { *m = MsgWithOneof{} }
|
||||||
func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) }
|
func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) }
|
||||||
func (*MsgWithOneof) ProtoMessage() {}
|
func (*MsgWithOneof) ProtoMessage() {}
|
||||||
func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
|
func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
|
||||||
|
|
||||||
type isMsgWithOneof_Union interface {
|
type isMsgWithOneof_Union interface {
|
||||||
isMsgWithOneof_Union()
|
isMsgWithOneof_Union()
|
||||||
@ -510,7 +567,7 @@ type Real struct {
|
|||||||
func (m *Real) Reset() { *m = Real{} }
|
func (m *Real) Reset() { *m = Real{} }
|
||||||
func (m *Real) String() string { return proto.CompactTextString(m) }
|
func (m *Real) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Real) ProtoMessage() {}
|
func (*Real) ProtoMessage() {}
|
||||||
func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
|
func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
|
||||||
|
|
||||||
var extRange_Real = []proto.ExtensionRange{
|
var extRange_Real = []proto.ExtensionRange{
|
||||||
{100, 536870911},
|
{100, 536870911},
|
||||||
@ -536,7 +593,7 @@ type Complex struct {
|
|||||||
func (m *Complex) Reset() { *m = Complex{} }
|
func (m *Complex) Reset() { *m = Complex{} }
|
||||||
func (m *Complex) String() string { return proto.CompactTextString(m) }
|
func (m *Complex) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Complex) ProtoMessage() {}
|
func (*Complex) ProtoMessage() {}
|
||||||
func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
|
func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
|
||||||
|
|
||||||
var extRange_Complex = []proto.ExtensionRange{
|
var extRange_Complex = []proto.ExtensionRange{
|
||||||
{100, 536870911},
|
{100, 536870911},
|
||||||
@ -584,7 +641,7 @@ type KnownTypes struct {
|
|||||||
func (m *KnownTypes) Reset() { *m = KnownTypes{} }
|
func (m *KnownTypes) Reset() { *m = KnownTypes{} }
|
||||||
func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
|
func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
|
||||||
func (*KnownTypes) ProtoMessage() {}
|
func (*KnownTypes) ProtoMessage() {}
|
||||||
func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
|
func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
|
||||||
|
|
||||||
func (m *KnownTypes) GetAn() *google_protobuf.Any {
|
func (m *KnownTypes) GetAn() *google_protobuf.Any {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
@ -702,6 +759,7 @@ var E_Name = &proto.ExtensionDesc{
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Simple)(nil), "jsonpb.Simple")
|
proto.RegisterType((*Simple)(nil), "jsonpb.Simple")
|
||||||
|
proto.RegisterType((*NonFinites)(nil), "jsonpb.NonFinites")
|
||||||
proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats")
|
proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats")
|
||||||
proto.RegisterType((*Widget)(nil), "jsonpb.Widget")
|
proto.RegisterType((*Widget)(nil), "jsonpb.Widget")
|
||||||
proto.RegisterType((*Maps)(nil), "jsonpb.Maps")
|
proto.RegisterType((*Maps)(nil), "jsonpb.Maps")
|
||||||
@ -717,73 +775,78 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("test_objects.proto", fileDescriptor1) }
|
func init() { proto.RegisterFile("test_objects.proto", fileDescriptor1) }
|
||||||
|
|
||||||
var fileDescriptor1 = []byte{
|
var fileDescriptor1 = []byte{
|
||||||
// 1085 bytes of a gzipped FileDescriptorProto
|
// 1160 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0xd1, 0x72, 0xdb, 0x44,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x41, 0x73, 0xdb, 0x44,
|
||||||
0x17, 0xc7, 0x2b, 0xc9, 0x92, 0xed, 0x75, 0x9a, 0xfa, 0xdb, 0x49, 0x5b, 0xc5, 0x5f, 0x00, 0x8d,
|
0x14, 0xc7, 0x23, 0xc9, 0x92, 0xed, 0x75, 0x92, 0x9a, 0x6d, 0xda, 0x2a, 0x26, 0x80, 0xc6, 0x94,
|
||||||
0x29, 0x45, 0x14, 0xea, 0x0e, 0x8a, 0xc7, 0xc3, 0x14, 0x6e, 0x92, 0xc6, 0x50, 0x86, 0xa6, 0xcc,
|
0x22, 0x0a, 0x75, 0x07, 0xc7, 0xe3, 0x61, 0x0a, 0x97, 0xa4, 0x71, 0x29, 0x43, 0x13, 0x98, 0x4d,
|
||||||
0x6c, 0x1a, 0x7a, 0xe9, 0x91, 0xe3, 0x8d, 0xab, 0x22, 0x6b, 0x3d, 0xbb, 0xab, 0xa4, 0x1e, 0xb8,
|
0x43, 0x8f, 0x1e, 0x39, 0x5a, 0xbb, 0x2a, 0xf2, 0xae, 0x67, 0x77, 0x95, 0xd4, 0x03, 0x87, 0x9c,
|
||||||
0xc8, 0x35, 0xd7, 0xbc, 0x02, 0x3c, 0x02, 0x17, 0x3c, 0x1d, 0x73, 0xce, 0x4a, 0x56, 0x62, 0xc7,
|
0x39, 0x32, 0x7c, 0x05, 0xf8, 0x08, 0x1c, 0xf8, 0x74, 0xcc, 0xdb, 0x95, 0xac, 0xc4, 0x8e, 0x4f,
|
||||||
0x57, 0xf1, 0xd1, 0xf9, 0x9f, 0x7f, 0x76, 0x7f, 0x7b, 0x76, 0x0f, 0xa1, 0x9a, 0x2b, 0x3d, 0x12,
|
0xf1, 0x7b, 0xef, 0xff, 0xfe, 0x59, 0xed, 0x6f, 0x77, 0x1f, 0xc2, 0x8a, 0x4a, 0x35, 0xe4, 0xa3,
|
||||||
0xe3, 0xf7, 0xfc, 0x4c, 0xab, 0xde, 0x5c, 0x0a, 0x2d, 0xa8, 0xf7, 0x5e, 0x89, 0x6c, 0x3e, 0xee,
|
0x77, 0xf4, 0x5c, 0xc9, 0xce, 0x4c, 0x70, 0xc5, 0xb1, 0xf7, 0x4e, 0x72, 0x36, 0x1b, 0xb5, 0x76,
|
||||||
0xec, 0x4e, 0x85, 0x98, 0xa6, 0xfc, 0x19, 0x7e, 0x1d, 0xe7, 0xe7, 0xcf, 0xe2, 0x6c, 0x61, 0x24,
|
0x27, 0x9c, 0x4f, 0x52, 0xfa, 0x54, 0x67, 0x47, 0xd9, 0xf8, 0x69, 0xc4, 0xe6, 0x46, 0xd2, 0xfa,
|
||||||
0x9d, 0x8f, 0x57, 0x53, 0x93, 0x5c, 0xc6, 0x3a, 0x11, 0x59, 0x91, 0xdf, 0x5b, 0xcd, 0x2b, 0x2d,
|
0x78, 0xb9, 0x14, 0x67, 0x22, 0x52, 0x09, 0x67, 0x79, 0x7d, 0x6f, 0xb9, 0x2e, 0x95, 0xc8, 0xce,
|
||||||
0xf3, 0x33, 0x5d, 0x64, 0x3f, 0x59, 0xcd, 0xea, 0x64, 0xc6, 0x95, 0x8e, 0x67, 0xf3, 0x4d, 0xf6,
|
0x55, 0x5e, 0xfd, 0x64, 0xb9, 0xaa, 0x92, 0x29, 0x95, 0x2a, 0x9a, 0xce, 0xd6, 0xd9, 0x5f, 0x8a,
|
||||||
0x97, 0x32, 0x9e, 0xcf, 0xb9, 0x2c, 0x56, 0xd8, 0xfd, 0xcb, 0x26, 0xde, 0x49, 0x32, 0x9b, 0xa7,
|
0x68, 0x36, 0xa3, 0x22, 0x5f, 0x61, 0xfb, 0x6f, 0x1b, 0x79, 0xa7, 0xc9, 0x74, 0x96, 0x52, 0x7c,
|
||||||
0x9c, 0xde, 0x27, 0x9e, 0x18, 0x8d, 0x85, 0x48, 0x7d, 0x2b, 0xb0, 0xc2, 0x06, 0x73, 0xc5, 0xa1,
|
0x0f, 0x79, 0x7c, 0x38, 0xe2, 0x3c, 0xf5, 0xad, 0xc0, 0x0a, 0x6b, 0xc4, 0xe5, 0x87, 0x9c, 0xa7,
|
||||||
0x10, 0x29, 0x7d, 0x48, 0xea, 0x62, 0x94, 0x64, 0x7a, 0x3f, 0xf2, 0xed, 0xc0, 0x0a, 0x5d, 0xe6,
|
0xf8, 0x01, 0xaa, 0xf2, 0x61, 0xc2, 0xd4, 0x7e, 0xd7, 0xb7, 0x03, 0x2b, 0x74, 0x89, 0xc7, 0x7f,
|
||||||
0x89, 0x1f, 0x21, 0x5a, 0x26, 0x06, 0x7d, 0xdf, 0x09, 0xac, 0xd0, 0x31, 0x89, 0x41, 0x9f, 0xee,
|
0x80, 0x68, 0x51, 0xe8, 0xf7, 0x7c, 0x27, 0xb0, 0x42, 0xc7, 0x14, 0xfa, 0x3d, 0xbc, 0x8b, 0x6a,
|
||||||
0x92, 0x86, 0x18, 0xe5, 0xa6, 0xa4, 0x16, 0x58, 0xe1, 0x5d, 0x56, 0x17, 0xa7, 0x18, 0x56, 0xa9,
|
0x7c, 0x98, 0x99, 0x96, 0x4a, 0x60, 0x85, 0x5b, 0xa4, 0xca, 0xcf, 0x74, 0x58, 0x96, 0xfa, 0x3d,
|
||||||
0x41, 0xdf, 0x77, 0x03, 0x2b, 0xac, 0x15, 0xa9, 0xb2, 0x4a, 0x99, 0x2a, 0x2f, 0xb0, 0xc2, 0xff,
|
0xdf, 0x0d, 0xac, 0xb0, 0x92, 0x97, 0x8a, 0x2e, 0x69, 0xba, 0xbc, 0xc0, 0x0a, 0x3f, 0x20, 0x55,
|
||||||
0xb1, 0xba, 0x38, 0xb9, 0x56, 0xa5, 0x4c, 0x55, 0x3d, 0xb0, 0x42, 0x5a, 0xa4, 0x06, 0x7d, 0xb3,
|
0x7e, 0x7a, 0xad, 0x4b, 0x9a, 0xae, 0x6a, 0x60, 0x85, 0x38, 0x2f, 0xf5, 0x7b, 0x66, 0x11, 0xe3,
|
||||||
0x88, 0xf3, 0x54, 0xc4, 0xda, 0x6f, 0x04, 0x56, 0x68, 0x33, 0x4f, 0x7c, 0x0f, 0x91, 0xa9, 0x99,
|
0x94, 0x47, 0xca, 0xaf, 0x05, 0x56, 0x68, 0x13, 0x8f, 0xbf, 0x80, 0xc8, 0xf4, 0xc4, 0x3c, 0x1b,
|
||||||
0x88, 0x7c, 0x9c, 0x72, 0xbf, 0x19, 0x58, 0xa1, 0xc5, 0xea, 0xe2, 0x08, 0xc3, 0xc2, 0x4e, 0xcb,
|
0xa5, 0xd4, 0xaf, 0x07, 0x56, 0x68, 0x91, 0x2a, 0x3f, 0xd2, 0x61, 0x6e, 0xa7, 0x44, 0xc2, 0x26,
|
||||||
0x24, 0x9b, 0xfa, 0x24, 0xb0, 0xc2, 0x26, 0xd8, 0x61, 0x68, 0xec, 0xc6, 0x0b, 0xcd, 0x95, 0xdf,
|
0x3e, 0x0a, 0xac, 0xb0, 0x0e, 0x76, 0x3a, 0x34, 0x76, 0xa3, 0xb9, 0xa2, 0xd2, 0x6f, 0x04, 0x56,
|
||||||
0x0a, 0xac, 0x70, 0x8b, 0x79, 0xe2, 0x10, 0xa2, 0xee, 0xdf, 0x36, 0xa9, 0x33, 0x3e, 0xe7, 0xb1,
|
0xb8, 0x49, 0x3c, 0x7e, 0x08, 0x51, 0xfb, 0x4f, 0x0b, 0xa1, 0x13, 0xce, 0x5e, 0x24, 0x2c, 0x51,
|
||||||
0x56, 0x00, 0x4a, 0x96, 0xa0, 0x1c, 0x00, 0x25, 0x4b, 0x50, 0x72, 0x09, 0xca, 0x01, 0x50, 0x72,
|
0x54, 0xe2, 0xbb, 0xc8, 0x1d, 0x0f, 0x59, 0xc4, 0xf4, 0x56, 0xd9, 0xa4, 0x32, 0x3e, 0x89, 0x18,
|
||||||
0x09, 0x4a, 0x2e, 0x41, 0x39, 0x00, 0x4a, 0x2e, 0x41, 0xc9, 0x0a, 0x94, 0x03, 0xa0, 0x64, 0x05,
|
0x6c, 0xe0, 0x78, 0x38, 0x4b, 0xd8, 0x58, 0x6f, 0x94, 0x4d, 0xdc, 0xf1, 0xcf, 0x09, 0x1b, 0x9b,
|
||||||
0x4a, 0x56, 0xa0, 0x1c, 0x00, 0x25, 0x2b, 0x50, 0xb2, 0x02, 0xe5, 0x00, 0x28, 0x79, 0x72, 0xad,
|
0x34, 0x83, 0xb4, 0x93, 0xa7, 0x4f, 0x20, 0x7d, 0x17, 0xb9, 0xb1, 0xb6, 0xa8, 0xe8, 0xd5, 0x55,
|
||||||
0x6a, 0x09, 0xca, 0x01, 0x50, 0xb2, 0x02, 0x25, 0x97, 0xa0, 0x1c, 0x00, 0x25, 0x97, 0xa0, 0x64,
|
0xe2, 0xdc, 0x22, 0x36, 0x16, 0xae, 0xce, 0xba, 0x71, 0x61, 0x11, 0x1b, 0x0b, 0x2f, 0x4f, 0x83,
|
||||||
0x05, 0xca, 0x01, 0x50, 0xb2, 0x02, 0x25, 0x2b, 0x50, 0x0e, 0x80, 0x92, 0x15, 0x28, 0xb9, 0x04,
|
0x45, 0xfb, 0x1f, 0x1b, 0x55, 0x09, 0x9d, 0xd1, 0x48, 0x49, 0x90, 0x88, 0x82, 0x9e, 0x03, 0xf4,
|
||||||
0xe5, 0x00, 0x28, 0x69, 0x40, 0xfd, 0x63, 0x13, 0xef, 0x6d, 0x32, 0x99, 0x72, 0x4d, 0x9f, 0x10,
|
0x44, 0x41, 0x4f, 0x2c, 0xe8, 0x39, 0x40, 0x4f, 0x2c, 0xe8, 0x89, 0x05, 0x3d, 0x07, 0xe8, 0x89,
|
||||||
0xf7, 0x4c, 0xa4, 0x42, 0x62, 0x3f, 0x6d, 0x47, 0x3b, 0x3d, 0x73, 0x1b, 0x7a, 0x26, 0xdd, 0x7b,
|
0x05, 0x3d, 0x51, 0xd2, 0x73, 0x80, 0x9e, 0x28, 0xe9, 0x89, 0x92, 0x9e, 0x03, 0xf4, 0x44, 0x49,
|
||||||
0x01, 0x39, 0x66, 0x24, 0xf4, 0x29, 0xf8, 0x19, 0x35, 0xc0, 0xdb, 0xa4, 0xf6, 0x24, 0xfe, 0xa5,
|
0x4f, 0x94, 0xf4, 0x1c, 0xa0, 0x27, 0x4e, 0xaf, 0x75, 0x2d, 0xe8, 0x39, 0x40, 0x4f, 0x94, 0xf4,
|
||||||
0x8f, 0x89, 0xa7, 0xb0, 0x6b, 0xf1, 0x00, 0x5b, 0xd1, 0x76, 0xa9, 0x36, 0xbd, 0xcc, 0x8a, 0x2c,
|
0xc4, 0x82, 0x9e, 0x03, 0xf4, 0xc4, 0x82, 0x9e, 0x28, 0xe9, 0x39, 0x40, 0x4f, 0x94, 0xf4, 0x44,
|
||||||
0xfd, 0xc2, 0x00, 0x41, 0x25, 0xac, 0x73, 0x5d, 0x09, 0x80, 0x0a, 0x69, 0x5d, 0x9a, 0x03, 0xf6,
|
0x49, 0xcf, 0x01, 0x7a, 0xa2, 0xa4, 0x27, 0x16, 0xf4, 0x1c, 0xa0, 0x27, 0x0c, 0xbd, 0x7f, 0x6d,
|
||||||
0x77, 0xd0, 0xf3, 0x5e, 0xa9, 0x2c, 0xce, 0x9d, 0x95, 0x79, 0xfa, 0x15, 0x69, 0xca, 0x51, 0x29,
|
0xe4, 0xbd, 0x49, 0xe2, 0x09, 0x55, 0xf8, 0x31, 0x72, 0xcf, 0x79, 0xca, 0x85, 0x26, 0xb7, 0xdd,
|
||||||
0xbe, 0x8f, 0xb6, 0x6b, 0xe2, 0x86, 0x2c, 0x7e, 0x75, 0x3f, 0x23, 0xae, 0x59, 0x74, 0x9d, 0x38,
|
0xdd, 0xe9, 0x98, 0x2b, 0xda, 0x31, 0xe5, 0xce, 0x73, 0xa8, 0x11, 0x23, 0xc1, 0x4f, 0xc0, 0xcf,
|
||||||
0x6c, 0x78, 0xd4, 0xbe, 0x43, 0x9b, 0xc4, 0xfd, 0x81, 0x0d, 0x87, 0xaf, 0xdb, 0x16, 0x6d, 0x90,
|
0xa8, 0x61, 0xf3, 0xd6, 0xa9, 0x3d, 0xa1, 0xff, 0xe2, 0x47, 0xc8, 0x93, 0xfa, 0x2a, 0xe9, 0x53,
|
||||||
0xda, 0xe1, 0xab, 0xd3, 0x61, 0xdb, 0xee, 0xfe, 0x69, 0x93, 0xda, 0x71, 0x3c, 0x57, 0xf4, 0x5b,
|
0xd5, 0xe8, 0x6e, 0x17, 0x6a, 0x73, 0xc1, 0x48, 0x5e, 0xc5, 0x5f, 0x98, 0x0d, 0xd1, 0x4a, 0x58,
|
||||||
0xd2, 0x9a, 0x99, 0x76, 0x01, 0xf6, 0xd8, 0x63, 0xad, 0xe8, 0xff, 0xa5, 0x3f, 0x48, 0x7a, 0xc7,
|
0xe7, 0xaa, 0x12, 0x36, 0x28, 0x97, 0x56, 0x85, 0x01, 0xec, 0xef, 0x68, 0xcf, 0x3b, 0x85, 0x32,
|
||||||
0xd8, 0x3f, 0x27, 0x5a, 0x0e, 0x33, 0x2d, 0x17, 0xac, 0x39, 0x2b, 0x63, 0x7a, 0x40, 0xee, 0xce,
|
0xe7, 0x4e, 0x8a, 0x3a, 0xfe, 0x0a, 0xd5, 0xc5, 0xb0, 0x10, 0xdf, 0xd3, 0xb6, 0x2b, 0xe2, 0x9a,
|
||||||
0xb0, 0x37, 0xcb, 0x5d, 0xdb, 0x58, 0xfe, 0xd1, 0xcd, 0x72, 0xe8, 0x57, 0xb3, 0x6d, 0x63, 0xd0,
|
0xc8, 0x7f, 0xb5, 0x3f, 0x43, 0xae, 0x59, 0x74, 0x15, 0x39, 0x64, 0x70, 0xd4, 0xdc, 0xc0, 0x75,
|
||||||
0x9a, 0x55, 0x5f, 0x3a, 0xdf, 0x91, 0xed, 0x9b, 0xfe, 0xb4, 0x4d, 0x9c, 0x5f, 0xf9, 0x02, 0x8f,
|
0xe4, 0x7e, 0x4f, 0x06, 0x83, 0x93, 0xa6, 0x85, 0x6b, 0xa8, 0x72, 0xf8, 0xea, 0x6c, 0xd0, 0xb4,
|
||||||
0xd1, 0x61, 0xf0, 0x93, 0xee, 0x10, 0xf7, 0x22, 0x4e, 0x73, 0x8e, 0x4f, 0x42, 0x93, 0x99, 0xe0,
|
0xdb, 0x7f, 0xd9, 0xa8, 0x72, 0x1c, 0xcd, 0x24, 0xfe, 0x16, 0x35, 0xa6, 0xe6, 0xb8, 0xc0, 0xde,
|
||||||
0xb9, 0xfd, 0x8d, 0xd5, 0x79, 0x4d, 0xda, 0xab, 0xf6, 0xd7, 0xeb, 0x1b, 0xa6, 0xfe, 0xd1, 0xf5,
|
0xeb, 0x33, 0xd6, 0xe8, 0x7e, 0x58, 0xf8, 0x83, 0xa4, 0x73, 0xac, 0xcf, 0xcf, 0xa9, 0x12, 0x03,
|
||||||
0xfa, 0xf5, 0x43, 0xa9, 0xfc, 0xba, 0x7f, 0x58, 0x64, 0xeb, 0x58, 0x4d, 0xdf, 0x26, 0xfa, 0xdd,
|
0xa6, 0xc4, 0x9c, 0xd4, 0xa7, 0x45, 0x8c, 0x0f, 0xd0, 0xd6, 0x54, 0x9f, 0xcd, 0xe2, 0xab, 0x6d,
|
||||||
0xcf, 0x19, 0x17, 0xe7, 0xf4, 0x01, 0x71, 0x75, 0xa2, 0x53, 0x8e, 0x76, 0xcd, 0x97, 0x77, 0x98,
|
0xdd, 0xfe, 0xd1, 0xcd, 0x76, 0x38, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x63, 0x5a, 0x66, 0x5a, 0xdf,
|
||||||
0x09, 0xa9, 0x4f, 0x3c, 0x15, 0xa7, 0xb1, 0x5c, 0xa0, 0xa7, 0xf3, 0xf2, 0x0e, 0x2b, 0x62, 0xda,
|
0xa1, 0xed, 0x9b, 0xfe, 0xb8, 0x89, 0x9c, 0x5f, 0xe9, 0x5c, 0x63, 0x74, 0x08, 0xfc, 0xc4, 0x3b,
|
||||||
0x21, 0xf5, 0x17, 0x22, 0x87, 0x95, 0xe0, 0x43, 0x05, 0x35, 0xe5, 0x07, 0xfa, 0x29, 0xd9, 0x7a,
|
0xc8, 0xbd, 0x88, 0xd2, 0x8c, 0xea, 0xeb, 0x57, 0x27, 0x26, 0x78, 0x66, 0x7f, 0x63, 0xb5, 0x4e,
|
||||||
0x27, 0x66, 0x7c, 0x14, 0x4f, 0x26, 0x92, 0x2b, 0x85, 0xef, 0x15, 0x08, 0x5a, 0xf0, 0xf5, 0xc0,
|
0x50, 0x73, 0xd9, 0xfe, 0x7a, 0x7f, 0xcd, 0xf4, 0x3f, 0xbc, 0xde, 0xbf, 0x0a, 0xa5, 0xf4, 0x6b,
|
||||||
0x7c, 0x3c, 0xac, 0x13, 0x37, 0xcf, 0x12, 0x91, 0x75, 0x1f, 0x93, 0x1a, 0xe3, 0x71, 0x5a, 0x6d,
|
0xff, 0x61, 0xa1, 0xcd, 0x63, 0x39, 0x79, 0x93, 0xa8, 0xb7, 0x3f, 0x31, 0xca, 0xc7, 0xf8, 0x3e,
|
||||||
0xdf, 0xc2, 0x97, 0xc5, 0x04, 0x4f, 0x1a, 0x8d, 0x49, 0xfb, 0xea, 0xea, 0xea, 0xca, 0xee, 0x5e,
|
0x72, 0x55, 0xa2, 0x52, 0xaa, 0xed, 0xea, 0x2f, 0x37, 0x88, 0x09, 0xb1, 0x8f, 0x3c, 0x19, 0xa5,
|
||||||
0xc2, 0x7f, 0x84, 0x9d, 0x7c, 0xa0, 0x7b, 0xa4, 0x99, 0xcc, 0xe2, 0x69, 0x92, 0xc1, 0xca, 0x8c,
|
0x91, 0x98, 0x6b, 0x4f, 0xe7, 0xe5, 0x06, 0xc9, 0x63, 0xdc, 0x42, 0xd5, 0xe7, 0x3c, 0x83, 0x95,
|
||||||
0xbc, 0xfa, 0x50, 0x95, 0x44, 0x47, 0x64, 0x5b, 0xf2, 0x38, 0x1d, 0xf1, 0x0f, 0x9a, 0x67, 0x2a,
|
0xe8, 0x67, 0x01, 0x7a, 0x8a, 0x04, 0xfe, 0x14, 0x6d, 0xbe, 0xe5, 0x53, 0x3a, 0x8c, 0xe2, 0x58,
|
||||||
0x11, 0x19, 0xdd, 0xaa, 0x5a, 0x2a, 0x4e, 0xfd, 0xdf, 0x6e, 0xf6, 0x64, 0x61, 0xcf, 0xee, 0x42,
|
0x50, 0x29, 0xf5, 0x0b, 0x01, 0x82, 0x06, 0x64, 0x0f, 0x4c, 0xf2, 0xb0, 0x8a, 0xdc, 0x8c, 0x25,
|
||||||
0xd1, 0xb0, 0xac, 0xe9, 0xfe, 0xeb, 0x12, 0xf2, 0x53, 0x26, 0x2e, 0xb3, 0x37, 0x8b, 0x39, 0x57,
|
0x9c, 0xb5, 0x1f, 0xa1, 0x0a, 0xa1, 0x51, 0x5a, 0x7e, 0xbe, 0x65, 0xde, 0x08, 0x1d, 0x3c, 0xae,
|
||||||
0xf4, 0x11, 0xb1, 0xe3, 0xcc, 0xdf, 0xc6, 0xd2, 0x9d, 0x9e, 0x19, 0x05, 0xbd, 0x72, 0x14, 0xf4,
|
0xd5, 0xe2, 0xe6, 0xd5, 0xd5, 0xd5, 0x95, 0xdd, 0xbe, 0x84, 0xff, 0x08, 0x5f, 0xf2, 0x1e, 0xef,
|
||||||
0x0e, 0xb2, 0x05, 0xb3, 0xe3, 0x8c, 0x7e, 0x49, 0x9c, 0x49, 0x6e, 0x6e, 0x69, 0x2b, 0xda, 0x5d,
|
0xa1, 0x7a, 0x32, 0x8d, 0x26, 0x09, 0x83, 0x95, 0x19, 0x79, 0x99, 0x28, 0x5b, 0xba, 0x47, 0x68,
|
||||||
0x93, 0x1d, 0x15, 0x03, 0x89, 0x81, 0x8a, 0x7e, 0x4e, 0x6c, 0xa5, 0xfd, 0x2d, 0xd4, 0x3e, 0x5c,
|
0x5b, 0xd0, 0x28, 0x1d, 0xd2, 0xf7, 0x8a, 0x32, 0x99, 0x70, 0x86, 0x37, 0xcb, 0x23, 0x15, 0xa5,
|
||||||
0xd3, 0x9e, 0xe0, 0x70, 0x62, 0xb6, 0x82, 0xdb, 0x6f, 0x6b, 0x55, 0x9c, 0x6f, 0x67, 0x4d, 0xf8,
|
0xfe, 0x6f, 0x37, 0xcf, 0x64, 0x6e, 0x4f, 0xb6, 0xa0, 0x69, 0x50, 0xf4, 0xb4, 0xff, 0x73, 0x11,
|
||||||
0xa6, 0x9c, 0x53, 0xcc, 0xd6, 0x0a, 0xb4, 0xe9, 0x85, 0x7f, 0x6f, 0x83, 0xf6, 0x55, 0xa2, 0xf4,
|
0xfa, 0x91, 0xf1, 0x4b, 0xf6, 0x7a, 0x3e, 0xa3, 0x12, 0x3f, 0x44, 0x76, 0xc4, 0xfc, 0x6d, 0xdd,
|
||||||
0x2f, 0x40, 0x98, 0xd9, 0xe9, 0x05, 0x0d, 0x89, 0x73, 0x11, 0xa7, 0x7e, 0x1b, 0xc5, 0x0f, 0xd6,
|
0xba, 0xd3, 0x31, 0xf3, 0xa9, 0x53, 0xcc, 0xa7, 0xce, 0x01, 0x9b, 0x13, 0x3b, 0x62, 0xf8, 0x4b,
|
||||||
0xc4, 0x46, 0x08, 0x12, 0xda, 0x23, 0xce, 0x64, 0x9c, 0xe2, 0x99, 0xb7, 0xa2, 0xbd, 0xf5, 0x7d,
|
0xe4, 0xc4, 0x99, 0xb9, 0xa5, 0x8d, 0xee, 0xee, 0x8a, 0xec, 0x28, 0x9f, 0x92, 0x04, 0x54, 0xf8,
|
||||||
0xe1, 0x23, 0x57, 0xe8, 0x27, 0xe3, 0x94, 0x3e, 0x25, 0xce, 0x79, 0xaa, 0xb1, 0x05, 0xe0, 0xc2,
|
0x73, 0x64, 0x4b, 0xe5, 0x6f, 0x6a, 0xed, 0x83, 0x15, 0xed, 0xa9, 0x9e, 0x98, 0xc4, 0x96, 0x70,
|
||||||
0xad, 0xea, 0xf1, 0xb9, 0x2c, 0xe4, 0xe7, 0xa9, 0x06, 0x79, 0x52, 0x8c, 0xb1, 0xdb, 0xe4, 0x78,
|
0xfb, 0x6d, 0x25, 0x73, 0xbe, 0xad, 0x15, 0xe1, 0xeb, 0x62, 0x78, 0x12, 0x5b, 0x49, 0xd0, 0xa6,
|
||||||
0x85, 0x0a, 0x79, 0x32, 0xe8, 0xc3, 0x6a, 0xf2, 0x41, 0x1f, 0x47, 0xdb, 0x6d, 0xab, 0x39, 0xbd,
|
0x17, 0xfe, 0x9d, 0x35, 0xda, 0x57, 0x89, 0x54, 0xbf, 0xc0, 0x0e, 0x13, 0x3b, 0xbd, 0xc0, 0x21,
|
||||||
0xae, 0xcf, 0x07, 0x7d, 0xb4, 0xdf, 0x8f, 0x70, 0xde, 0x6d, 0xb0, 0xdf, 0x8f, 0x4a, 0xfb, 0xfd,
|
0x72, 0x2e, 0xa2, 0xd4, 0x6f, 0x6a, 0xf1, 0xfd, 0x15, 0xb1, 0x11, 0x82, 0x04, 0x77, 0x90, 0x13,
|
||||||
0x08, 0xed, 0xf7, 0x23, 0x1c, 0x82, 0x9b, 0xec, 0x97, 0xfa, 0x1c, 0xf5, 0x35, 0x1c, 0x61, 0xcd,
|
0x8f, 0x52, 0xcd, 0xbc, 0xd1, 0xdd, 0x5b, 0xfd, 0x2e, 0xfd, 0xc8, 0xe5, 0xfa, 0x78, 0x94, 0xe2,
|
||||||
0x0d, 0xd0, 0xe1, 0x0e, 0x1b, 0x39, 0xea, 0xc0, 0x1f, 0x5e, 0x23, 0xb2, 0xc1, 0xdf, 0x8c, 0x85,
|
0x27, 0xc8, 0x19, 0xa7, 0x4a, 0x1f, 0x01, 0xb8, 0x70, 0xcb, 0x7a, 0xfd, 0x5c, 0xe6, 0xf2, 0x71,
|
||||||
0xc2, 0x5f, 0x69, 0x49, 0xbf, 0x26, 0x6e, 0x35, 0x47, 0x6f, 0xdb, 0x00, 0x8e, 0x0b, 0x53, 0x60,
|
0xaa, 0x40, 0x9e, 0xe4, 0xb3, 0xf5, 0x36, 0xb9, 0xbe, 0x42, 0xb9, 0x3c, 0xe9, 0xf7, 0x60, 0x35,
|
||||||
0x94, 0xcf, 0x03, 0x52, 0xcb, 0xe2, 0x19, 0x5f, 0x69, 0xfc, 0xdf, 0xf1, 0x85, 0xc1, 0xcc, 0x7f,
|
0x59, 0xbf, 0xa7, 0xa7, 0xca, 0x6d, 0xab, 0x39, 0xbb, 0xae, 0xcf, 0xfa, 0x3d, 0x6d, 0xbf, 0xdf,
|
||||||
0x01, 0x00, 0x00, 0xff, 0xff, 0x46, 0x96, 0x41, 0x24, 0x64, 0x09, 0x00, 0x00,
|
0xd5, 0x43, 0x78, 0x8d, 0xfd, 0x7e, 0xb7, 0xb0, 0xdf, 0xef, 0x6a, 0xfb, 0xfd, 0xae, 0x9e, 0xcc,
|
||||||
|
0xeb, 0xec, 0x17, 0xfa, 0x4c, 0xeb, 0x2b, 0x7a, 0x84, 0xd5, 0xd7, 0x6c, 0x3a, 0xdc, 0x61, 0x23,
|
||||||
|
0xd7, 0x3a, 0xf0, 0x87, 0xd7, 0x08, 0xad, 0xf1, 0x37, 0x63, 0x21, 0xf7, 0x97, 0x4a, 0xe0, 0xaf,
|
||||||
|
0x91, 0x5b, 0x0e, 0xf7, 0xdb, 0x3e, 0x40, 0x8f, 0x0b, 0xd3, 0x60, 0x94, 0xcf, 0x02, 0x54, 0x61,
|
||||||
|
0xd1, 0x94, 0x2e, 0x1d, 0xfc, 0xdf, 0xf5, 0x0b, 0xa3, 0x2b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
|
||||||
|
0xd5, 0x39, 0x32, 0x09, 0xf9, 0x09, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
10
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto
generated
vendored
10
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto
generated
vendored
@ -54,6 +54,16 @@ message Simple {
|
|||||||
optional bytes o_bytes = 11;
|
optional bytes o_bytes = 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test message for holding special non-finites primitives.
|
||||||
|
message NonFinites {
|
||||||
|
optional float f_nan = 1;
|
||||||
|
optional float f_pinf = 2;
|
||||||
|
optional float f_ninf = 3;
|
||||||
|
optional double d_nan = 4;
|
||||||
|
optional double d_pinf = 5;
|
||||||
|
optional double d_ninf = 6;
|
||||||
|
}
|
||||||
|
|
||||||
// Test message for holding repeated primitives.
|
// Test message for holding repeated primitives.
|
||||||
message Repeats {
|
message Repeats {
|
||||||
repeated bool r_bool = 1;
|
repeated bool r_bool = 1;
|
||||||
|
2
vendor/github.com/golang/protobuf/proto/decode_test.go
generated
vendored
2
vendor/github.com/golang/protobuf/proto/decode_test.go
generated
vendored
@ -29,6 +29,8 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// +build go1.7
|
||||||
|
|
||||||
package proto_test
|
package proto_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
2
vendor/github.com/golang/protobuf/proto/encode_test.go
generated
vendored
2
vendor/github.com/golang/protobuf/proto/encode_test.go
generated
vendored
@ -29,6 +29,8 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// +build go1.7
|
||||||
|
|
||||||
package proto_test
|
package proto_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
1
vendor/github.com/golang/protobuf/proto/lib.go
generated
vendored
1
vendor/github.com/golang/protobuf/proto/lib.go
generated
vendored
@ -73,7 +73,6 @@ for a protocol buffer variable v:
|
|||||||
When the .proto file specifies `syntax="proto3"`, there are some differences:
|
When the .proto file specifies `syntax="proto3"`, there are some differences:
|
||||||
|
|
||||||
- Non-repeated fields of non-message type are values instead of pointers.
|
- Non-repeated fields of non-message type are values instead of pointers.
|
||||||
- Getters are only generated for message and oneof fields.
|
|
||||||
- Enum types do not get an Enum method.
|
- Enum types do not get an Enum method.
|
||||||
|
|
||||||
The simplest way to describe this is to see an example.
|
The simplest way to describe this is to see an example.
|
||||||
|
5
vendor/github.com/golang/protobuf/proto/testdata/test.pb.go
generated
vendored
5
vendor/github.com/golang/protobuf/proto/testdata/test.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: test.proto
|
// source: test.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package testdata is a generated protocol buffer package.
|
Package testdata is a generated protocol buffer package.
|
||||||
@ -3866,7 +3865,7 @@ func init() { proto.RegisterFile("test.proto", fileDescriptor0) }
|
|||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 4453 bytes of a gzipped FileDescriptorProto
|
// 4453 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48,
|
||||||
0x7a, 0x37, 0xc0, 0xfd, 0x23, 0x25, 0x42, 0x65, 0xb5, 0x9b, 0x96, 0xbc, 0xc0, 0x9c, 0xe9, 0x6e,
|
0x7a, 0x37, 0xc0, 0xfd, 0x23, 0x25, 0x42, 0x65, 0xb5, 0x9b, 0x96, 0xbc, 0xc0, 0x9c, 0xe9, 0x6e,
|
||||||
0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xca, 0x7a, 0x63, 0x89, 0x0a,
|
0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xca, 0x7a, 0x63, 0x89, 0x0a,
|
||||||
0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x44, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52,
|
0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x44, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52,
|
||||||
|
7
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile
generated
vendored
7
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile
generated
vendored
@ -32,8 +32,5 @@
|
|||||||
# Not stored here, but descriptor.proto is in https://github.com/google/protobuf/
|
# Not stored here, but descriptor.proto is in https://github.com/google/protobuf/
|
||||||
# at src/google/protobuf/descriptor.proto
|
# at src/google/protobuf/descriptor.proto
|
||||||
regenerate:
|
regenerate:
|
||||||
echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
|
@echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
|
||||||
protoc --go_out=. -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/descriptor.proto && \
|
protoc --go_out=../../../../.. -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto
|
||||||
sed 's,^package google_protobuf,package descriptor,' google/protobuf/descriptor.pb.go > \
|
|
||||||
$(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go && \
|
|
||||||
rm -f google/protobuf/descriptor.pb.go
|
|
||||||
|
381
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go
generated
vendored
381
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/descriptor.proto
|
// source: google/protobuf/descriptor.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package descriptor is a generated protocol buffer package.
|
Package descriptor is a generated protocol buffer package.
|
||||||
@ -65,6 +64,10 @@ const (
|
|||||||
FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7
|
FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7
|
||||||
FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8
|
FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8
|
||||||
FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9
|
FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9
|
||||||
|
// Tag-delimited aggregate.
|
||||||
|
// Group type is deprecated and not supported in proto3. However, Proto3
|
||||||
|
// implementations should still be able to parse the group wire format and
|
||||||
|
// treat group fields as unknown fields.
|
||||||
FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10
|
FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10
|
||||||
FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11
|
FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11
|
||||||
// New in version 2.
|
// New in version 2.
|
||||||
@ -293,6 +296,48 @@ func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error {
|
|||||||
}
|
}
|
||||||
func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1} }
|
func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1} }
|
||||||
|
|
||||||
|
// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
|
||||||
|
// or neither? HTTP based RPC implementation may choose GET verb for safe
|
||||||
|
// methods, and PUT verb for idempotent methods instead of the default POST.
|
||||||
|
type MethodOptions_IdempotencyLevel int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0
|
||||||
|
MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1
|
||||||
|
MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
var MethodOptions_IdempotencyLevel_name = map[int32]string{
|
||||||
|
0: "IDEMPOTENCY_UNKNOWN",
|
||||||
|
1: "NO_SIDE_EFFECTS",
|
||||||
|
2: "IDEMPOTENT",
|
||||||
|
}
|
||||||
|
var MethodOptions_IdempotencyLevel_value = map[string]int32{
|
||||||
|
"IDEMPOTENCY_UNKNOWN": 0,
|
||||||
|
"NO_SIDE_EFFECTS": 1,
|
||||||
|
"IDEMPOTENT": 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {
|
||||||
|
p := new(MethodOptions_IdempotencyLevel)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
func (x MethodOptions_IdempotencyLevel) String() string {
|
||||||
|
return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))
|
||||||
|
}
|
||||||
|
func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {
|
||||||
|
value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*x = MethodOptions_IdempotencyLevel(value)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor0, []int{16, 0}
|
||||||
|
}
|
||||||
|
|
||||||
// The protocol compiler can output a FileDescriptorSet containing the .proto
|
// The protocol compiler can output a FileDescriptorSet containing the .proto
|
||||||
// files it parses.
|
// files it parses.
|
||||||
type FileDescriptorSet struct {
|
type FileDescriptorSet struct {
|
||||||
@ -942,6 +987,14 @@ type FileOptions struct {
|
|||||||
ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"`
|
ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"`
|
||||||
// Namespace for generated classes; defaults to the package.
|
// Namespace for generated classes; defaults to the package.
|
||||||
CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"`
|
CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"`
|
||||||
|
// By default Swift generators will take the proto package and CamelCase it
|
||||||
|
// replacing '.' with underscore and use that to prefix the types/symbols
|
||||||
|
// defined. When this options is provided, they will use this value instead
|
||||||
|
// to prefix the types/symbols defined.
|
||||||
|
SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"`
|
||||||
|
// Sets the php class prefix which is prepended to all php generated classes
|
||||||
|
// from this .proto. Default is empty.
|
||||||
|
PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"`
|
||||||
// The parser stores options it doesn't recognize here. See above.
|
// The parser stores options it doesn't recognize here. See above.
|
||||||
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
|
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
|
||||||
proto.XXX_InternalExtensions `json:"-"`
|
proto.XXX_InternalExtensions `json:"-"`
|
||||||
@ -1068,6 +1121,20 @@ func (m *FileOptions) GetCsharpNamespace() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *FileOptions) GetSwiftPrefix() string {
|
||||||
|
if m != nil && m.SwiftPrefix != nil {
|
||||||
|
return *m.SwiftPrefix
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *FileOptions) GetPhpClassPrefix() string {
|
||||||
|
if m != nil && m.PhpClassPrefix != nil {
|
||||||
|
return *m.PhpClassPrefix
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption {
|
func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.UninterpretedOption
|
return m.UninterpretedOption
|
||||||
@ -1482,6 +1549,7 @@ type MethodOptions struct {
|
|||||||
// for the method, or it will be completely ignored; in the very least,
|
// for the method, or it will be completely ignored; in the very least,
|
||||||
// this is a formalization for deprecating methods.
|
// this is a formalization for deprecating methods.
|
||||||
Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
|
Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
|
||||||
|
IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"`
|
||||||
// The parser stores options it doesn't recognize here. See above.
|
// The parser stores options it doesn't recognize here. See above.
|
||||||
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
|
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
|
||||||
proto.XXX_InternalExtensions `json:"-"`
|
proto.XXX_InternalExtensions `json:"-"`
|
||||||
@ -1502,6 +1570,7 @@ func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Default_MethodOptions_Deprecated bool = false
|
const Default_MethodOptions_Deprecated bool = false
|
||||||
|
const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN
|
||||||
|
|
||||||
func (m *MethodOptions) GetDeprecated() bool {
|
func (m *MethodOptions) GetDeprecated() bool {
|
||||||
if m != nil && m.Deprecated != nil {
|
if m != nil && m.Deprecated != nil {
|
||||||
@ -1510,6 +1579,13 @@ func (m *MethodOptions) GetDeprecated() bool {
|
|||||||
return Default_MethodOptions_Deprecated
|
return Default_MethodOptions_Deprecated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {
|
||||||
|
if m != nil && m.IdempotencyLevel != nil {
|
||||||
|
return *m.IdempotencyLevel
|
||||||
|
}
|
||||||
|
return Default_MethodOptions_IdempotencyLevel
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
|
func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.UninterpretedOption
|
return m.UninterpretedOption
|
||||||
@ -1912,154 +1988,165 @@ func init() {
|
|||||||
proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
|
proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
|
||||||
proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
|
proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
|
||||||
proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
|
proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
|
||||||
|
proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor0) }
|
func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor0) }
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 2295 bytes of a gzipped FileDescriptorProto
|
// 2460 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0x1b, 0xc7,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x5b, 0x6f, 0xdb, 0xc8,
|
||||||
0x15, 0xcf, 0xf2, 0x9f, 0xc8, 0x47, 0x8a, 0x1a, 0x8d, 0x14, 0x67, 0xad, 0xfc, 0xb1, 0xcc, 0xd8,
|
0x15, 0x5e, 0x5d, 0x2d, 0x1d, 0xc9, 0xf2, 0x78, 0xec, 0x4d, 0x18, 0xef, 0x25, 0x8e, 0xf6, 0x12,
|
||||||
0xb1, 0x6c, 0xb7, 0x74, 0x20, 0xff, 0x89, 0xa3, 0x14, 0x29, 0x28, 0x71, 0xad, 0xd0, 0x90, 0x44,
|
0x6f, 0xd2, 0xc8, 0x0b, 0xe7, 0xb2, 0x59, 0xa7, 0x48, 0x21, 0x4b, 0x8c, 0x57, 0xa9, 0x2c, 0xa9,
|
||||||
0x76, 0x29, 0xb5, 0x4e, 0x2e, 0x8b, 0xd1, 0xee, 0x90, 0x5a, 0x7b, 0x39, 0xbb, 0xdd, 0x5d, 0xda,
|
0x94, 0xdc, 0x4d, 0xf6, 0x85, 0x18, 0x93, 0x23, 0x99, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89, 0xf7,
|
||||||
0x56, 0x4e, 0x06, 0x7a, 0xea, 0xa5, 0xe7, 0xa2, 0x2d, 0x7a, 0xc8, 0x25, 0x40, 0x3f, 0x40, 0x0f,
|
0x29, 0x40, 0x9f, 0x0a, 0xf4, 0x07, 0x14, 0x45, 0xd1, 0x87, 0x7d, 0x59, 0xa0, 0x3f, 0xa0, 0xcf,
|
||||||
0xfd, 0x0a, 0x05, 0x0a, 0xf4, 0x2b, 0x14, 0x05, 0xda, 0x6f, 0xd0, 0x6b, 0x31, 0x33, 0xbb, 0xcb,
|
0xfd, 0x05, 0x05, 0xf6, 0xb9, 0x2f, 0x45, 0x51, 0xa0, 0xfd, 0x07, 0x7d, 0x2d, 0x66, 0x86, 0xa4,
|
||||||
0x5d, 0xfe, 0x89, 0xd5, 0x00, 0x49, 0x7a, 0x12, 0xe7, 0xf7, 0x7e, 0xef, 0xcd, 0x9b, 0x37, 0x6f,
|
0x48, 0x5d, 0x12, 0x77, 0x81, 0xec, 0x3e, 0xd9, 0x73, 0xce, 0x77, 0x0e, 0xcf, 0x9c, 0xf9, 0x66,
|
||||||
0xde, 0xbc, 0x1d, 0xc1, 0xe6, 0xd0, 0x75, 0x87, 0x0e, 0xbd, 0xe3, 0xf9, 0x6e, 0xe8, 0x9e, 0x8e,
|
0xce, 0x99, 0x11, 0x6c, 0x8f, 0x6c, 0x7b, 0x64, 0xd2, 0x5d, 0xc7, 0xb5, 0x7d, 0xfb, 0x64, 0x32,
|
||||||
0x07, 0x77, 0x2c, 0x1a, 0x98, 0xbe, 0xed, 0x85, 0xae, 0xdf, 0x14, 0x18, 0x5e, 0x91, 0x8c, 0x66,
|
0xdc, 0xd5, 0xa9, 0xa7, 0xb9, 0x86, 0xe3, 0xdb, 0x6e, 0x8d, 0xcb, 0xf0, 0x9a, 0x40, 0xd4, 0x42,
|
||||||
0xcc, 0x68, 0x1c, 0xc2, 0xea, 0x23, 0xdb, 0xa1, 0xed, 0x84, 0xd8, 0xa7, 0x21, 0x7e, 0x08, 0x85,
|
0x44, 0xf5, 0x08, 0xd6, 0x1f, 0x18, 0x26, 0x6d, 0x46, 0xc0, 0x3e, 0xf5, 0xf1, 0x5d, 0xc8, 0x0e,
|
||||||
0x81, 0xed, 0x50, 0x55, 0xd9, 0xcc, 0x6f, 0x55, 0xb7, 0xaf, 0x35, 0xa7, 0x94, 0x9a, 0x59, 0x8d,
|
0x0d, 0x93, 0x4a, 0xa9, 0xed, 0xcc, 0x4e, 0x69, 0xef, 0xc3, 0xda, 0x8c, 0x51, 0x2d, 0x69, 0xd1,
|
||||||
0x1e, 0x87, 0x75, 0xa1, 0xd1, 0xf8, 0x67, 0x01, 0xd6, 0xe6, 0x48, 0x31, 0x86, 0x02, 0x23, 0x23,
|
0x63, 0x62, 0x85, 0x5b, 0x54, 0xff, 0x95, 0x85, 0x8d, 0x05, 0x5a, 0x8c, 0x21, 0x6b, 0x91, 0x31,
|
||||||
0x6e, 0x51, 0xd9, 0xaa, 0xe8, 0xe2, 0x37, 0x56, 0x61, 0xc9, 0x23, 0xe6, 0x33, 0x32, 0xa4, 0x6a,
|
0xf3, 0x98, 0xda, 0x29, 0x2a, 0xfc, 0x7f, 0x2c, 0xc1, 0x8a, 0x43, 0xb4, 0xa7, 0x64, 0x44, 0xa5,
|
||||||
0x4e, 0xc0, 0xf1, 0x10, 0xbf, 0x07, 0x60, 0x51, 0x8f, 0x32, 0x8b, 0x32, 0xf3, 0x5c, 0xcd, 0x6f,
|
0x34, 0x17, 0x87, 0x43, 0xfc, 0x3e, 0x80, 0x4e, 0x1d, 0x6a, 0xe9, 0xd4, 0xd2, 0xce, 0xa4, 0xcc,
|
||||||
0xe6, 0xb7, 0x2a, 0x7a, 0x0a, 0xc1, 0xb7, 0x61, 0xd5, 0x1b, 0x9f, 0x3a, 0xb6, 0x69, 0xa4, 0x68,
|
0x76, 0x66, 0xa7, 0xa8, 0xc4, 0x24, 0xf8, 0x3a, 0xac, 0x3b, 0x93, 0x13, 0xd3, 0xd0, 0xd4, 0x18,
|
||||||
0xb0, 0x99, 0xdf, 0x2a, 0xea, 0x48, 0x0a, 0xda, 0x13, 0xf2, 0x0d, 0x58, 0x79, 0x41, 0xc9, 0xb3,
|
0x0c, 0xb6, 0x33, 0x3b, 0x39, 0x05, 0x09, 0x45, 0x73, 0x0a, 0xbe, 0x0a, 0x6b, 0xcf, 0x29, 0x79,
|
||||||
0x34, 0xb5, 0x2a, 0xa8, 0x75, 0x0e, 0xa7, 0x88, 0x7b, 0x50, 0x1b, 0xd1, 0x20, 0x20, 0x43, 0x6a,
|
0x1a, 0x87, 0x96, 0x38, 0xb4, 0xc2, 0xc4, 0x31, 0x60, 0x03, 0xca, 0x63, 0xea, 0x79, 0x64, 0x44,
|
||||||
0x84, 0xe7, 0x1e, 0x55, 0x0b, 0x62, 0xf5, 0x9b, 0x33, 0xab, 0x9f, 0x5e, 0x79, 0x35, 0xd2, 0x3a,
|
0x55, 0xff, 0xcc, 0xa1, 0x52, 0x96, 0xcf, 0x7e, 0x7b, 0x6e, 0xf6, 0xb3, 0x33, 0x2f, 0x05, 0x56,
|
||||||
0x3e, 0xf7, 0x28, 0x6e, 0x41, 0x85, 0xb2, 0xf1, 0x48, 0x5a, 0x28, 0x2e, 0x88, 0x9f, 0xc6, 0xc6,
|
0x83, 0x33, 0x87, 0xe2, 0x3a, 0x14, 0xa9, 0x35, 0x19, 0x0b, 0x0f, 0xb9, 0x25, 0xf9, 0x93, 0xad,
|
||||||
0xa3, 0x69, 0x2b, 0x65, 0xae, 0x16, 0x99, 0x58, 0x0a, 0xa8, 0xff, 0xdc, 0x36, 0xa9, 0x5a, 0x12,
|
0xc9, 0x78, 0xd6, 0x4b, 0x81, 0x99, 0x05, 0x2e, 0x56, 0x3c, 0xea, 0x3e, 0x33, 0x34, 0x2a, 0xe5,
|
||||||
0x06, 0x6e, 0xcc, 0x18, 0xe8, 0x4b, 0xf9, 0xb4, 0x8d, 0x58, 0x0f, 0xef, 0x41, 0x85, 0xbe, 0x0c,
|
0xb9, 0x83, 0xab, 0x73, 0x0e, 0xfa, 0x42, 0x3f, 0xeb, 0x23, 0xb4, 0xc3, 0x0d, 0x28, 0xd2, 0x17,
|
||||||
0x29, 0x0b, 0x6c, 0x97, 0xa9, 0x4b, 0xc2, 0xc8, 0xf5, 0x39, 0xbb, 0x48, 0x1d, 0x6b, 0xda, 0xc4,
|
0x3e, 0xb5, 0x3c, 0xc3, 0xb6, 0xa4, 0x15, 0xee, 0xe4, 0xa3, 0x05, 0xab, 0x48, 0x4d, 0x7d, 0xd6,
|
||||||
0x44, 0x0f, 0x3f, 0x80, 0x25, 0xd7, 0x0b, 0x6d, 0x97, 0x05, 0x6a, 0x79, 0x53, 0xd9, 0xaa, 0x6e,
|
0xc5, 0xd4, 0x0e, 0xdf, 0x81, 0x15, 0xdb, 0xf1, 0x0d, 0xdb, 0xf2, 0xa4, 0xc2, 0x76, 0x6a, 0xa7,
|
||||||
0xbf, 0x33, 0x37, 0x11, 0xba, 0x92, 0xa3, 0xc7, 0x64, 0xdc, 0x01, 0x14, 0xb8, 0x63, 0xdf, 0xa4,
|
0xb4, 0xf7, 0xee, 0x42, 0x22, 0x74, 0x05, 0x46, 0x09, 0xc1, 0xb8, 0x05, 0xc8, 0xb3, 0x27, 0xae,
|
||||||
0x86, 0xe9, 0x5a, 0xd4, 0xb0, 0xd9, 0xc0, 0x55, 0x2b, 0xc2, 0xc0, 0x95, 0xd9, 0x85, 0x08, 0xe2,
|
0x46, 0x55, 0xcd, 0xd6, 0xa9, 0x6a, 0x58, 0x43, 0x5b, 0x2a, 0x72, 0x07, 0x97, 0xe7, 0x27, 0xc2,
|
||||||
0x9e, 0x6b, 0xd1, 0x0e, 0x1b, 0xb8, 0x7a, 0x3d, 0xc8, 0x8c, 0xf1, 0x25, 0x28, 0x05, 0xe7, 0x2c,
|
0x81, 0x0d, 0x5b, 0xa7, 0x2d, 0x6b, 0x68, 0x2b, 0x15, 0x2f, 0x31, 0xc6, 0x17, 0x20, 0xef, 0x9d,
|
||||||
0x24, 0x2f, 0xd5, 0x9a, 0xc8, 0x90, 0x68, 0xd4, 0xf8, 0x4f, 0x11, 0x56, 0x2e, 0x92, 0x62, 0x9f,
|
0x59, 0x3e, 0x79, 0x21, 0x95, 0x39, 0x43, 0x82, 0x51, 0xf5, 0xbf, 0x39, 0x58, 0x3b, 0x0f, 0xc5,
|
||||||
0x40, 0x71, 0xc0, 0x57, 0xa9, 0xe6, 0xfe, 0x97, 0x18, 0x48, 0x9d, 0x6c, 0x10, 0x4b, 0xdf, 0x32,
|
0xee, 0x41, 0x6e, 0xc8, 0x66, 0x29, 0xa5, 0xff, 0x9f, 0x1c, 0x08, 0x9b, 0x64, 0x12, 0xf3, 0x3f,
|
||||||
0x88, 0x2d, 0xa8, 0x32, 0x1a, 0x84, 0xd4, 0x92, 0x19, 0x91, 0xbf, 0x60, 0x4e, 0x81, 0x54, 0x9a,
|
0x30, 0x89, 0x75, 0x28, 0x59, 0xd4, 0xf3, 0xa9, 0x2e, 0x18, 0x91, 0x39, 0x27, 0xa7, 0x40, 0x18,
|
||||||
0x4d, 0xa9, 0xc2, 0xb7, 0x4a, 0xa9, 0x27, 0xb0, 0x92, 0xb8, 0x64, 0xf8, 0x84, 0x0d, 0xe3, 0xdc,
|
0xcd, 0x53, 0x2a, 0xfb, 0x83, 0x28, 0xf5, 0x08, 0xd6, 0xa2, 0x90, 0x54, 0x97, 0x58, 0xa3, 0x90,
|
||||||
0xbc, 0xf3, 0x3a, 0x4f, 0x9a, 0x5a, 0xac, 0xa7, 0x73, 0x35, 0xbd, 0x4e, 0x33, 0x63, 0xdc, 0x06,
|
0x9b, 0xbb, 0xaf, 0x8b, 0xa4, 0x26, 0x87, 0x76, 0x0a, 0x33, 0x53, 0x2a, 0x34, 0x31, 0xc6, 0x4d,
|
||||||
0x70, 0x19, 0x75, 0x07, 0x86, 0x45, 0x4d, 0x47, 0x2d, 0x2f, 0x88, 0x52, 0x97, 0x53, 0x66, 0xa2,
|
0x00, 0xdb, 0xa2, 0xf6, 0x50, 0xd5, 0xa9, 0x66, 0x4a, 0x85, 0x25, 0x59, 0xea, 0x32, 0xc8, 0x5c,
|
||||||
0xe4, 0x4a, 0xd4, 0x74, 0xf0, 0xc7, 0x93, 0x54, 0x5b, 0x5a, 0x90, 0x29, 0x87, 0xf2, 0x90, 0xcd,
|
0x96, 0x6c, 0x21, 0xd5, 0x4c, 0xfc, 0xf9, 0x94, 0x6a, 0x2b, 0x4b, 0x98, 0x72, 0x24, 0x36, 0xd9,
|
||||||
0x64, 0xdb, 0x09, 0xd4, 0x7d, 0xca, 0xf3, 0x9e, 0x5a, 0xd1, 0xca, 0x2a, 0xc2, 0x89, 0xe6, 0x6b,
|
0x1c, 0xdb, 0x8e, 0xa1, 0xe2, 0x52, 0xc6, 0x7b, 0xaa, 0x07, 0x33, 0x2b, 0xf2, 0x20, 0x6a, 0xaf,
|
||||||
0x57, 0xa6, 0x47, 0x6a, 0x72, 0x61, 0xcb, 0x7e, 0x7a, 0x88, 0xdf, 0x87, 0x04, 0x30, 0x44, 0x5a,
|
0x9d, 0x99, 0x12, 0x98, 0x89, 0x89, 0xad, 0xba, 0xf1, 0x21, 0xfe, 0x00, 0x22, 0x81, 0xca, 0x69,
|
||||||
0x81, 0xa8, 0x42, 0xb5, 0x18, 0x3c, 0x22, 0x23, 0xba, 0xf1, 0x10, 0xea, 0xd9, 0xf0, 0xe0, 0x75,
|
0x05, 0xfc, 0x14, 0x2a, 0x87, 0xc2, 0x0e, 0x19, 0xd3, 0xad, 0xbb, 0x50, 0x49, 0xa6, 0x07, 0x6f,
|
||||||
0x28, 0x06, 0x21, 0xf1, 0x43, 0x91, 0x85, 0x45, 0x5d, 0x0e, 0x30, 0x82, 0x3c, 0x65, 0x96, 0xa8,
|
0x42, 0xce, 0xf3, 0x89, 0xeb, 0x73, 0x16, 0xe6, 0x14, 0x31, 0xc0, 0x08, 0x32, 0xd4, 0xd2, 0xf9,
|
||||||
0x72, 0x45, 0x9d, 0xff, 0xdc, 0xf8, 0x08, 0x96, 0x33, 0xd3, 0x5f, 0x54, 0xb1, 0xf1, 0xdb, 0x12,
|
0x29, 0x97, 0x53, 0xd8, 0xbf, 0x5b, 0x9f, 0xc1, 0x6a, 0xe2, 0xf3, 0xe7, 0x35, 0xac, 0xfe, 0x3e,
|
||||||
0xac, 0xcf, 0xcb, 0xb9, 0xb9, 0xe9, 0x7f, 0x09, 0x4a, 0x6c, 0x3c, 0x3a, 0xa5, 0xbe, 0x9a, 0x17,
|
0x0f, 0x9b, 0x8b, 0x38, 0xb7, 0x90, 0xfe, 0x17, 0x20, 0x6f, 0x4d, 0xc6, 0x27, 0xd4, 0x95, 0x32,
|
||||||
0x16, 0xa2, 0x11, 0x6e, 0x41, 0xd1, 0x21, 0xa7, 0xd4, 0x51, 0x0b, 0x9b, 0xca, 0x56, 0x7d, 0xfb,
|
0xdc, 0x43, 0x30, 0xc2, 0x75, 0xc8, 0x99, 0xe4, 0x84, 0x9a, 0x52, 0x76, 0x3b, 0xb5, 0x53, 0xd9,
|
||||||
0xf6, 0x85, 0xb2, 0xba, 0x79, 0xc0, 0x55, 0x74, 0xa9, 0x89, 0x3f, 0x85, 0x42, 0x54, 0xe2, 0xb8,
|
0xbb, 0x7e, 0x2e, 0x56, 0xd7, 0xda, 0xcc, 0x44, 0x11, 0x96, 0xf8, 0x3e, 0x64, 0x83, 0x23, 0x8e,
|
||||||
0x85, 0x5b, 0x17, 0xb3, 0xc0, 0x73, 0x51, 0x17, 0x7a, 0xf8, 0x6d, 0xa8, 0xf0, 0xbf, 0x32, 0xb6,
|
0x79, 0xb8, 0x76, 0x3e, 0x0f, 0x8c, 0x8b, 0x0a, 0xb7, 0xc3, 0xef, 0x40, 0x91, 0xfd, 0x15, 0xb9,
|
||||||
0x25, 0xe1, 0x73, 0x99, 0x03, 0x3c, 0xae, 0x78, 0x03, 0xca, 0x22, 0xcd, 0x2c, 0x1a, 0x5f, 0x0d,
|
0xcd, 0xf3, 0x98, 0x0b, 0x4c, 0xc0, 0xf2, 0x8a, 0xb7, 0xa0, 0xc0, 0x69, 0xa6, 0xd3, 0xb0, 0x34,
|
||||||
0xc9, 0x98, 0x6f, 0x8c, 0x45, 0x07, 0x64, 0xec, 0x84, 0xc6, 0x73, 0xe2, 0x8c, 0xa9, 0x48, 0x98,
|
0x44, 0x63, 0xb6, 0x30, 0x3a, 0x1d, 0x92, 0x89, 0xe9, 0xab, 0xcf, 0x88, 0x39, 0xa1, 0x9c, 0x30,
|
||||||
0x8a, 0x5e, 0x8b, 0xc0, 0x9f, 0x73, 0x0c, 0x5f, 0x81, 0xaa, 0xcc, 0x4a, 0x9b, 0x59, 0xf4, 0xa5,
|
0x45, 0xa5, 0x1c, 0x08, 0x7f, 0xcd, 0x64, 0xf8, 0x32, 0x94, 0x04, 0x2b, 0x0d, 0x4b, 0xa7, 0x2f,
|
||||||
0xa8, 0x3e, 0x45, 0x5d, 0x26, 0x6a, 0x87, 0x23, 0x7c, 0xfa, 0xa7, 0x81, 0xcb, 0xe2, 0xad, 0x15,
|
0xf8, 0xe9, 0x93, 0x53, 0x04, 0x51, 0x5b, 0x4c, 0xc2, 0x3e, 0xff, 0xc4, 0xb3, 0xad, 0x70, 0x69,
|
||||||
0x53, 0x70, 0x40, 0x4c, 0xff, 0xd1, 0x74, 0xe1, 0x7b, 0x77, 0xfe, 0xf2, 0xa6, 0x73, 0xb1, 0xf1,
|
0xf9, 0x27, 0x98, 0x80, 0x7f, 0xfe, 0xb3, 0xd9, 0x83, 0xef, 0xbd, 0xc5, 0xd3, 0x9b, 0xe5, 0x62,
|
||||||
0xe7, 0x1c, 0x14, 0xc4, 0x79, 0x5b, 0x81, 0xea, 0xf1, 0xe7, 0x3d, 0xcd, 0x68, 0x77, 0x4f, 0x76,
|
0xf5, 0x2f, 0x69, 0xc8, 0xf2, 0xfd, 0xb6, 0x06, 0xa5, 0xc1, 0xe3, 0x9e, 0xac, 0x36, 0xbb, 0xc7,
|
||||||
0x0f, 0x34, 0xa4, 0xe0, 0x3a, 0x80, 0x00, 0x1e, 0x1d, 0x74, 0x5b, 0xc7, 0x28, 0x97, 0x8c, 0x3b,
|
0x07, 0x6d, 0x19, 0xa5, 0x70, 0x05, 0x80, 0x0b, 0x1e, 0xb4, 0xbb, 0xf5, 0x01, 0x4a, 0x47, 0xe3,
|
||||||
0x47, 0xc7, 0x0f, 0xee, 0xa1, 0x7c, 0xa2, 0x70, 0x22, 0x81, 0x42, 0x9a, 0x70, 0x77, 0x1b, 0x15,
|
0x56, 0x67, 0x70, 0xe7, 0x16, 0xca, 0x44, 0x06, 0xc7, 0x42, 0x90, 0x8d, 0x03, 0x6e, 0xee, 0xa1,
|
||||||
0x31, 0x82, 0x9a, 0x34, 0xd0, 0x79, 0xa2, 0xb5, 0x1f, 0xdc, 0x43, 0xa5, 0x2c, 0x72, 0x77, 0x1b,
|
0x1c, 0x46, 0x50, 0x16, 0x0e, 0x5a, 0x8f, 0xe4, 0xe6, 0x9d, 0x5b, 0x28, 0x9f, 0x94, 0xdc, 0xdc,
|
||||||
0x2d, 0xe1, 0x65, 0xa8, 0x08, 0x64, 0xb7, 0xdb, 0x3d, 0x40, 0xe5, 0xc4, 0x66, 0xff, 0x58, 0xef,
|
0x43, 0x2b, 0x78, 0x15, 0x8a, 0x5c, 0x72, 0xd0, 0xed, 0xb6, 0x51, 0x21, 0xf2, 0xd9, 0x1f, 0x28,
|
||||||
0x1c, 0xed, 0xa3, 0x4a, 0x62, 0x73, 0x5f, 0xef, 0x9e, 0xf4, 0x10, 0x24, 0x16, 0x0e, 0xb5, 0x7e,
|
0xad, 0xce, 0x21, 0x2a, 0x46, 0x3e, 0x0f, 0x95, 0xee, 0x71, 0x0f, 0x41, 0xe4, 0xe1, 0x48, 0xee,
|
||||||
0xbf, 0xb5, 0xaf, 0xa1, 0x6a, 0xc2, 0xd8, 0xfd, 0xfc, 0x58, 0xeb, 0xa3, 0x5a, 0xc6, 0xad, 0xbb,
|
0xf7, 0xeb, 0x87, 0x32, 0x2a, 0x45, 0x88, 0x83, 0xc7, 0x03, 0xb9, 0x8f, 0xca, 0x89, 0xb0, 0x6e,
|
||||||
0xdb, 0x68, 0x39, 0x99, 0x42, 0x3b, 0x3a, 0x39, 0x44, 0x75, 0xbc, 0x0a, 0xcb, 0x72, 0x8a, 0xd8,
|
0xee, 0xa1, 0xd5, 0xe8, 0x13, 0x72, 0xe7, 0xf8, 0x08, 0x55, 0xf0, 0x3a, 0xac, 0x8a, 0x4f, 0x84,
|
||||||
0x89, 0x95, 0x29, 0xe8, 0xc1, 0x3d, 0x84, 0x26, 0x8e, 0x48, 0x2b, 0xab, 0x19, 0xe0, 0xc1, 0x3d,
|
0x41, 0xac, 0xcd, 0x88, 0xee, 0xdc, 0x42, 0x68, 0x1a, 0x88, 0xf0, 0xb2, 0x9e, 0x10, 0xdc, 0xb9,
|
||||||
0x84, 0x1b, 0x7b, 0x50, 0x14, 0xd9, 0x85, 0x31, 0xd4, 0x0f, 0x5a, 0xbb, 0xda, 0x81, 0xd1, 0xed,
|
0x85, 0x70, 0xb5, 0x01, 0x39, 0xce, 0x2e, 0x8c, 0xa1, 0xd2, 0xae, 0x1f, 0xc8, 0x6d, 0xb5, 0xdb,
|
||||||
0x1d, 0x77, 0xba, 0x47, 0xad, 0x03, 0xa4, 0x4c, 0x30, 0x5d, 0xfb, 0xd9, 0x49, 0x47, 0xd7, 0xda,
|
0x1b, 0xb4, 0xba, 0x9d, 0x7a, 0x1b, 0xa5, 0xa6, 0x32, 0x45, 0xfe, 0xd5, 0x71, 0x4b, 0x91, 0x9b,
|
||||||
0x28, 0x97, 0xc6, 0x7a, 0x5a, 0xeb, 0x58, 0x6b, 0xa3, 0x7c, 0xc3, 0x84, 0xf5, 0x79, 0x75, 0x66,
|
0x28, 0x1d, 0x97, 0xf5, 0xe4, 0xfa, 0x40, 0x6e, 0xa2, 0x4c, 0x55, 0x83, 0xcd, 0x45, 0xe7, 0xcc,
|
||||||
0xee, 0xc9, 0x48, 0x6d, 0x71, 0x6e, 0xc1, 0x16, 0x0b, 0x5b, 0x33, 0x5b, 0xfc, 0x95, 0x02, 0x6b,
|
0xc2, 0x9d, 0x11, 0x5b, 0xe2, 0xf4, 0x92, 0x25, 0xe6, 0xbe, 0xe6, 0x96, 0xf8, 0xdb, 0x14, 0x6c,
|
||||||
0x73, 0x6a, 0xed, 0xdc, 0x49, 0x7e, 0x0a, 0x45, 0x99, 0xa2, 0xf2, 0xf6, 0xb9, 0x39, 0xb7, 0x68,
|
0x2c, 0x38, 0x6b, 0x17, 0x7e, 0xe4, 0x17, 0x90, 0x13, 0x14, 0x15, 0xd5, 0xe7, 0x93, 0x85, 0x87,
|
||||||
0x8b, 0x84, 0x9d, 0xb9, 0x81, 0x84, 0x5e, 0xfa, 0x06, 0xce, 0x2f, 0xb8, 0x81, 0xb9, 0x89, 0x19,
|
0x36, 0x27, 0xec, 0x5c, 0x05, 0xe2, 0x76, 0xf1, 0x0a, 0x9c, 0x59, 0x52, 0x81, 0x99, 0x8b, 0xb9,
|
||||||
0x27, 0x7f, 0xa5, 0x80, 0xba, 0xc8, 0xf6, 0x6b, 0x0a, 0x45, 0x2e, 0x53, 0x28, 0x3e, 0x99, 0x76,
|
0x20, 0x7f, 0x93, 0x02, 0x69, 0x99, 0xef, 0xd7, 0x1c, 0x14, 0xe9, 0xc4, 0x41, 0x71, 0x6f, 0x36,
|
||||||
0xe0, 0xea, 0xe2, 0x35, 0xcc, 0x78, 0xf1, 0xb5, 0x02, 0x97, 0xe6, 0x37, 0x2a, 0x73, 0x7d, 0xf8,
|
0x80, 0x2b, 0xcb, 0xe7, 0x30, 0x17, 0xc5, 0x77, 0x29, 0xb8, 0xb0, 0xb8, 0x51, 0x59, 0x18, 0xc3,
|
||||||
0x14, 0x4a, 0x23, 0x1a, 0x9e, 0xb9, 0xf1, 0x65, 0xfd, 0xc1, 0x9c, 0x2b, 0x80, 0x8b, 0xa7, 0x63,
|
0x7d, 0xc8, 0x8f, 0xa9, 0x7f, 0x6a, 0x87, 0xc5, 0xfa, 0xe3, 0x05, 0x25, 0x80, 0xa9, 0x67, 0x73,
|
||||||
0x15, 0x69, 0xa5, 0xef, 0x90, 0xfc, 0xa2, 0x6e, 0x43, 0x7a, 0x33, 0xe3, 0xe9, 0xaf, 0x73, 0xf0,
|
0x15, 0x58, 0xc5, 0x6b, 0x48, 0x66, 0x59, 0xb7, 0x21, 0xa2, 0x99, 0x8b, 0xf4, 0xb7, 0x69, 0x78,
|
||||||
0xe6, 0x5c, 0xe3, 0x73, 0x1d, 0x7d, 0x17, 0xc0, 0x66, 0xde, 0x38, 0x94, 0x17, 0xb2, 0xac, 0x4f,
|
0x7b, 0xa1, 0xf3, 0x85, 0x81, 0xbe, 0x07, 0x60, 0x58, 0xce, 0xc4, 0x17, 0x05, 0x59, 0x9c, 0x4f,
|
||||||
0x15, 0x81, 0x88, 0xb3, 0xcf, 0x6b, 0xcf, 0x38, 0x4c, 0xe4, 0x79, 0x21, 0x07, 0x09, 0x09, 0xc2,
|
0x45, 0x2e, 0xe1, 0x7b, 0x9f, 0x9d, 0x3d, 0x13, 0x3f, 0xd2, 0x67, 0xb8, 0x1e, 0x84, 0x88, 0x03,
|
||||||
0xc3, 0x89, 0xa3, 0x05, 0xe1, 0xe8, 0x7b, 0x0b, 0x56, 0x3a, 0x73, 0xd7, 0x7d, 0x08, 0xc8, 0x74,
|
0xee, 0x4e, 0x03, 0xcd, 0xf2, 0x40, 0xdf, 0x5f, 0x32, 0xd3, 0xb9, 0x5a, 0xf7, 0x29, 0x20, 0xcd,
|
||||||
0x6c, 0xca, 0x42, 0x23, 0x08, 0x7d, 0x4a, 0x46, 0x36, 0x1b, 0x8a, 0x02, 0x5c, 0xde, 0x29, 0x0e,
|
0x34, 0xa8, 0xe5, 0xab, 0x9e, 0xef, 0x52, 0x32, 0x36, 0xac, 0x11, 0x3f, 0x80, 0x0b, 0xfb, 0xb9,
|
||||||
0x88, 0x13, 0x50, 0x7d, 0x45, 0x8a, 0xfb, 0xb1, 0x94, 0x6b, 0x88, 0x5b, 0xc6, 0x4f, 0x69, 0x94,
|
0x21, 0x31, 0x3d, 0xaa, 0xac, 0x09, 0x75, 0x3f, 0xd4, 0x32, 0x0b, 0x5e, 0x65, 0xdc, 0x98, 0x45,
|
||||||
0x32, 0x1a, 0x52, 0x9c, 0x68, 0x34, 0x7e, 0xb3, 0x04, 0xd5, 0x54, 0x5b, 0x87, 0xaf, 0x42, 0xed,
|
0x3e, 0x61, 0x21, 0xd4, 0x91, 0x45, 0xf5, 0xef, 0x2b, 0x50, 0x8a, 0xb5, 0x75, 0xf8, 0x0a, 0x94,
|
||||||
0x29, 0x79, 0x4e, 0x8c, 0xb8, 0x55, 0x97, 0x91, 0xa8, 0x72, 0xac, 0x17, 0xb5, 0xeb, 0x1f, 0xc2,
|
0x9f, 0x90, 0x67, 0x44, 0x0d, 0x5b, 0x75, 0x91, 0x89, 0x12, 0x93, 0xf5, 0x82, 0x76, 0xfd, 0x53,
|
||||||
0xba, 0xa0, 0xb8, 0xe3, 0x90, 0xfa, 0x86, 0xe9, 0x90, 0x20, 0x10, 0x41, 0x2b, 0x0b, 0x2a, 0xe6,
|
0xd8, 0xe4, 0x10, 0x7b, 0xe2, 0x53, 0x57, 0xd5, 0x4c, 0xe2, 0x79, 0x3c, 0x69, 0x05, 0x0e, 0xc5,
|
||||||
0xb2, 0x2e, 0x17, 0xed, 0xc5, 0x12, 0x7c, 0x1f, 0xd6, 0x84, 0xc6, 0x68, 0xec, 0x84, 0xb6, 0xe7,
|
0x4c, 0xd7, 0x65, 0xaa, 0x46, 0xa8, 0xc1, 0xb7, 0x61, 0x83, 0x5b, 0x8c, 0x27, 0xa6, 0x6f, 0x38,
|
||||||
0x50, 0x83, 0x7f, 0x3c, 0x04, 0xa2, 0x10, 0x27, 0x9e, 0xad, 0x72, 0xc6, 0x61, 0x44, 0xe0, 0x1e,
|
0x26, 0x55, 0xd9, 0xe5, 0xc1, 0xe3, 0x07, 0x71, 0x14, 0xd9, 0x3a, 0x43, 0x1c, 0x05, 0x00, 0x16,
|
||||||
0x05, 0xb8, 0x0d, 0xef, 0x0a, 0xb5, 0x21, 0x65, 0xd4, 0x27, 0x21, 0x35, 0xe8, 0x2f, 0xc7, 0xc4,
|
0x91, 0x87, 0x9b, 0xf0, 0x1e, 0x37, 0x1b, 0x51, 0x8b, 0xba, 0xc4, 0xa7, 0x2a, 0xfd, 0x7a, 0x42,
|
||||||
0x09, 0x0c, 0xc2, 0x2c, 0xe3, 0x8c, 0x04, 0x67, 0xea, 0x3a, 0x37, 0xb0, 0x9b, 0x53, 0x15, 0xfd,
|
0x4c, 0x4f, 0x25, 0x96, 0xae, 0x9e, 0x12, 0xef, 0x54, 0xda, 0x64, 0x0e, 0x0e, 0xd2, 0x52, 0x4a,
|
||||||
0x32, 0x27, 0xee, 0x47, 0x3c, 0x4d, 0xd0, 0x5a, 0xcc, 0xfa, 0x8c, 0x04, 0x67, 0x78, 0x07, 0x2e,
|
0xb9, 0xc4, 0x80, 0x87, 0x01, 0x4e, 0xe6, 0xb0, 0xba, 0xa5, 0x7f, 0x41, 0xbc, 0x53, 0xbc, 0x0f,
|
||||||
0x09, 0x2b, 0x41, 0xe8, 0xdb, 0x6c, 0x68, 0x98, 0x67, 0xd4, 0x7c, 0x66, 0x8c, 0xc3, 0xc1, 0x43,
|
0x17, 0xb8, 0x17, 0xcf, 0x77, 0x0d, 0x6b, 0xa4, 0x6a, 0xa7, 0x54, 0x7b, 0xaa, 0x4e, 0xfc, 0xe1,
|
||||||
0xf5, 0xed, 0xf4, 0xfc, 0xc2, 0xc3, 0xbe, 0xe0, 0xec, 0x71, 0xca, 0x49, 0x38, 0x78, 0x88, 0xfb,
|
0x5d, 0xe9, 0x9d, 0xf8, 0xf7, 0x79, 0x84, 0x7d, 0x8e, 0x69, 0x30, 0xc8, 0xb1, 0x3f, 0xbc, 0x8b,
|
||||||
0x50, 0xe3, 0x9b, 0x31, 0xb2, 0xbf, 0xa4, 0xc6, 0xc0, 0xf5, 0xc5, 0xcd, 0x52, 0x9f, 0x73, 0xb2,
|
0xfb, 0x50, 0x66, 0x8b, 0x31, 0x36, 0xbe, 0xa1, 0xea, 0xd0, 0x76, 0x79, 0x65, 0xa9, 0x2c, 0xd8,
|
||||||
0x53, 0x11, 0x6c, 0x76, 0x23, 0x85, 0x43, 0xd7, 0xa2, 0x3b, 0xc5, 0x7e, 0x4f, 0xd3, 0xda, 0x7a,
|
0xd9, 0xb1, 0x0c, 0xd6, 0xba, 0x81, 0xc1, 0x91, 0xad, 0xd3, 0xfd, 0x5c, 0xbf, 0x27, 0xcb, 0x4d,
|
||||||
0x35, 0xb6, 0xf2, 0xc8, 0xf5, 0x79, 0x42, 0x0d, 0xdd, 0x24, 0xc0, 0x55, 0x99, 0x50, 0x43, 0x37,
|
0xa5, 0x14, 0x7a, 0x79, 0x60, 0xbb, 0x8c, 0x50, 0x23, 0x3b, 0x4a, 0x70, 0x49, 0x10, 0x6a, 0x64,
|
||||||
0x0e, 0xef, 0x7d, 0x58, 0x33, 0x4d, 0xb9, 0x66, 0xdb, 0x34, 0xa2, 0x16, 0x3f, 0x50, 0x51, 0x26,
|
0x87, 0xe9, 0xbd, 0x0d, 0x1b, 0x9a, 0x26, 0xe6, 0x6c, 0x68, 0x6a, 0xd0, 0xe2, 0x7b, 0x12, 0x4a,
|
||||||
0x58, 0xa6, 0xb9, 0x2f, 0x09, 0x51, 0x8e, 0x07, 0xf8, 0x63, 0x78, 0x73, 0x12, 0xac, 0xb4, 0xe2,
|
0x24, 0x4b, 0xd3, 0x0e, 0x05, 0x20, 0xe0, 0xb8, 0x87, 0x3f, 0x87, 0xb7, 0xa7, 0xc9, 0x8a, 0x1b,
|
||||||
0xea, 0xcc, 0x2a, 0xa7, 0x55, 0xef, 0xc3, 0x9a, 0x77, 0x3e, 0xab, 0x88, 0x33, 0x33, 0x7a, 0xe7,
|
0xae, 0xcf, 0xcd, 0x72, 0xd6, 0xf4, 0x36, 0x6c, 0x38, 0x67, 0xf3, 0x86, 0x38, 0xf1, 0x45, 0xe7,
|
||||||
0xd3, 0x6a, 0xd7, 0xc5, 0x67, 0x9b, 0x4f, 0x4d, 0x12, 0x52, 0x4b, 0x7d, 0x2b, 0xcd, 0x4e, 0x09,
|
0x6c, 0xd6, 0xec, 0x23, 0x7e, 0x6d, 0x73, 0xa9, 0x46, 0x7c, 0xaa, 0x4b, 0x17, 0xe3, 0xe8, 0x98,
|
||||||
0xf0, 0x1d, 0x40, 0xa6, 0x69, 0x50, 0x46, 0x4e, 0x1d, 0x6a, 0x10, 0x9f, 0x32, 0x12, 0xa8, 0x57,
|
0x02, 0xef, 0x02, 0xd2, 0x34, 0x95, 0x5a, 0xe4, 0xc4, 0xa4, 0x2a, 0x71, 0xa9, 0x45, 0x3c, 0xe9,
|
||||||
0xd2, 0xe4, 0xba, 0x69, 0x6a, 0x42, 0xda, 0x12, 0x42, 0x7c, 0x0b, 0x56, 0xdd, 0xd3, 0xa7, 0xa6,
|
0x72, 0x1c, 0x5c, 0xd1, 0x34, 0x99, 0x6b, 0xeb, 0x5c, 0x89, 0xaf, 0xc1, 0xba, 0x7d, 0xf2, 0x44,
|
||||||
0xcc, 0x2c, 0xc3, 0xf3, 0xe9, 0xc0, 0x7e, 0xa9, 0x5e, 0x13, 0x61, 0x5a, 0xe1, 0x02, 0x91, 0x57,
|
0x13, 0xcc, 0x52, 0x1d, 0x97, 0x0e, 0x8d, 0x17, 0xd2, 0x87, 0x3c, 0x4d, 0x6b, 0x4c, 0xc1, 0x79,
|
||||||
0x3d, 0x01, 0xe3, 0x9b, 0x80, 0xcc, 0xe0, 0x8c, 0xf8, 0x9e, 0xb8, 0xda, 0x03, 0x8f, 0x98, 0x54,
|
0xd5, 0xe3, 0x62, 0xfc, 0x09, 0x20, 0xcd, 0x3b, 0x25, 0xae, 0xc3, 0x4b, 0xbb, 0xe7, 0x10, 0x8d,
|
||||||
0xbd, 0x2e, 0xa9, 0x12, 0x3f, 0x8a, 0x61, 0xfc, 0x04, 0xd6, 0xc7, 0xcc, 0x66, 0x21, 0xf5, 0x3d,
|
0x4a, 0x1f, 0x09, 0xa8, 0x90, 0x77, 0x42, 0x31, 0x63, 0xb6, 0xf7, 0xdc, 0x18, 0xfa, 0xa1, 0xc7,
|
||||||
0x9f, 0xf2, 0x0e, 0x5d, 0x1e, 0x33, 0xf5, 0x5f, 0x4b, 0x0b, 0x7a, 0xec, 0x93, 0x34, 0x5b, 0xee,
|
0xab, 0x82, 0xd9, 0x5c, 0x16, 0x78, 0xdb, 0x01, 0xe4, 0x9c, 0x3a, 0xc9, 0x0f, 0xef, 0x70, 0x58,
|
||||||
0xae, 0xbe, 0x36, 0x9e, 0x05, 0x1b, 0x3b, 0x50, 0x4b, 0x6f, 0x3a, 0xae, 0x80, 0xdc, 0x76, 0xa4,
|
0xc5, 0x39, 0x75, 0xe2, 0xdf, 0x7d, 0x04, 0x9b, 0x13, 0xcb, 0xb0, 0x7c, 0xea, 0x3a, 0x2e, 0x65,
|
||||||
0xf0, 0x0b, 0x74, 0xaf, 0xdb, 0xe6, 0x57, 0xdf, 0x17, 0x1a, 0xca, 0xf1, 0x2b, 0xf8, 0xa0, 0x73,
|
0xed, 0xbe, 0xd8, 0xb3, 0xd2, 0xbf, 0x57, 0x96, 0x34, 0xec, 0xc7, 0x71, 0xb4, 0xa0, 0x8a, 0xb2,
|
||||||
0xac, 0x19, 0xfa, 0xc9, 0xd1, 0x71, 0xe7, 0x50, 0x43, 0xf9, 0x5b, 0x95, 0xf2, 0xbf, 0x97, 0xd0,
|
0x31, 0x99, 0x17, 0x56, 0xf7, 0xa1, 0x1c, 0x67, 0x10, 0x2e, 0x82, 0xe0, 0x10, 0x4a, 0xb1, 0x6a,
|
||||||
0xab, 0x57, 0xaf, 0x5e, 0xe5, 0x1e, 0x17, 0xca, 0x1f, 0xa0, 0x1b, 0x8d, 0xbf, 0xe6, 0xa0, 0x9e,
|
0xdc, 0xe8, 0x36, 0x59, 0x1d, 0xfd, 0x4a, 0x46, 0x69, 0x56, 0xcf, 0xdb, 0xad, 0x81, 0xac, 0x2a,
|
||||||
0x6d, 0x7e, 0xf1, 0x4f, 0xe0, 0xad, 0xf8, 0x4b, 0x35, 0xa0, 0xa1, 0xf1, 0xc2, 0xf6, 0x45, 0x36,
|
0xc7, 0x9d, 0x41, 0xeb, 0x48, 0x46, 0x99, 0x6b, 0xc5, 0xc2, 0x7f, 0x56, 0xd0, 0xcb, 0x97, 0x2f,
|
||||||
0x8e, 0x88, 0x6c, 0x1f, 0x93, 0x40, 0xae, 0x47, 0xac, 0x3e, 0x0d, 0x7f, 0x61, 0xfb, 0x3c, 0xd7,
|
0x5f, 0xa6, 0x1f, 0x66, 0x0b, 0x1f, 0xa3, 0xab, 0xd5, 0xef, 0xd3, 0x50, 0x49, 0x76, 0xd2, 0xf8,
|
||||||
0x46, 0x24, 0xc4, 0x07, 0x70, 0x85, 0xb9, 0x46, 0x10, 0x12, 0x66, 0x11, 0xdf, 0x32, 0x26, 0x6f,
|
0xe7, 0x70, 0x31, 0xbc, 0xf6, 0x7a, 0xd4, 0x57, 0x9f, 0x1b, 0x2e, 0xa7, 0xf6, 0x98, 0x88, 0x5e,
|
||||||
0x04, 0x06, 0x31, 0x4d, 0x1a, 0x04, 0xae, 0xbc, 0x05, 0x12, 0x2b, 0xef, 0x30, 0xb7, 0x1f, 0x91,
|
0x34, 0x5a, 0x95, 0xcd, 0x00, 0xd5, 0xa7, 0xfe, 0x97, 0x86, 0xcb, 0x88, 0x3b, 0x26, 0x3e, 0x6e,
|
||||||
0x27, 0xe5, 0xb1, 0x15, 0x51, 0xa7, 0x36, 0x3d, 0xbf, 0x68, 0xd3, 0xdf, 0x86, 0xca, 0x88, 0x78,
|
0xc3, 0x65, 0xcb, 0x56, 0x3d, 0x9f, 0x58, 0x3a, 0x71, 0x75, 0x75, 0xfa, 0xe0, 0xa0, 0x12, 0x4d,
|
||||||
0x06, 0x65, 0xa1, 0x7f, 0x2e, 0x5a, 0xb6, 0xb2, 0x5e, 0x1e, 0x11, 0x4f, 0xe3, 0xe3, 0xef, 0x6e,
|
0xa3, 0x9e, 0x67, 0x8b, 0x92, 0x12, 0x79, 0x79, 0xd7, 0xb2, 0xfb, 0x01, 0x78, 0x7a, 0xd6, 0xd6,
|
||||||
0x27, 0xb2, 0xd1, 0x2c, 0xa3, 0x4a, 0xe3, 0x1f, 0x79, 0xa8, 0xa5, 0x9b, 0x37, 0xde, 0x0b, 0x9b,
|
0x03, 0xe8, 0x0c, 0x83, 0x32, 0xcb, 0x18, 0xf4, 0x0e, 0x14, 0xc7, 0xc4, 0x51, 0xa9, 0xe5, 0xbb,
|
||||||
0xa2, 0x50, 0x2b, 0xe2, 0x28, 0xbf, 0xff, 0x8d, 0xad, 0x5e, 0x73, 0x8f, 0x57, 0xf0, 0x9d, 0x92,
|
0x67, 0xbc, 0xff, 0x2b, 0x28, 0x85, 0x31, 0x71, 0x64, 0x36, 0x7e, 0x73, 0x2b, 0x91, 0xcc, 0x66,
|
||||||
0x6c, 0xa9, 0x74, 0xa9, 0xc9, 0x6f, 0x4f, 0x7e, 0x78, 0xa9, 0x6c, 0xd4, 0xcb, 0x7a, 0x34, 0xc2,
|
0x01, 0x15, 0x1f, 0x66, 0x0b, 0x45, 0x04, 0xd5, 0x7f, 0x66, 0xa0, 0x1c, 0xef, 0x07, 0x59, 0x7b,
|
||||||
0xfb, 0x50, 0x7a, 0x1a, 0x08, 0xdb, 0x25, 0x61, 0xfb, 0xda, 0x37, 0xdb, 0x7e, 0xdc, 0x17, 0xc6,
|
0xad, 0xf1, 0xb3, 0x3f, 0xc5, 0x4f, 0x87, 0x0f, 0x5e, 0xd9, 0x3d, 0xd6, 0x1a, 0xac, 0x28, 0xec,
|
||||||
0x2b, 0x8f, 0xfb, 0xc6, 0x51, 0x57, 0x3f, 0x6c, 0x1d, 0xe8, 0x91, 0x3a, 0xbe, 0x0c, 0x05, 0x87,
|
0xe7, 0x45, 0x97, 0xa6, 0x08, 0x4b, 0x56, 0x90, 0xd9, 0x79, 0x40, 0x45, 0xef, 0x5f, 0x50, 0x82,
|
||||||
0x7c, 0x79, 0x9e, 0xad, 0xf5, 0x02, 0xba, 0x68, 0xf8, 0x2f, 0x43, 0xe1, 0x05, 0x25, 0xcf, 0xb2,
|
0x11, 0x3e, 0x84, 0xfc, 0x13, 0x8f, 0xfb, 0xce, 0x73, 0xdf, 0x1f, 0xbe, 0xda, 0xf7, 0xc3, 0x3e,
|
||||||
0x15, 0x56, 0x40, 0xdf, 0xe1, 0x31, 0xb8, 0x03, 0x45, 0x11, 0x2f, 0x0c, 0x10, 0x45, 0x0c, 0xbd,
|
0x77, 0x5e, 0x7c, 0xd8, 0x57, 0x3b, 0x5d, 0xe5, 0xa8, 0xde, 0x56, 0x02, 0x73, 0x7c, 0x09, 0xb2,
|
||||||
0x81, 0xcb, 0x50, 0xd8, 0xeb, 0xea, 0xfc, 0x28, 0x20, 0xa8, 0x49, 0xd4, 0xe8, 0x75, 0xb4, 0x3d,
|
0x26, 0xf9, 0xe6, 0x2c, 0x59, 0x3e, 0xb8, 0xe8, 0xbc, 0x8b, 0x70, 0x09, 0xb2, 0xcf, 0x29, 0x79,
|
||||||
0x0d, 0xe5, 0x1a, 0xf7, 0xa1, 0x24, 0x83, 0xc0, 0x8f, 0x49, 0x12, 0x06, 0xf4, 0x46, 0x34, 0x8c,
|
0x9a, 0x3c, 0xb4, 0xb9, 0xe8, 0x0d, 0x6e, 0x86, 0x5d, 0xc8, 0xf1, 0x7c, 0x61, 0x80, 0x20, 0x63,
|
||||||
0x6c, 0x28, 0xb1, 0xf4, 0xe4, 0x70, 0x57, 0xd3, 0x51, 0x2e, 0xbb, 0xc9, 0x05, 0x54, 0x6c, 0x04,
|
0xe8, 0x2d, 0x5c, 0x80, 0x6c, 0xa3, 0xab, 0xb0, 0x0d, 0x81, 0xa0, 0x2c, 0xa4, 0x6a, 0xaf, 0x25,
|
||||||
0x50, 0x4b, 0x77, 0x6f, 0xdf, 0x4b, 0x7e, 0x35, 0xfe, 0xa2, 0x40, 0x35, 0xd5, 0x8d, 0xf1, 0x3e,
|
0x37, 0x64, 0x94, 0xae, 0xde, 0x86, 0xbc, 0x48, 0x02, 0xdb, 0x2c, 0x51, 0x1a, 0xd0, 0x5b, 0xc1,
|
||||||
0x80, 0x38, 0x8e, 0xfb, 0xc2, 0x20, 0x8e, 0x4d, 0x82, 0x28, 0x35, 0x40, 0x40, 0x2d, 0x8e, 0x5c,
|
0x30, 0xf0, 0x91, 0x0a, 0xb5, 0xc7, 0x47, 0x07, 0xb2, 0x82, 0xd2, 0xc9, 0xa5, 0xce, 0xa2, 0x5c,
|
||||||
0x74, 0xeb, 0xbe, 0x17, 0xe7, 0xff, 0xa8, 0x00, 0x9a, 0xee, 0xe4, 0xa6, 0x1c, 0x54, 0x7e, 0x50,
|
0xd5, 0x83, 0x72, 0xbc, 0x21, 0xfc, 0x51, 0x58, 0x56, 0xfd, 0x6b, 0x0a, 0x4a, 0xb1, 0x06, 0x8f,
|
||||||
0x07, 0xff, 0xa0, 0x40, 0x3d, 0xdb, 0xbe, 0x4d, 0xb9, 0x77, 0xf5, 0x07, 0x75, 0xef, 0xf7, 0x0a,
|
0xb5, 0x16, 0xc4, 0x34, 0xed, 0xe7, 0x2a, 0x31, 0x0d, 0xe2, 0x05, 0xd4, 0x00, 0x2e, 0xaa, 0x33,
|
||||||
0x2c, 0x67, 0x9a, 0xb6, 0xff, 0x2b, 0xef, 0x7e, 0x97, 0x87, 0xb5, 0x39, 0x7a, 0xb8, 0x15, 0x75,
|
0xc9, 0x79, 0x97, 0xee, 0x47, 0xda, 0x22, 0x39, 0x94, 0xaf, 0xfe, 0x29, 0x05, 0x68, 0xb6, 0x45,
|
||||||
0xb7, 0xb2, 0xe1, 0xfe, 0xf1, 0x45, 0xe6, 0x6a, 0xf2, 0xfb, 0xb3, 0x47, 0xfc, 0x30, 0x6a, 0x86,
|
0x9c, 0x09, 0x33, 0xf5, 0x53, 0x86, 0x59, 0xfd, 0x63, 0x0a, 0x2a, 0xc9, 0xbe, 0x70, 0x26, 0xbc,
|
||||||
0x6f, 0x02, 0xb2, 0x2d, 0xca, 0x42, 0x7b, 0x60, 0x53, 0x3f, 0xfa, 0x22, 0x97, 0x2d, 0xef, 0xca,
|
0x2b, 0x3f, 0x69, 0x78, 0xff, 0x48, 0xc3, 0x6a, 0xa2, 0x1b, 0x3c, 0x6f, 0x74, 0x5f, 0xc3, 0xba,
|
||||||
0x04, 0x97, 0x1f, 0xe5, 0x3f, 0x02, 0xec, 0xb9, 0x81, 0x1d, 0xda, 0xcf, 0xa9, 0x61, 0xb3, 0xf8,
|
0xa1, 0xd3, 0xb1, 0x63, 0xfb, 0xd4, 0xd2, 0xce, 0x54, 0x93, 0x3e, 0xa3, 0xa6, 0x54, 0xe5, 0x87,
|
||||||
0xf3, 0x9d, 0xb7, 0xc0, 0x05, 0x1d, 0xc5, 0x92, 0x0e, 0x0b, 0x13, 0x36, 0xa3, 0x43, 0x32, 0xc5,
|
0xc6, 0xee, 0xab, 0xfb, 0xcd, 0x5a, 0x6b, 0x6a, 0xd7, 0x66, 0x66, 0xfb, 0x1b, 0xad, 0xa6, 0x7c,
|
||||||
0xe6, 0x15, 0x30, 0xaf, 0xa3, 0x58, 0x92, 0xb0, 0xaf, 0x42, 0xcd, 0x72, 0xc7, 0xbc, 0xa1, 0x90,
|
0xd4, 0xeb, 0x0e, 0xe4, 0x4e, 0xe3, 0xb1, 0x7a, 0xdc, 0xf9, 0x65, 0xa7, 0xfb, 0x65, 0x47, 0x41,
|
||||||
0x3c, 0x5e, 0x70, 0x15, 0xbd, 0x2a, 0xb1, 0x84, 0x12, 0x75, 0x7c, 0x93, 0x77, 0x83, 0x9a, 0x5e,
|
0xc6, 0x0c, 0xec, 0x0d, 0x6e, 0xfb, 0x1e, 0xa0, 0xd9, 0xa0, 0xf0, 0x45, 0x58, 0x14, 0x16, 0x7a,
|
||||||
0x95, 0x98, 0xa4, 0xdc, 0x80, 0x15, 0x32, 0x1c, 0xfa, 0xdc, 0x78, 0x6c, 0x48, 0xf6, 0xb0, 0xf5,
|
0x0b, 0x6f, 0xc0, 0x5a, 0xa7, 0xab, 0xf6, 0x5b, 0x4d, 0x59, 0x95, 0x1f, 0x3c, 0x90, 0x1b, 0x83,
|
||||||
0x04, 0x16, 0xc4, 0x8d, 0xc7, 0x50, 0x8e, 0xe3, 0xc0, 0x6f, 0x36, 0x1e, 0x09, 0xc3, 0x93, 0xaf,
|
0xbe, 0xb8, 0x80, 0x47, 0xe8, 0x41, 0x62, 0x83, 0x57, 0xff, 0x90, 0x81, 0x8d, 0x05, 0x91, 0xe0,
|
||||||
0x37, 0xb9, 0xad, 0x8a, 0x5e, 0x66, 0xb1, 0xf0, 0x2a, 0xd4, 0xec, 0xc0, 0x98, 0x3c, 0x23, 0xe6,
|
0x7a, 0xd0, 0xfb, 0x8b, 0xeb, 0xc8, 0x8d, 0xf3, 0x44, 0x5f, 0x63, 0xdd, 0x45, 0x8f, 0xb8, 0x7e,
|
||||||
0x36, 0x73, 0x5b, 0x65, 0xbd, 0x6a, 0x07, 0xc9, 0xbb, 0x51, 0xe3, 0xeb, 0x1c, 0xd4, 0xb3, 0xcf,
|
0x70, 0x55, 0xf8, 0x04, 0x58, 0x96, 0x2c, 0xdf, 0x18, 0x1a, 0xd4, 0x0d, 0xde, 0x2b, 0xc4, 0x85,
|
||||||
0xa0, 0xb8, 0x0d, 0x65, 0xc7, 0x35, 0x89, 0x48, 0x04, 0xf9, 0x06, 0xbf, 0xf5, 0x9a, 0x97, 0xd3,
|
0x60, 0x6d, 0x2a, 0x17, 0x4f, 0x16, 0x3f, 0x03, 0xec, 0xd8, 0x9e, 0xe1, 0x1b, 0xcf, 0xa8, 0x6a,
|
||||||
0xe6, 0x41, 0xc4, 0xd7, 0x13, 0xcd, 0x8d, 0xbf, 0x29, 0x50, 0x8e, 0x61, 0x7c, 0x09, 0x0a, 0x1e,
|
0x58, 0xe1, 0xe3, 0x06, 0xbb, 0x20, 0x64, 0x15, 0x14, 0x6a, 0x5a, 0x96, 0x1f, 0xa1, 0x2d, 0x3a,
|
||||||
0x09, 0xcf, 0x84, 0xb9, 0xe2, 0x6e, 0x0e, 0x29, 0xba, 0x18, 0x73, 0x3c, 0xf0, 0x08, 0x13, 0x29,
|
0x22, 0x33, 0x68, 0x76, 0x98, 0x67, 0x14, 0x14, 0x6a, 0x22, 0xf4, 0x15, 0x28, 0xeb, 0xf6, 0x84,
|
||||||
0x10, 0xe1, 0x7c, 0xcc, 0xf7, 0xd5, 0xa1, 0xc4, 0x12, 0x0d, 0xb2, 0x3b, 0x1a, 0x51, 0x16, 0x06,
|
0xb5, 0x5b, 0x02, 0xc7, 0x6a, 0x47, 0x4a, 0x29, 0x09, 0x59, 0x04, 0x09, 0xfa, 0xe1, 0xe9, 0xab,
|
||||||
0xf1, 0xbe, 0x46, 0xf8, 0x5e, 0x04, 0xe3, 0xdb, 0xb0, 0x1a, 0xfa, 0xc4, 0x76, 0x32, 0xdc, 0x82,
|
0x4a, 0x59, 0x29, 0x09, 0x99, 0x80, 0x5c, 0x85, 0x35, 0x32, 0x1a, 0xb9, 0xcc, 0x79, 0xe8, 0x48,
|
||||||
0xe0, 0xa2, 0x58, 0x90, 0x90, 0x77, 0xe0, 0x72, 0x6c, 0xd7, 0xa2, 0x21, 0x31, 0xcf, 0xa8, 0x35,
|
0x74, 0xf8, 0x95, 0x48, 0xcc, 0x81, 0x5b, 0x0f, 0xa1, 0x10, 0xe6, 0x81, 0x95, 0x6a, 0x96, 0x09,
|
||||||
0x51, 0x2a, 0x89, 0x37, 0xb6, 0xb7, 0x22, 0x42, 0x3b, 0x92, 0xc7, 0xba, 0x8d, 0xbf, 0x2b, 0xb0,
|
0xd5, 0x11, 0x6f, 0x5b, 0xe9, 0x9d, 0xa2, 0x52, 0xb0, 0x42, 0xe5, 0x15, 0x28, 0x1b, 0x9e, 0x3a,
|
||||||
0x1a, 0xb7, 0xf4, 0x56, 0x12, 0xac, 0x43, 0x00, 0xc2, 0x98, 0x1b, 0xa6, 0xc3, 0x35, 0x9b, 0xca,
|
0x7d, 0x64, 0x4d, 0x6f, 0xa7, 0x77, 0x0a, 0x4a, 0xc9, 0xf0, 0xa2, 0x57, 0xb5, 0xea, 0x77, 0x69,
|
||||||
0x33, 0x7a, 0xcd, 0x56, 0xa2, 0xa4, 0xa7, 0x0c, 0x6c, 0x8c, 0x00, 0x26, 0x92, 0x85, 0x61, 0xbb,
|
0xa8, 0x24, 0x1f, 0x89, 0x71, 0x13, 0x0a, 0xa6, 0xad, 0x11, 0x4e, 0x2d, 0xf1, 0x0b, 0xc5, 0xce,
|
||||||
0x02, 0xd5, 0xe8, 0x8d, 0x5b, 0xfc, 0xa3, 0x44, 0x7e, 0x04, 0x82, 0x84, 0x78, 0xef, 0x8f, 0xd7,
|
0x6b, 0xde, 0x95, 0x6b, 0xed, 0x00, 0xaf, 0x44, 0x96, 0x5b, 0x7f, 0x4b, 0x41, 0x21, 0x14, 0xe3,
|
||||||
0xa1, 0x78, 0x4a, 0x87, 0x36, 0x8b, 0x5e, 0xde, 0xe4, 0x20, 0x7e, 0xcf, 0x2b, 0x24, 0xef, 0x79,
|
0x0b, 0x90, 0x75, 0x88, 0x7f, 0xca, 0xdd, 0xe5, 0x0e, 0xd2, 0x28, 0xa5, 0xf0, 0x31, 0x93, 0x7b,
|
||||||
0xbb, 0x4f, 0x60, 0xcd, 0x74, 0x47, 0xd3, 0xee, 0xee, 0xa2, 0xa9, 0x0f, 0xd1, 0xe0, 0x33, 0xe5,
|
0x0e, 0xb1, 0x38, 0x05, 0x02, 0x39, 0x1b, 0xb3, 0x75, 0x35, 0x29, 0xd1, 0xf9, 0xf5, 0xc1, 0x1e,
|
||||||
0x0b, 0x98, 0x74, 0x6a, 0x5f, 0xe5, 0xf2, 0xfb, 0xbd, 0xdd, 0x3f, 0xe5, 0x36, 0xf6, 0xa5, 0x5e,
|
0x8f, 0xa9, 0xe5, 0x7b, 0xe1, 0xba, 0x06, 0xf2, 0x46, 0x20, 0xc6, 0xd7, 0x61, 0xdd, 0x77, 0x89,
|
||||||
0x2f, 0x5e, 0xa6, 0x4e, 0x07, 0x0e, 0x35, 0xb9, 0xeb, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x5f,
|
0x61, 0x26, 0xb0, 0x59, 0x8e, 0x45, 0xa1, 0x22, 0x02, 0xef, 0xc3, 0xa5, 0xd0, 0xaf, 0x4e, 0x7d,
|
||||||
0x1c, 0x48, 0x4f, 0x0d, 0x1a, 0x00, 0x00,
|
0xa2, 0x9d, 0x52, 0x7d, 0x6a, 0x94, 0xe7, 0x2f, 0x90, 0x17, 0x03, 0x40, 0x33, 0xd0, 0x87, 0xb6,
|
||||||
|
0xd5, 0xef, 0x53, 0xb0, 0x1e, 0x5e, 0x78, 0xf4, 0x28, 0x59, 0x47, 0x00, 0xc4, 0xb2, 0x6c, 0x3f,
|
||||||
|
0x9e, 0xae, 0x79, 0x2a, 0xcf, 0xd9, 0xd5, 0xea, 0x91, 0x91, 0x12, 0x73, 0xb0, 0x35, 0x06, 0x98,
|
||||||
|
0x6a, 0x96, 0xa6, 0xed, 0x32, 0x94, 0x82, 0x5f, 0x00, 0xf8, 0xcf, 0x48, 0xe2, 0x8a, 0x0c, 0x42,
|
||||||
|
0xc4, 0x6e, 0x46, 0x78, 0x13, 0x72, 0x27, 0x74, 0x64, 0x58, 0xc1, 0xbb, 0xa4, 0x18, 0x84, 0xaf,
|
||||||
|
0x9d, 0xd9, 0xe8, 0xb5, 0xf3, 0xe0, 0x77, 0x29, 0xd8, 0xd0, 0xec, 0xf1, 0x6c, 0xbc, 0x07, 0x68,
|
||||||
|
0xe6, 0x9e, 0xee, 0x7d, 0x91, 0xfa, 0xea, 0xfe, 0xc8, 0xf0, 0x4f, 0x27, 0x27, 0x35, 0xcd, 0x1e,
|
||||||
|
0xef, 0x8e, 0x6c, 0x93, 0x58, 0xa3, 0xe9, 0xef, 0x60, 0xfc, 0x1f, 0xed, 0xc6, 0x88, 0x5a, 0x37,
|
||||||
|
0x46, 0x76, 0xec, 0x57, 0xb1, 0x7b, 0xd3, 0x7f, 0xbf, 0x4d, 0x67, 0x0e, 0x7b, 0x07, 0x7f, 0x4e,
|
||||||
|
0x6f, 0x1d, 0x8a, 0x6f, 0xf5, 0xc2, 0xdc, 0x28, 0x74, 0x68, 0x52, 0x8d, 0xcd, 0xf7, 0x7f, 0x01,
|
||||||
|
0x00, 0x00, 0xff, 0xff, 0x8e, 0x54, 0xe7, 0xef, 0x60, 0x1b, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
3
vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go
generated
vendored
3
vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go
generated
vendored
@ -1237,9 +1237,8 @@ func (g *Generator) generate(file *FileDescriptor) {
|
|||||||
|
|
||||||
// Generate the header, including package definition
|
// Generate the header, including package definition
|
||||||
func (g *Generator) generateHeader() {
|
func (g *Generator) generateHeader() {
|
||||||
g.P("// Code generated by protoc-gen-go.")
|
g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
|
||||||
g.P("// source: ", g.file.Name)
|
g.P("// source: ", g.file.Name)
|
||||||
g.P("// DO NOT EDIT!")
|
|
||||||
g.P()
|
g.P()
|
||||||
|
|
||||||
name := g.file.PackageName()
|
name := g.file.PackageName()
|
||||||
|
7
vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile
generated
vendored
7
vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile
generated
vendored
@ -33,10 +33,9 @@
|
|||||||
# at src/google/protobuf/compiler/plugin.proto
|
# at src/google/protobuf/compiler/plugin.proto
|
||||||
# Also we need to fix an import.
|
# Also we need to fix an import.
|
||||||
regenerate:
|
regenerate:
|
||||||
echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
|
@echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
|
||||||
protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:. \
|
protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:../../../../.. \
|
||||||
-I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/compiler/plugin.proto && \
|
-I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/compiler/plugin.proto
|
||||||
mv google/protobuf/compiler/plugin.pb.go $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/plugin
|
|
||||||
|
|
||||||
restore:
|
restore:
|
||||||
cp plugin.pb.golden plugin.pb.go
|
cp plugin.pb.golden plugin.pb.go
|
||||||
|
116
vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go
generated
vendored
116
vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/compiler/plugin.proto
|
// source: google/protobuf/compiler/plugin.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package plugin_go is a generated protocol buffer package.
|
Package plugin_go is a generated protocol buffer package.
|
||||||
@ -9,6 +8,7 @@ It is generated from these files:
|
|||||||
google/protobuf/compiler/plugin.proto
|
google/protobuf/compiler/plugin.proto
|
||||||
|
|
||||||
It has these top-level messages:
|
It has these top-level messages:
|
||||||
|
Version
|
||||||
CodeGeneratorRequest
|
CodeGeneratorRequest
|
||||||
CodeGeneratorResponse
|
CodeGeneratorResponse
|
||||||
*/
|
*/
|
||||||
@ -30,6 +30,50 @@ var _ = math.Inf
|
|||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
||||||
|
|
||||||
|
// The version number of protocol compiler.
|
||||||
|
type Version struct {
|
||||||
|
Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
|
||||||
|
Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
|
||||||
|
Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
|
||||||
|
// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
|
||||||
|
// be empty for mainline stable releases.
|
||||||
|
Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Version) Reset() { *m = Version{} }
|
||||||
|
func (m *Version) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Version) ProtoMessage() {}
|
||||||
|
func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
|
|
||||||
|
func (m *Version) GetMajor() int32 {
|
||||||
|
if m != nil && m.Major != nil {
|
||||||
|
return *m.Major
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Version) GetMinor() int32 {
|
||||||
|
if m != nil && m.Minor != nil {
|
||||||
|
return *m.Minor
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Version) GetPatch() int32 {
|
||||||
|
if m != nil && m.Patch != nil {
|
||||||
|
return *m.Patch
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Version) GetSuffix() string {
|
||||||
|
if m != nil && m.Suffix != nil {
|
||||||
|
return *m.Suffix
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
// An encoded CodeGeneratorRequest is written to the plugin's stdin.
|
// An encoded CodeGeneratorRequest is written to the plugin's stdin.
|
||||||
type CodeGeneratorRequest struct {
|
type CodeGeneratorRequest struct {
|
||||||
// The .proto files that were explicitly listed on the command-line. The
|
// The .proto files that were explicitly listed on the command-line. The
|
||||||
@ -49,14 +93,19 @@ type CodeGeneratorRequest struct {
|
|||||||
// the entire set into memory at once. However, as of this writing, this
|
// the entire set into memory at once. However, as of this writing, this
|
||||||
// is not similarly optimized on protoc's end -- it will store all fields in
|
// is not similarly optimized on protoc's end -- it will store all fields in
|
||||||
// memory at once before sending them to the plugin.
|
// memory at once before sending them to the plugin.
|
||||||
|
//
|
||||||
|
// Type names of fields and extensions in the FileDescriptorProto are always
|
||||||
|
// fully qualified.
|
||||||
ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"`
|
ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"`
|
||||||
|
// The version number of protocol compiler.
|
||||||
|
CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} }
|
func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} }
|
||||||
func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) }
|
func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) }
|
||||||
func (*CodeGeneratorRequest) ProtoMessage() {}
|
func (*CodeGeneratorRequest) ProtoMessage() {}
|
||||||
func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
||||||
|
|
||||||
func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
|
func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
@ -79,6 +128,13 @@ func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorP
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *CodeGeneratorRequest) GetCompilerVersion() *Version {
|
||||||
|
if m != nil {
|
||||||
|
return m.CompilerVersion
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// The plugin writes an encoded CodeGeneratorResponse to stdout.
|
// The plugin writes an encoded CodeGeneratorResponse to stdout.
|
||||||
type CodeGeneratorResponse struct {
|
type CodeGeneratorResponse struct {
|
||||||
// Error message. If non-empty, code generation failed. The plugin process
|
// Error message. If non-empty, code generation failed. The plugin process
|
||||||
@ -97,7 +153,7 @@ type CodeGeneratorResponse struct {
|
|||||||
func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} }
|
func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} }
|
||||||
func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) }
|
func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) }
|
||||||
func (*CodeGeneratorResponse) ProtoMessage() {}
|
func (*CodeGeneratorResponse) ProtoMessage() {}
|
||||||
func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
||||||
|
|
||||||
func (m *CodeGeneratorResponse) GetError() string {
|
func (m *CodeGeneratorResponse) GetError() string {
|
||||||
if m != nil && m.Error != nil {
|
if m != nil && m.Error != nil {
|
||||||
@ -173,7 +229,7 @@ type CodeGeneratorResponse_File struct {
|
|||||||
func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} }
|
func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} }
|
||||||
func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) }
|
func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) }
|
||||||
func (*CodeGeneratorResponse_File) ProtoMessage() {}
|
func (*CodeGeneratorResponse_File) ProtoMessage() {}
|
||||||
func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
|
func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
|
||||||
|
|
||||||
func (m *CodeGeneratorResponse_File) GetName() string {
|
func (m *CodeGeneratorResponse_File) GetName() string {
|
||||||
if m != nil && m.Name != nil {
|
if m != nil && m.Name != nil {
|
||||||
@ -197,6 +253,7 @@ func (m *CodeGeneratorResponse_File) GetContent() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version")
|
||||||
proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest")
|
proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest")
|
||||||
proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse")
|
proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse")
|
||||||
proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File")
|
proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File")
|
||||||
@ -205,25 +262,32 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor0) }
|
func init() { proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor0) }
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 310 bytes of a gzipped FileDescriptorProto
|
// 417 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x51, 0xc1, 0x4a, 0xc3, 0x40,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41,
|
||||||
0x10, 0x25, 0xb6, 0x22, 0x19, 0xa5, 0x95, 0xa5, 0xc2, 0x52, 0x7a, 0x08, 0x45, 0x31, 0xa7, 0x14,
|
0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2,
|
||||||
0x44, 0xf0, 0xde, 0x8a, 0x7a, 0x2c, 0xc1, 0x93, 0x20, 0x21, 0xa6, 0xd3, 0xb0, 0x90, 0xec, 0xac,
|
0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30,
|
||||||
0xb3, 0xdb, 0x2f, 0xf2, 0x9f, 0xfc, 0x1e, 0xd9, 0x4d, 0x5b, 0xa5, 0xd8, 0xdb, 0xce, 0x7b, 0x6f,
|
0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa,
|
||||||
0xe6, 0xbd, 0x9d, 0x81, 0x9b, 0x9a, 0xa8, 0x6e, 0x70, 0x66, 0x98, 0x1c, 0x7d, 0x6c, 0xd6, 0xb3,
|
0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91,
|
||||||
0x8a, 0x5a, 0xa3, 0x1a, 0xe4, 0x99, 0x69, 0x36, 0xb5, 0xd2, 0x59, 0x20, 0x84, 0xec, 0x64, 0xd9,
|
0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63,
|
||||||
0x4e, 0x96, 0xed, 0x64, 0xe3, 0xe4, 0x70, 0xc0, 0x0a, 0x6d, 0xc5, 0xca, 0x38, 0xe2, 0x4e, 0x3d,
|
0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb,
|
||||||
0xfd, 0x8a, 0x60, 0xb4, 0xa0, 0x15, 0x3e, 0xa3, 0x46, 0x2e, 0x1d, 0x71, 0x8e, 0x9f, 0x1b, 0xb4,
|
0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55,
|
||||||
0x4e, 0xa4, 0x70, 0xb9, 0x56, 0x0d, 0x16, 0x8e, 0x8a, 0xba, 0xe3, 0x50, 0x46, 0x49, 0x2f, 0x8d,
|
0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8,
|
||||||
0xf3, 0x81, 0xc7, 0x5f, 0x69, 0xdb, 0x81, 0x62, 0x02, 0xb1, 0x29, 0xb9, 0x6c, 0xd1, 0x21, 0xcb,
|
0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1,
|
||||||
0x93, 0x24, 0x4a, 0xe3, 0xfc, 0x17, 0x10, 0x0b, 0x80, 0xe0, 0x54, 0xf8, 0x2e, 0x39, 0x4c, 0x7a,
|
0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f,
|
||||||
0xe9, 0xf9, 0xdd, 0x75, 0x76, 0x98, 0xf8, 0x49, 0x35, 0xf8, 0xb8, 0xcf, 0xb6, 0xf4, 0x70, 0x1e,
|
0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d,
|
||||||
0x07, 0xd6, 0x33, 0xd3, 0xef, 0x08, 0xae, 0x0e, 0x52, 0x5a, 0x43, 0xda, 0xa2, 0x18, 0xc1, 0x29,
|
0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2,
|
||||||
0x32, 0x13, 0xcb, 0x28, 0x18, 0x77, 0x85, 0x78, 0x81, 0xfe, 0x1f, 0xbb, 0xfb, 0xec, 0xd8, 0x82,
|
0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a,
|
||||||
0xb2, 0x7f, 0x87, 0x86, 0x34, 0x79, 0x98, 0x30, 0x7e, 0x87, 0xbe, 0xaf, 0x84, 0x80, 0xbe, 0x2e,
|
0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2,
|
||||||
0x5b, 0xdc, 0xda, 0x84, 0xb7, 0xb8, 0x85, 0xa1, 0xd2, 0x16, 0xd9, 0x29, 0xd2, 0x85, 0x21, 0xa5,
|
0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d,
|
||||||
0xdd, 0xf6, 0xfb, 0x83, 0x3d, 0xbc, 0xf4, 0xa8, 0x90, 0x70, 0x56, 0x91, 0x76, 0xa8, 0x9d, 0x1c,
|
0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda,
|
||||||
0x06, 0xc1, 0xae, 0x9c, 0x3f, 0xc0, 0xa4, 0xa2, 0xf6, 0x68, 0xbe, 0xf9, 0xc5, 0x32, 0x1c, 0x3a,
|
0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed,
|
||||||
0x2c, 0xc4, 0xbe, 0xc5, 0xdd, 0xd9, 0x8b, 0x9a, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x83, 0x7b,
|
0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34,
|
||||||
0x5c, 0x7c, 0x1b, 0x02, 0x00, 0x00,
|
0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79,
|
||||||
|
0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45,
|
||||||
|
0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4,
|
||||||
|
0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e,
|
||||||
|
0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92,
|
||||||
|
0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d,
|
||||||
|
0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00,
|
||||||
|
0x00,
|
||||||
}
|
}
|
||||||
|
3
vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go
generated
vendored
3
vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: my_test/test.proto
|
// source: my_test/test.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package my_test is a generated protocol buffer package.
|
Package my_test is a generated protocol buffer package.
|
||||||
|
31
vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
generated
vendored
31
vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: github.com/golang/protobuf/ptypes/any/any.proto
|
// source: github.com/golang/protobuf/ptypes/any/any.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package any is a generated protocol buffer package.
|
Package any is a generated protocol buffer package.
|
||||||
@ -132,6 +131,20 @@ func (*Any) ProtoMessage() {}
|
|||||||
func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
func (*Any) XXX_WellKnownType() string { return "Any" }
|
func (*Any) XXX_WellKnownType() string { return "Any" }
|
||||||
|
|
||||||
|
func (m *Any) GetTypeUrl() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.TypeUrl
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Any) GetValue() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Any)(nil), "google.protobuf.Any")
|
proto.RegisterType((*Any)(nil), "google.protobuf.Any")
|
||||||
}
|
}
|
||||||
@ -139,17 +152,17 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("github.com/golang/protobuf/ptypes/any/any.proto", fileDescriptor0) }
|
func init() { proto.RegisterFile("github.com/golang/protobuf/ptypes/any/any.proto", fileDescriptor0) }
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 187 bytes of a gzipped FileDescriptorProto
|
// 184 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9,
|
||||||
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
||||||
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcc,
|
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcc,
|
||||||
0xab, 0x04, 0x61, 0x3d, 0xb0, 0xb8, 0x10, 0x7f, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x1e, 0x4c,
|
0xab, 0x04, 0x61, 0x3d, 0xb0, 0xb8, 0x10, 0x7f, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x1e, 0x4c,
|
||||||
0x95, 0x92, 0x19, 0x17, 0xb3, 0x63, 0x5e, 0xa5, 0x90, 0x24, 0x17, 0x07, 0x48, 0x79, 0x7c, 0x69,
|
0x95, 0x92, 0x19, 0x17, 0xb3, 0x63, 0x5e, 0xa5, 0x90, 0x24, 0x17, 0x07, 0x48, 0x79, 0x7c, 0x69,
|
||||||
0x51, 0x8e, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x3b, 0x88, 0x1f, 0x5a, 0x94, 0x23, 0x24,
|
0x51, 0x8e, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x3b, 0x88, 0x1f, 0x5a, 0x94, 0x23, 0x24,
|
||||||
0xc2, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x13, 0x04, 0xe1,
|
0xc2, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x13, 0x04, 0xe1,
|
||||||
0x38, 0x15, 0x71, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19,
|
0x38, 0xe5, 0x73, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19,
|
||||||
0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x05, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd,
|
0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x45, 0x4c, 0xcc, 0xee, 0x01, 0x4e, 0xab,
|
||||||
0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c, 0x0b, 0x80, 0xaa, 0xd2, 0x0b, 0x4f, 0xcd, 0xc9,
|
0x98, 0xe4, 0xdc, 0x21, 0x46, 0x05, 0x40, 0x95, 0xe8, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5,
|
||||||
0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, 0x4e, 0x62, 0x03, 0x6b, 0x37, 0x06, 0x04, 0x00,
|
0x97, 0xe7, 0x85, 0x80, 0x94, 0x26, 0xb1, 0x81, 0xf5, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff,
|
||||||
0x00, 0xff, 0xff, 0xc6, 0x4d, 0x03, 0x23, 0xf6, 0x00, 0x00, 0x00,
|
0x45, 0x1f, 0x1a, 0xf2, 0xf3, 0x00, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
1
vendor/github.com/golang/protobuf/ptypes/any/any.proto
generated
vendored
1
vendor/github.com/golang/protobuf/ptypes/any/any.proto
generated
vendored
@ -37,7 +37,6 @@ option go_package = "github.com/golang/protobuf/ptypes/any";
|
|||||||
option java_package = "com.google.protobuf";
|
option java_package = "com.google.protobuf";
|
||||||
option java_outer_classname = "AnyProto";
|
option java_outer_classname = "AnyProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
option java_generate_equals_and_hash = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
option objc_class_prefix = "GPB";
|
||||||
|
|
||||||
// `Any` contains an arbitrary serialized protocol buffer message along with a
|
// `Any` contains an arbitrary serialized protocol buffer message along with a
|
||||||
|
44
vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go
generated
vendored
44
vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: github.com/golang/protobuf/ptypes/duration/duration.proto
|
// source: github.com/golang/protobuf/ptypes/duration/duration.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package duration is a generated protocol buffer package.
|
Package duration is a generated protocol buffer package.
|
||||||
@ -35,6 +34,8 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
|||||||
// two Timestamp values is a Duration and it can be added or subtracted
|
// two Timestamp values is a Duration and it can be added or subtracted
|
||||||
// from a Timestamp. Range is approximately +-10,000 years.
|
// from a Timestamp. Range is approximately +-10,000 years.
|
||||||
//
|
//
|
||||||
|
// # Examples
|
||||||
|
//
|
||||||
// Example 1: Compute Duration from two Timestamps in pseudo code.
|
// Example 1: Compute Duration from two Timestamps in pseudo code.
|
||||||
//
|
//
|
||||||
// Timestamp start = ...;
|
// Timestamp start = ...;
|
||||||
@ -69,10 +70,27 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
|||||||
// end.nanos -= 1000000000;
|
// 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 {
|
type Duration struct {
|
||||||
// Signed seconds of the span of time. Must be from -315,576,000,000
|
// Signed seconds of the span of time. Must be from -315,576,000,000
|
||||||
// to +315,576,000,000 inclusive.
|
// 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 years
|
||||||
Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"`
|
Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"`
|
||||||
// Signed fractions of a second at nanosecond resolution of the span
|
// Signed fractions of a second at nanosecond resolution of the span
|
||||||
// of time. Durations less than one second are represented with a 0
|
// of time. Durations less than one second are represented with a 0
|
||||||
@ -89,6 +107,20 @@ func (*Duration) ProtoMessage() {}
|
|||||||
func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
func (*Duration) XXX_WellKnownType() string { return "Duration" }
|
func (*Duration) XXX_WellKnownType() string { return "Duration" }
|
||||||
|
|
||||||
|
func (m *Duration) GetSeconds() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Seconds
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Duration) GetNanos() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Nanos
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
|
proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
|
||||||
}
|
}
|
||||||
@ -99,7 +131,7 @@ func init() {
|
|||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 189 bytes of a gzipped FileDescriptorProto
|
// 189 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
|
||||||
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
||||||
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0x29,
|
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0x29,
|
||||||
0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0x83, 0x33, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3,
|
0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0x83, 0x33, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3,
|
||||||
@ -107,8 +139,8 @@ var fileDescriptor0 = []byte{
|
|||||||
0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60,
|
0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60,
|
||||||
0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xd6,
|
0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xd6,
|
||||||
0x20, 0x08, 0xc7, 0xa9, 0x86, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x48, 0x27, 0x5e, 0x98,
|
0x20, 0x08, 0xc7, 0xa9, 0x86, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x48, 0x27, 0x5e, 0x98,
|
||||||
0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xbb, 0x80, 0x91, 0x71, 0x11, 0x13,
|
0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xfb, 0x83, 0x91, 0x71, 0x11, 0x13,
|
||||||
0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb9, 0x01, 0x50, 0xa5, 0x7a, 0xe1, 0xa9,
|
0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb9, 0x01, 0x50, 0xa5, 0x7a, 0xe1, 0xa9,
|
||||||
0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x2d, 0x49, 0x6c, 0x60, 0x33, 0x8c, 0x01,
|
0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x2d, 0x49, 0x6c, 0x60, 0x33, 0x8c, 0x01,
|
||||||
0x01, 0x00, 0x00, 0xff, 0xff, 0x62, 0xfb, 0xb1, 0x51, 0x0e, 0x01, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0xff, 0xff, 0x45, 0x5a, 0x81, 0x3d, 0x0e, 0x01, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
23
vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
generated
vendored
23
vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
generated
vendored
@ -33,11 +33,11 @@ syntax = "proto3";
|
|||||||
package google.protobuf;
|
package google.protobuf;
|
||||||
|
|
||||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
||||||
|
option cc_enable_arenas = true;
|
||||||
option go_package = "github.com/golang/protobuf/ptypes/duration";
|
option go_package = "github.com/golang/protobuf/ptypes/duration";
|
||||||
option java_package = "com.google.protobuf";
|
option java_package = "com.google.protobuf";
|
||||||
option java_outer_classname = "DurationProto";
|
option java_outer_classname = "DurationProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
option java_generate_equals_and_hash = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
option objc_class_prefix = "GPB";
|
||||||
|
|
||||||
// A Duration represents a signed, fixed-length span of time represented
|
// A Duration represents a signed, fixed-length span of time represented
|
||||||
@ -47,6 +47,8 @@ option objc_class_prefix = "GPB";
|
|||||||
// two Timestamp values is a Duration and it can be added or subtracted
|
// two Timestamp values is a Duration and it can be added or subtracted
|
||||||
// from a Timestamp. Range is approximately +-10,000 years.
|
// from a Timestamp. Range is approximately +-10,000 years.
|
||||||
//
|
//
|
||||||
|
// # Examples
|
||||||
|
//
|
||||||
// Example 1: Compute Duration from two Timestamps in pseudo code.
|
// Example 1: Compute Duration from two Timestamps in pseudo code.
|
||||||
//
|
//
|
||||||
// Timestamp start = ...;
|
// Timestamp start = ...;
|
||||||
@ -81,11 +83,28 @@ option objc_class_prefix = "GPB";
|
|||||||
// end.nanos -= 1000000000;
|
// 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".
|
||||||
|
//
|
||||||
//
|
//
|
||||||
message Duration {
|
message Duration {
|
||||||
|
|
||||||
// Signed seconds of the span of time. Must be from -315,576,000,000
|
// Signed seconds of the span of time. Must be from -315,576,000,000
|
||||||
// to +315,576,000,000 inclusive.
|
// 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 years
|
||||||
int64 seconds = 1;
|
int64 seconds = 1;
|
||||||
|
|
||||||
// Signed fractions of a second at nanosecond resolution of the span
|
// Signed fractions of a second at nanosecond resolution of the span
|
||||||
|
17
vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
generated
vendored
17
vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: github.com/golang/protobuf/ptypes/empty/empty.proto
|
// source: github.com/golang/protobuf/ptypes/empty/empty.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package empty is a generated protocol buffer package.
|
Package empty is a generated protocol buffer package.
|
||||||
@ -55,15 +54,15 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 150 bytes of a gzipped FileDescriptorProto
|
// 147 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9,
|
||||||
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
||||||
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcd,
|
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcd,
|
||||||
0x2d, 0x28, 0xa9, 0x84, 0x90, 0x7a, 0x60, 0x39, 0x21, 0xfe, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54,
|
0x2d, 0x28, 0xa9, 0x84, 0x90, 0x7a, 0x60, 0x39, 0x21, 0xfe, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54,
|
||||||
0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x25, 0x97, 0x70, 0x72, 0x7e,
|
0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e,
|
||||||
0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36, 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x27, 0xd2,
|
0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36, 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x27, 0xd2,
|
||||||
0xce, 0x05, 0x8c, 0x8c, 0x3f, 0x18, 0x19, 0x17, 0x31, 0x31, 0xbb, 0x07, 0x38, 0xad, 0x62, 0x92,
|
0xce, 0x1f, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c,
|
||||||
0x73, 0x87, 0x18, 0x1a, 0x00, 0x55, 0xaa, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e,
|
0x0c, 0x80, 0xaa, 0xd3, 0x0b, 0x4f, 0xcd, 0xc9, 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9,
|
||||||
0x17, 0x02, 0xd2, 0x92, 0xc4, 0x06, 0x36, 0xc3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xbb,
|
0x4f, 0x62, 0x03, 0x1b, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x8e, 0x0a, 0x06, 0xcf,
|
||||||
0xf4, 0x0e, 0xd2, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
1
vendor/github.com/golang/protobuf/ptypes/empty/empty.proto
generated
vendored
1
vendor/github.com/golang/protobuf/ptypes/empty/empty.proto
generated
vendored
@ -37,7 +37,6 @@ option go_package = "github.com/golang/protobuf/ptypes/empty";
|
|||||||
option java_package = "com.google.protobuf";
|
option java_package = "com.google.protobuf";
|
||||||
option java_outer_classname = "EmptyProto";
|
option java_outer_classname = "EmptyProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
option java_generate_equals_and_hash = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
option objc_class_prefix = "GPB";
|
||||||
option cc_enable_arenas = true;
|
option cc_enable_arenas = true;
|
||||||
|
|
||||||
|
54
vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go
generated
vendored
54
vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: github.com/golang/protobuf/ptypes/struct/struct.proto
|
// source: github.com/golang/protobuf/ptypes/struct/struct.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package structpb is a generated protocol buffer package.
|
Package structpb is a generated protocol buffer package.
|
||||||
@ -352,31 +351,32 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 416 bytes of a gzipped FileDescriptorProto
|
// 417 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40,
|
||||||
0x14, 0x80, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa0, 0xa1, 0x7b, 0x09,
|
0x14, 0x80, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa0, 0xa1, 0x7b, 0x09,
|
||||||
0x22, 0x09, 0x56, 0x04, 0x31, 0x5e, 0x0c, 0xac, 0xbb, 0x60, 0x58, 0x62, 0x74, 0x57, 0xf0, 0x52,
|
0x22, 0x09, 0x56, 0x04, 0x31, 0x5e, 0x0c, 0xac, 0xbb, 0x60, 0x58, 0x62, 0x74, 0x57, 0xf0, 0x52,
|
||||||
0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x8a, 0x47, 0x8f,
|
0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x7b, 0xf4, 0xe8,
|
||||||
0xfe, 0x42, 0x99, 0x99, 0x24, 0x4a, 0x4b, 0xc1, 0xd3, 0xf4, 0xbd, 0xf9, 0xde, 0x37, 0xef, 0xbd,
|
0xaf, 0xf3, 0x28, 0x33, 0x93, 0x44, 0x69, 0x29, 0x78, 0x9a, 0xbe, 0x37, 0xdf, 0xfb, 0xe6, 0xbd,
|
||||||
0x06, 0x9e, 0x97, 0x15, 0xff, 0x2c, 0x32, 0x3f, 0x67, 0x9b, 0xa0, 0x64, 0x64, 0x41, 0xcb, 0xa0,
|
0xd7, 0xc0, 0xf3, 0xb2, 0xe2, 0x9f, 0x45, 0xe6, 0xe7, 0x6c, 0x13, 0x94, 0x8c, 0x2c, 0x68, 0x19,
|
||||||
0x6e, 0x18, 0x67, 0x99, 0x58, 0x05, 0x35, 0xdf, 0xd6, 0x45, 0x1b, 0xb4, 0xbc, 0x11, 0x39, 0xef,
|
0xd4, 0x0d, 0xe3, 0x2c, 0x13, 0xab, 0xa0, 0xe6, 0xdb, 0xba, 0x68, 0x83, 0x96, 0x37, 0x22, 0xe7,
|
||||||
0x0e, 0x5f, 0xdd, 0xe2, 0x3b, 0x25, 0x63, 0x25, 0x29, 0xfc, 0x9e, 0x9d, 0x7e, 0x47, 0x60, 0xbd,
|
0xdd, 0xe1, 0xab, 0x5b, 0x7c, 0xa7, 0x64, 0xac, 0x24, 0x85, 0xdf, 0xb3, 0xd3, 0xef, 0x08, 0xac,
|
||||||
0x57, 0x04, 0x0e, 0xc1, 0x5a, 0x55, 0x05, 0x59, 0xb6, 0x13, 0xe4, 0x9a, 0x9e, 0x33, 0x3b, 0xf3,
|
0xf7, 0x8a, 0xc0, 0x21, 0x58, 0xab, 0xaa, 0x20, 0xcb, 0x76, 0x82, 0x5c, 0xd3, 0x73, 0x66, 0x67,
|
||||||
0x77, 0x60, 0x5f, 0x83, 0xfe, 0x1b, 0x45, 0x9d, 0x53, 0xde, 0x6c, 0xd3, 0xae, 0xe4, 0xf4, 0x1d,
|
0xfe, 0x0e, 0xec, 0x6b, 0xd0, 0x7f, 0xa3, 0xa8, 0x73, 0xca, 0x9b, 0x6d, 0xda, 0x95, 0x9c, 0xbe,
|
||||||
0x38, 0xff, 0xa4, 0xf1, 0x09, 0x98, 0xeb, 0x62, 0x3b, 0x41, 0x2e, 0xf2, 0xec, 0x54, 0xfe, 0xc4,
|
0x03, 0xe7, 0x9f, 0x34, 0x3e, 0x01, 0x73, 0x5d, 0x6c, 0x27, 0xc8, 0x45, 0x9e, 0x9d, 0xca, 0x9f,
|
||||||
0x4f, 0x60, 0xfc, 0x65, 0x41, 0x44, 0x31, 0x31, 0x5c, 0xe4, 0x39, 0xb3, 0x7b, 0x7b, 0xf2, 0x1b,
|
0xf8, 0x09, 0x8c, 0xbf, 0x2c, 0x88, 0x28, 0x26, 0x86, 0x8b, 0x3c, 0x67, 0x76, 0x6f, 0x4f, 0x7e,
|
||||||
0x79, 0x9b, 0x6a, 0xe8, 0xa5, 0xf1, 0x02, 0x4d, 0x7f, 0x1b, 0x30, 0x56, 0x49, 0x1c, 0x02, 0x50,
|
0x23, 0x6f, 0x53, 0x0d, 0xbd, 0x34, 0x5e, 0xa0, 0xe9, 0x2f, 0x03, 0xc6, 0x2a, 0x89, 0x43, 0x00,
|
||||||
0x41, 0xc8, 0x5c, 0x0b, 0xa4, 0xf4, 0x78, 0x76, 0xba, 0x27, 0xb8, 0x12, 0x84, 0x28, 0xfe, 0x72,
|
0x2a, 0x08, 0x99, 0x6b, 0x81, 0x94, 0x1e, 0xcf, 0x4e, 0xf7, 0x04, 0x57, 0x82, 0x10, 0xc5, 0x5f,
|
||||||
0x94, 0xda, 0xb4, 0x0f, 0xf0, 0x19, 0xdc, 0xa6, 0x62, 0x93, 0x15, 0xcd, 0xfc, 0xef, 0xfb, 0xe8,
|
0x8e, 0x52, 0x9b, 0xf6, 0x01, 0x3e, 0x83, 0xdb, 0x54, 0x6c, 0xb2, 0xa2, 0x99, 0xff, 0x7d, 0x1f,
|
||||||
0x72, 0x94, 0x3a, 0x3a, 0x3b, 0x40, 0x2d, 0x6f, 0x2a, 0x5a, 0x76, 0x90, 0x29, 0x1b, 0x97, 0x90,
|
0x5d, 0x8e, 0x52, 0x47, 0x67, 0x07, 0xa8, 0xe5, 0x4d, 0x45, 0xcb, 0x0e, 0x32, 0x65, 0xe3, 0x12,
|
||||||
0xce, 0x6a, 0xe8, 0x11, 0x40, 0xc6, 0x58, 0xdf, 0xc6, 0x91, 0x8b, 0xbc, 0x5b, 0xf2, 0x29, 0x99,
|
0xd2, 0x59, 0x0d, 0x3d, 0x02, 0xc8, 0x18, 0xeb, 0xdb, 0x38, 0x72, 0x91, 0x77, 0x4b, 0x3e, 0x25,
|
||||||
0xd3, 0xc0, 0x2b, 0x65, 0x11, 0x39, 0xef, 0x90, 0xb1, 0x1a, 0xf5, 0xfe, 0x81, 0x3d, 0x76, 0x7a,
|
0x73, 0x1a, 0x78, 0xa5, 0x2c, 0x22, 0xe7, 0x1d, 0x32, 0x56, 0xa3, 0xde, 0x3f, 0xb0, 0xc7, 0x4e,
|
||||||
0x91, 0xf3, 0x61, 0x4a, 0x52, 0xb5, 0x7d, 0xad, 0xa5, 0x6a, 0xf7, 0xa7, 0x8c, 0xab, 0x96, 0x0f,
|
0x2f, 0x72, 0x3e, 0x4c, 0x49, 0xaa, 0xb6, 0xaf, 0xb5, 0x54, 0xed, 0xfe, 0x94, 0x71, 0xd5, 0xf2,
|
||||||
0x53, 0x92, 0x3e, 0x88, 0x2c, 0x38, 0x5a, 0x57, 0x74, 0x39, 0x0d, 0xc1, 0x1e, 0x08, 0xec, 0x83,
|
0x61, 0x4a, 0xd2, 0x07, 0x91, 0x05, 0x47, 0xeb, 0x8a, 0x2e, 0xa7, 0x21, 0xd8, 0x03, 0x81, 0x7d,
|
||||||
0xa5, 0x64, 0xfd, 0x3f, 0x7a, 0x68, 0xe9, 0x1d, 0xf5, 0xf8, 0x01, 0xd8, 0xc3, 0x12, 0xf1, 0x31,
|
0xb0, 0x94, 0xac, 0xff, 0x47, 0x0f, 0x2d, 0xbd, 0xa3, 0x1e, 0x3f, 0x00, 0x7b, 0x58, 0x22, 0x3e,
|
||||||
0xc0, 0xd5, 0x75, 0x1c, 0xcf, 0x6f, 0x5e, 0xc7, 0xd7, 0xe7, 0x27, 0xa3, 0xe8, 0x1b, 0x82, 0xbb,
|
0x06, 0xb8, 0xba, 0x8e, 0xe3, 0xf9, 0xcd, 0xeb, 0xf8, 0xfa, 0xfc, 0x64, 0x14, 0x7d, 0x43, 0x70,
|
||||||
0x39, 0xdb, 0xec, 0x2a, 0x22, 0x47, 0x4f, 0x93, 0xc8, 0x38, 0x41, 0x9f, 0x9e, 0xfe, 0xef, 0x87,
|
0x37, 0x67, 0x9b, 0x5d, 0x45, 0xe4, 0xe8, 0x69, 0x12, 0x19, 0x27, 0xe8, 0xd3, 0xd3, 0xff, 0xfd,
|
||||||
0x19, 0xea, 0xa3, 0xce, 0x7e, 0x20, 0xf4, 0xd3, 0x30, 0x2f, 0x92, 0xe8, 0x97, 0xf1, 0xf0, 0x42,
|
0x30, 0x43, 0x7d, 0xd4, 0xd9, 0x6f, 0x84, 0x7e, 0x18, 0xe6, 0x45, 0x12, 0xfd, 0x34, 0x1e, 0x5e,
|
||||||
0xcb, 0x93, 0xbe, 0xbf, 0x8f, 0x05, 0x21, 0x6f, 0x29, 0xfb, 0x4a, 0x3f, 0xc8, 0xca, 0xcc, 0x52,
|
0x68, 0x79, 0xd2, 0xf7, 0xf7, 0xb1, 0x20, 0xe4, 0x2d, 0x65, 0x5f, 0xe9, 0x07, 0x59, 0x99, 0x59,
|
||||||
0xaa, 0x67, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xcf, 0x6d, 0x50, 0xfe, 0x02, 0x00, 0x00,
|
0x4a, 0xf5, 0xec, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x6e, 0x5d, 0x3c, 0xfe, 0x02, 0x00,
|
||||||
|
0x00,
|
||||||
}
|
}
|
||||||
|
2
vendor/github.com/golang/protobuf/ptypes/struct/struct.proto
generated
vendored
2
vendor/github.com/golang/protobuf/ptypes/struct/struct.proto
generated
vendored
@ -33,11 +33,11 @@ syntax = "proto3";
|
|||||||
package google.protobuf;
|
package google.protobuf;
|
||||||
|
|
||||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
||||||
|
option cc_enable_arenas = true;
|
||||||
option go_package = "github.com/golang/protobuf/ptypes/struct;structpb";
|
option go_package = "github.com/golang/protobuf/ptypes/struct;structpb";
|
||||||
option java_package = "com.google.protobuf";
|
option java_package = "com.google.protobuf";
|
||||||
option java_outer_classname = "StructProto";
|
option java_outer_classname = "StructProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
option java_generate_equals_and_hash = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
option objc_class_prefix = "GPB";
|
||||||
|
|
||||||
|
|
||||||
|
65
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
generated
vendored
65
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
|
// source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package timestamp is a generated protocol buffer package.
|
Package timestamp is a generated protocol buffer package.
|
||||||
@ -40,6 +39,8 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
|||||||
// and from RFC 3339 date strings.
|
// and from RFC 3339 date strings.
|
||||||
// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
|
// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
|
||||||
//
|
//
|
||||||
|
// # Examples
|
||||||
|
//
|
||||||
// Example 1: Compute Timestamp from POSIX `time()`.
|
// Example 1: Compute Timestamp from POSIX `time()`.
|
||||||
//
|
//
|
||||||
// Timestamp timestamp;
|
// Timestamp timestamp;
|
||||||
@ -77,15 +78,36 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
|||||||
//
|
//
|
||||||
// Example 5: Compute Timestamp from current time in Python.
|
// Example 5: Compute Timestamp from current time in Python.
|
||||||
//
|
//
|
||||||
// now = time.time()
|
// timestamp = Timestamp()
|
||||||
// seconds = int(now)
|
// timestamp.GetCurrentTime()
|
||||||
// nanos = int((now - seconds) * 10**9)
|
//
|
||||||
// timestamp = Timestamp(seconds=seconds, nanos=nanos)
|
// # JSON Mapping
|
||||||
|
//
|
||||||
|
// In JSON format, the Timestamp type is encoded as a string in the
|
||||||
|
// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
|
||||||
|
// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
|
||||||
|
// where {year} is always expressed using four digits while {month}, {day},
|
||||||
|
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
||||||
|
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
||||||
|
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
||||||
|
// is required, though only UTC (as indicated by "Z") is presently supported.
|
||||||
|
//
|
||||||
|
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
||||||
|
// 01:30 UTC on January 15, 2017.
|
||||||
|
//
|
||||||
|
// In JavaScript, one can convert a Date object to this format using the
|
||||||
|
// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]
|
||||||
|
// method. In Python, a standard `datetime.datetime` object can be converted
|
||||||
|
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
||||||
|
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
||||||
|
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
||||||
|
// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime())
|
||||||
|
// to obtain a formatter capable of generating timestamps in this format.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
type Timestamp struct {
|
type Timestamp struct {
|
||||||
// Represents seconds of UTC time since Unix epoch
|
// Represents seconds of UTC time since Unix epoch
|
||||||
// 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
|
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
|
||||||
// 9999-12-31T23:59:59Z inclusive.
|
// 9999-12-31T23:59:59Z inclusive.
|
||||||
Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"`
|
Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"`
|
||||||
// Non-negative fractions of a second at nanosecond resolution. Negative
|
// Non-negative fractions of a second at nanosecond resolution. Negative
|
||||||
@ -101,6 +123,20 @@ func (*Timestamp) ProtoMessage() {}
|
|||||||
func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
|
func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
|
||||||
|
|
||||||
|
func (m *Timestamp) GetSeconds() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Seconds
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Timestamp) GetNanos() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Nanos
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
|
proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
|
||||||
}
|
}
|
||||||
@ -110,18 +146,17 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 194 bytes of a gzipped FileDescriptorProto
|
// 190 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9,
|
||||||
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
||||||
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0xc9,
|
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0xc9,
|
||||||
0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0x40, 0xb0, 0xf4, 0xc0, 0x6a, 0x84, 0xf8, 0xd3, 0xf3,
|
0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0x40, 0xb0, 0xf4, 0xc0, 0x6a, 0x84, 0xf8, 0xd3, 0xf3,
|
||||||
0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x60, 0x3a, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24,
|
0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x60, 0x3a, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24,
|
||||||
0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83,
|
0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83,
|
||||||
0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d,
|
0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d,
|
||||||
0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x91, 0x91, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x50, 0x27,
|
0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x8e, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x4c, 0x27, 0x3e,
|
||||||
0x3e, 0xb8, 0x91, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0x1c, 0xbd, 0x80, 0x91, 0xf1,
|
0xb8, 0x89, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0xdc, 0xfc, 0x83, 0x91, 0x71, 0x11,
|
||||||
0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, 0xc3, 0x03,
|
0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xc9, 0x01, 0x50, 0xb5, 0x7a, 0xe1,
|
||||||
0xa0, 0xca, 0xf5, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0xda, 0x92,
|
0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x3d, 0x49, 0x6c, 0x60, 0x43, 0x8c,
|
||||||
0xd8, 0xc0, 0xe6, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x17, 0x5f, 0xb7, 0xdc, 0x17, 0x01,
|
0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x59, 0x0a, 0x4d, 0x13, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
34
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
generated
vendored
34
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
generated
vendored
@ -38,7 +38,6 @@ option go_package = "github.com/golang/protobuf/ptypes/timestamp";
|
|||||||
option java_package = "com.google.protobuf";
|
option java_package = "com.google.protobuf";
|
||||||
option java_outer_classname = "TimestampProto";
|
option java_outer_classname = "TimestampProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
option java_generate_equals_and_hash = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
option objc_class_prefix = "GPB";
|
||||||
|
|
||||||
// A Timestamp represents a point in time independent of any time zone
|
// A Timestamp represents a point in time independent of any time zone
|
||||||
@ -53,6 +52,8 @@ option objc_class_prefix = "GPB";
|
|||||||
// and from RFC 3339 date strings.
|
// and from RFC 3339 date strings.
|
||||||
// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
|
// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
|
||||||
//
|
//
|
||||||
|
// # Examples
|
||||||
|
//
|
||||||
// Example 1: Compute Timestamp from POSIX `time()`.
|
// Example 1: Compute Timestamp from POSIX `time()`.
|
||||||
//
|
//
|
||||||
// Timestamp timestamp;
|
// Timestamp timestamp;
|
||||||
@ -90,16 +91,37 @@ option objc_class_prefix = "GPB";
|
|||||||
//
|
//
|
||||||
// Example 5: Compute Timestamp from current time in Python.
|
// Example 5: Compute Timestamp from current time in Python.
|
||||||
//
|
//
|
||||||
// now = time.time()
|
// timestamp = Timestamp()
|
||||||
// seconds = int(now)
|
// timestamp.GetCurrentTime()
|
||||||
// nanos = int((now - seconds) * 10**9)
|
//
|
||||||
// timestamp = Timestamp(seconds=seconds, nanos=nanos)
|
// # JSON Mapping
|
||||||
|
//
|
||||||
|
// In JSON format, the Timestamp type is encoded as a string in the
|
||||||
|
// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
|
||||||
|
// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
|
||||||
|
// where {year} is always expressed using four digits while {month}, {day},
|
||||||
|
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
||||||
|
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
||||||
|
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
||||||
|
// is required, though only UTC (as indicated by "Z") is presently supported.
|
||||||
|
//
|
||||||
|
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
||||||
|
// 01:30 UTC on January 15, 2017.
|
||||||
|
//
|
||||||
|
// In JavaScript, one can convert a Date object to this format using the
|
||||||
|
// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]
|
||||||
|
// method. In Python, a standard `datetime.datetime` object can be converted
|
||||||
|
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
||||||
|
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
||||||
|
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
||||||
|
// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime())
|
||||||
|
// to obtain a formatter capable of generating timestamps in this format.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
message Timestamp {
|
message Timestamp {
|
||||||
|
|
||||||
// Represents seconds of UTC time since Unix epoch
|
// Represents seconds of UTC time since Unix epoch
|
||||||
// 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
|
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
|
||||||
// 9999-12-31T23:59:59Z inclusive.
|
// 9999-12-31T23:59:59Z inclusive.
|
||||||
int64 seconds = 1;
|
int64 seconds = 1;
|
||||||
|
|
||||||
|
82
vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go
generated
vendored
82
vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go
generated
vendored
@ -1,6 +1,5 @@
|
|||||||
// Code generated by protoc-gen-go.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: github.com/golang/protobuf/ptypes/wrappers/wrappers.proto
|
// source: github.com/golang/protobuf/ptypes/wrappers/wrappers.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package wrappers is a generated protocol buffer package.
|
Package wrappers is a generated protocol buffer package.
|
||||||
@ -50,6 +49,13 @@ func (*DoubleValue) ProtoMessage() {}
|
|||||||
func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
|
func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
|
||||||
|
|
||||||
|
func (m *DoubleValue) GetValue() float64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `float`.
|
// Wrapper message for `float`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `FloatValue` is JSON number.
|
// The JSON representation for `FloatValue` is JSON number.
|
||||||
@ -64,6 +70,13 @@ func (*FloatValue) ProtoMessage() {}
|
|||||||
func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
||||||
func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
|
func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
|
||||||
|
|
||||||
|
func (m *FloatValue) GetValue() float32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `int64`.
|
// Wrapper message for `int64`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `Int64Value` is JSON string.
|
// The JSON representation for `Int64Value` is JSON string.
|
||||||
@ -78,6 +91,13 @@ func (*Int64Value) ProtoMessage() {}
|
|||||||
func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
||||||
func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
|
func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
|
||||||
|
|
||||||
|
func (m *Int64Value) GetValue() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `uint64`.
|
// Wrapper message for `uint64`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `UInt64Value` is JSON string.
|
// The JSON representation for `UInt64Value` is JSON string.
|
||||||
@ -92,6 +112,13 @@ func (*UInt64Value) ProtoMessage() {}
|
|||||||
func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
|
func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
|
||||||
func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
|
func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
|
||||||
|
|
||||||
|
func (m *UInt64Value) GetValue() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `int32`.
|
// Wrapper message for `int32`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `Int32Value` is JSON number.
|
// The JSON representation for `Int32Value` is JSON number.
|
||||||
@ -106,6 +133,13 @@ func (*Int32Value) ProtoMessage() {}
|
|||||||
func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
|
func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
|
||||||
func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
|
func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
|
||||||
|
|
||||||
|
func (m *Int32Value) GetValue() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `uint32`.
|
// Wrapper message for `uint32`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `UInt32Value` is JSON number.
|
// The JSON representation for `UInt32Value` is JSON number.
|
||||||
@ -120,6 +154,13 @@ func (*UInt32Value) ProtoMessage() {}
|
|||||||
func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
|
func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
|
||||||
func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
|
func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
|
||||||
|
|
||||||
|
func (m *UInt32Value) GetValue() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `bool`.
|
// Wrapper message for `bool`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `BoolValue` is JSON `true` and `false`.
|
// The JSON representation for `BoolValue` is JSON `true` and `false`.
|
||||||
@ -134,6 +175,13 @@ func (*BoolValue) ProtoMessage() {}
|
|||||||
func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
|
func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
|
||||||
func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
|
func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
|
||||||
|
|
||||||
|
func (m *BoolValue) GetValue() bool {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `string`.
|
// Wrapper message for `string`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `StringValue` is JSON string.
|
// The JSON representation for `StringValue` is JSON string.
|
||||||
@ -148,6 +196,13 @@ func (*StringValue) ProtoMessage() {}
|
|||||||
func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
|
func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
|
||||||
func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
|
func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
|
||||||
|
|
||||||
|
func (m *StringValue) GetValue() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
// Wrapper message for `bytes`.
|
// Wrapper message for `bytes`.
|
||||||
//
|
//
|
||||||
// The JSON representation for `BytesValue` is JSON string.
|
// The JSON representation for `BytesValue` is JSON string.
|
||||||
@ -162,6 +217,13 @@ func (*BytesValue) ProtoMessage() {}
|
|||||||
func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
|
func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
|
||||||
func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
|
func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
|
||||||
|
|
||||||
|
func (m *BytesValue) GetValue() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")
|
proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")
|
||||||
proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue")
|
proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue")
|
||||||
@ -179,8 +241,8 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor0 = []byte{
|
var fileDescriptor0 = []byte{
|
||||||
// 260 bytes of a gzipped FileDescriptorProto
|
// 257 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
|
||||||
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
|
||||||
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x2f,
|
0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x2f,
|
||||||
0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x42, 0x30, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3,
|
0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x42, 0x30, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3,
|
||||||
@ -191,10 +253,10 @@ var fileDescriptor0 = []byte{
|
|||||||
0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4,
|
0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4,
|
||||||
0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1,
|
0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1,
|
||||||
0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, 0xb5, 0x18,
|
0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, 0xb5, 0x18,
|
||||||
0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x7a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75,
|
0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x1a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75,
|
||||||
0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0x5b, 0xc0,
|
0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0xfb, 0xc1,
|
||||||
0xc8, 0xf8, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88,
|
0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0xc4, 0xdc, 0x00, 0xa8,
|
||||||
0xd1, 0x01, 0x50, 0xd5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20,
|
0x52, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0x96, 0x24, 0x36,
|
||||||
0x5d, 0x49, 0x6c, 0x60, 0x63, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa9, 0xdf, 0x64, 0x4b,
|
0xb0, 0x19, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x36, 0x8d, 0xd8, 0x19, 0x02, 0x00,
|
||||||
0x1c, 0x02, 0x00, 0x00,
|
0x00,
|
||||||
}
|
}
|
||||||
|
1
vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto
generated
vendored
1
vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto
generated
vendored
@ -43,7 +43,6 @@ option go_package = "github.com/golang/protobuf/ptypes/wrappers";
|
|||||||
option java_package = "com.google.protobuf";
|
option java_package = "com.google.protobuf";
|
||||||
option java_outer_classname = "WrappersProto";
|
option java_outer_classname = "WrappersProto";
|
||||||
option java_multiple_files = true;
|
option java_multiple_files = true;
|
||||||
option java_generate_equals_and_hash = true;
|
|
||||||
option objc_class_prefix = "GPB";
|
option objc_class_prefix = "GPB";
|
||||||
|
|
||||||
// Wrapper message for `double`.
|
// Wrapper message for `double`.
|
||||||
|
198
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.gitignore
generated
vendored
Normal file
198
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.gitignore
generated
vendored
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
# Created by .ignore support plugin (hsz.mobi)
|
||||||
|
coverage.txt
|
||||||
|
### Go template
|
||||||
|
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Folders
|
||||||
|
_obj
|
||||||
|
_test
|
||||||
|
|
||||||
|
# Architecture specific extensions/prefixes
|
||||||
|
*.[568vq]
|
||||||
|
[568vq].out
|
||||||
|
|
||||||
|
*.cgo1.go
|
||||||
|
*.cgo2.c
|
||||||
|
_cgo_defun.c
|
||||||
|
_cgo_gotypes.go
|
||||||
|
_cgo_export.*
|
||||||
|
|
||||||
|
_testmain.go
|
||||||
|
|
||||||
|
*.exe
|
||||||
|
*.test
|
||||||
|
*.prof
|
||||||
|
### Windows template
|
||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
### Kate template
|
||||||
|
# Swap Files #
|
||||||
|
.*.kate-swp
|
||||||
|
.swp.*
|
||||||
|
### SublimeText template
|
||||||
|
# cache files for sublime text
|
||||||
|
*.tmlanguage.cache
|
||||||
|
*.tmPreferences.cache
|
||||||
|
*.stTheme.cache
|
||||||
|
|
||||||
|
# workspace files are user-specific
|
||||||
|
*.sublime-workspace
|
||||||
|
|
||||||
|
# project files should be checked into the repository, unless a significant
|
||||||
|
# proportion of contributors will probably not be using SublimeText
|
||||||
|
# *.sublime-project
|
||||||
|
|
||||||
|
# sftp configuration file
|
||||||
|
sftp-config.json
|
||||||
|
### Linux template
|
||||||
|
*~
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
### JetBrains template
|
||||||
|
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||||
|
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||||
|
|
||||||
|
# User-specific stuff:
|
||||||
|
.idea
|
||||||
|
.idea/tasks.xml
|
||||||
|
.idea/dictionaries
|
||||||
|
.idea/vcs.xml
|
||||||
|
.idea/jsLibraryMappings.xml
|
||||||
|
|
||||||
|
# Sensitive or high-churn files:
|
||||||
|
.idea/dataSources.ids
|
||||||
|
.idea/dataSources.xml
|
||||||
|
.idea/dataSources.local.xml
|
||||||
|
.idea/sqlDataSources.xml
|
||||||
|
.idea/dynamic.xml
|
||||||
|
.idea/uiDesigner.xml
|
||||||
|
|
||||||
|
# Gradle:
|
||||||
|
.idea/gradle.xml
|
||||||
|
.idea/libraries
|
||||||
|
|
||||||
|
# Mongo Explorer plugin:
|
||||||
|
.idea/mongoSettings.xml
|
||||||
|
|
||||||
|
## File-based project format:
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
## Plugin-specific files:
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# mpeltonen/sbt-idea plugin
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# JIRA plugin
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
|
||||||
|
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
### Xcode template
|
||||||
|
# Xcode
|
||||||
|
#
|
||||||
|
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||||
|
|
||||||
|
## Build generated
|
||||||
|
build/
|
||||||
|
DerivedData/
|
||||||
|
|
||||||
|
## Various settings
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
xcuserdata/
|
||||||
|
|
||||||
|
## Other
|
||||||
|
*.moved-aside
|
||||||
|
*.xccheckout
|
||||||
|
*.xcscmblueprint
|
||||||
|
### Eclipse template
|
||||||
|
|
||||||
|
.metadata
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
local.properties
|
||||||
|
.settings/
|
||||||
|
.loadpath
|
||||||
|
.recommenders
|
||||||
|
|
||||||
|
# Eclipse Core
|
||||||
|
.project
|
||||||
|
|
||||||
|
# External tool builders
|
||||||
|
.externalToolBuilders/
|
||||||
|
|
||||||
|
# Locally stored "Eclipse launch configurations"
|
||||||
|
*.launch
|
||||||
|
|
||||||
|
# PyDev specific (Python IDE for Eclipse)
|
||||||
|
*.pydevproject
|
||||||
|
|
||||||
|
# CDT-specific (C/C++ Development Tooling)
|
||||||
|
.cproject
|
||||||
|
|
||||||
|
# JDT-specific (Eclipse Java Development Tools)
|
||||||
|
.classpath
|
||||||
|
|
||||||
|
# Java annotation processor (APT)
|
||||||
|
.factorypath
|
||||||
|
|
||||||
|
# PDT-specific (PHP Development Tools)
|
||||||
|
.buildpath
|
||||||
|
|
||||||
|
# sbteclipse plugin
|
||||||
|
.target
|
||||||
|
|
||||||
|
# Tern plugin
|
||||||
|
.tern-project
|
||||||
|
|
||||||
|
# TeXlipse plugin
|
||||||
|
.texlipse
|
||||||
|
|
||||||
|
# STS (Spring Tool Suite)
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
# Code Recommenders
|
||||||
|
.recommenders/
|
||||||
|
|
18
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.travis.yml
generated
vendored
Normal file
18
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
sudo: false
|
||||||
|
language: go
|
||||||
|
go:
|
||||||
|
- 1.6.x
|
||||||
|
- 1.7.x
|
||||||
|
- 1.8.x
|
||||||
|
|
||||||
|
install:
|
||||||
|
- go get github.com/prometheus/client_golang/prometheus
|
||||||
|
- go get google.golang.org/grpc
|
||||||
|
- go get golang.org/x/net/context
|
||||||
|
- go get github.com/stretchr/testify
|
||||||
|
|
||||||
|
script:
|
||||||
|
- ./test_all.sh
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- bash <(curl -s https://codecov.io/bash)
|
201
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/LICENSE
generated
vendored
Normal file
201
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/LICENSE
generated
vendored
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
247
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/README.md
generated
vendored
Normal file
247
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/README.md
generated
vendored
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
# Go gRPC Interceptors for Prometheus monitoring
|
||||||
|
|
||||||
|
[![Travis Build](https://travis-ci.org/grpc-ecosystem/go-grpc-prometheus.svg)](https://travis-ci.org/grpc-ecosystem/go-grpc-prometheus)
|
||||||
|
[![Go Report Card](https://goreportcard.com/badge/github.com/grpc-ecosystem/go-grpc-prometheus)](http://goreportcard.com/report/grpc-ecosystem/go-grpc-prometheus)
|
||||||
|
[![GoDoc](http://img.shields.io/badge/GoDoc-Reference-blue.svg)](https://godoc.org/github.com/grpc-ecosystem/go-grpc-prometheus)
|
||||||
|
[![SourceGraph](https://sourcegraph.com/github.com/grpc-ecosystem/go-grpc-prometheus/-/badge.svg)](https://sourcegraph.com/github.com/grpc-ecosystem/go-grpc-prometheus/?badge)
|
||||||
|
[![codecov](https://codecov.io/gh/grpc-ecosystem/go-grpc-prometheus/branch/master/graph/badge.svg)](https://codecov.io/gh/grpc-ecosystem/go-grpc-prometheus)
|
||||||
|
[![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
|
||||||
|
|
||||||
|
[Prometheus](https://prometheus.io/) monitoring for your [gRPC Go](https://github.com/grpc/grpc-go) servers and clients.
|
||||||
|
|
||||||
|
A sister implementation for [gRPC Java](https://github.com/grpc/grpc-java) (same metrics, same semantics) is in [grpc-ecosystem/java-grpc-prometheus](https://github.com/grpc-ecosystem/java-grpc-prometheus).
|
||||||
|
|
||||||
|
## Interceptors
|
||||||
|
|
||||||
|
[gRPC Go](https://github.com/grpc/grpc-go) recently acquired support for Interceptors, i.e. middleware that is executed
|
||||||
|
by a gRPC Server before the request is passed onto the user's application logic. It is a perfect way to implement
|
||||||
|
common patterns: auth, logging and... monitoring.
|
||||||
|
|
||||||
|
To use Interceptors in chains, please see [`go-grpc-middleware`](https://github.com/mwitkow/go-grpc-middleware).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
There are two types of interceptors: client-side and server-side. This package provides monitoring Interceptors for both.
|
||||||
|
|
||||||
|
### Server-side
|
||||||
|
|
||||||
|
```go
|
||||||
|
import "github.com/grpc-ecosystem/go-grpc-prometheus"
|
||||||
|
...
|
||||||
|
// Initialize your gRPC server's interceptor.
|
||||||
|
myServer := grpc.NewServer(
|
||||||
|
grpc.StreamInterceptor(grpc_prometheus.StreamServerInterceptor),
|
||||||
|
grpc.UnaryInterceptor(grpc_prometheus.UnaryServerInterceptor),
|
||||||
|
)
|
||||||
|
// Register your gRPC service implementations.
|
||||||
|
myservice.RegisterMyServiceServer(s.server, &myServiceImpl{})
|
||||||
|
// After all your registrations, make sure all of the Prometheus metrics are initialized.
|
||||||
|
grpc_prometheus.Register(myServer)
|
||||||
|
// Register Prometheus metrics handler.
|
||||||
|
http.Handle("/metrics", prometheus.Handler())
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Client-side
|
||||||
|
|
||||||
|
```go
|
||||||
|
import "github.com/grpc-ecosystem/go-grpc-prometheus"
|
||||||
|
...
|
||||||
|
clientConn, err = grpc.Dial(
|
||||||
|
address,
|
||||||
|
grpc.WithUnaryInterceptor(UnaryClientInterceptor),
|
||||||
|
grpc.WithStreamInterceptor(StreamClientInterceptor)
|
||||||
|
)
|
||||||
|
client = pb_testproto.NewTestServiceClient(clientConn)
|
||||||
|
resp, err := client.PingEmpty(s.ctx, &myservice.Request{Msg: "hello"})
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
|
||||||
|
## Labels
|
||||||
|
|
||||||
|
All server-side metrics start with `grpc_server` as Prometheus subsystem name. All client-side metrics start with `grpc_client`. Both of them have mirror-concepts. Similarly all methods
|
||||||
|
contain the same rich labels:
|
||||||
|
|
||||||
|
* `grpc_service` - the [gRPC service](http://www.grpc.io/docs/#defining-a-service) name, which is the combination of protobuf `package` and
|
||||||
|
the `grpc_service` section name. E.g. for `package = mwitkow.testproto` and
|
||||||
|
`service TestService` the label will be `grpc_service="mwitkow.testproto.TestService"`
|
||||||
|
* `grpc_method` - the name of the method called on the gRPC service. E.g.
|
||||||
|
`grpc_method="Ping"`
|
||||||
|
* `grpc_type` - the gRPC [type of request](http://www.grpc.io/docs/guides/concepts.html#rpc-life-cycle).
|
||||||
|
Differentiating between the two is important especially for latency measurements.
|
||||||
|
|
||||||
|
- `unary` is single request, single response RPC
|
||||||
|
- `client_stream` is a multi-request, single response RPC
|
||||||
|
- `server_stream` is a single request, multi-response RPC
|
||||||
|
- `bidi_stream` is a multi-request, multi-response RPC
|
||||||
|
|
||||||
|
|
||||||
|
Additionally for completed RPCs, the following labels are used:
|
||||||
|
|
||||||
|
* `grpc_code` - the human-readable [gRPC status code](https://github.com/grpc/grpc-go/blob/master/codes/codes.go).
|
||||||
|
The list of all statuses is to long, but here are some common ones:
|
||||||
|
|
||||||
|
- `OK` - means the RPC was successful
|
||||||
|
- `IllegalArgument` - RPC contained bad values
|
||||||
|
- `Internal` - server-side error not disclosed to the clients
|
||||||
|
|
||||||
|
## Counters
|
||||||
|
|
||||||
|
The counters and their up to date documentation is in [server_reporter.go](server_reporter.go) and [client_reporter.go](client_reporter.go)
|
||||||
|
the respective Prometheus handler (usually `/metrics`).
|
||||||
|
|
||||||
|
For the purpose of this documentation we will only discuss `grpc_server` metrics. The `grpc_client` ones contain mirror concepts.
|
||||||
|
|
||||||
|
For simplicity, let's assume we're tracking a single server-side RPC call of [`mwitkow.testproto.TestService`](examples/testproto/test.proto),
|
||||||
|
calling the method `PingList`. The call succeeds and returns 20 messages in the stream.
|
||||||
|
|
||||||
|
First, immediately after the server receives the call it will increment the
|
||||||
|
`grpc_server_started_total` and start the handling time clock (if histograms are enabled).
|
||||||
|
|
||||||
|
```jsoniq
|
||||||
|
grpc_server_started_total{grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Then the user logic gets invoked. It receives one message from the client containing the request
|
||||||
|
(it's a `server_stream`):
|
||||||
|
|
||||||
|
```jsoniq
|
||||||
|
grpc_server_msg_received_total{grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 1
|
||||||
|
```
|
||||||
|
|
||||||
|
The user logic may return an error, or send multiple messages back to the client. In this case, on
|
||||||
|
each of the 20 messages sent back, a counter will be incremented:
|
||||||
|
|
||||||
|
```jsoniq
|
||||||
|
grpc_server_msg_sent_total{grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 20
|
||||||
|
```
|
||||||
|
|
||||||
|
After the call completes, it's status (`OK` or other [gRPC status code](https://github.com/grpc/grpc-go/blob/master/codes/codes.go))
|
||||||
|
and the relevant call labels increment the `grpc_server_handled_total` counter.
|
||||||
|
|
||||||
|
```jsoniq
|
||||||
|
grpc_server_handled_total{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Histograms
|
||||||
|
|
||||||
|
[Prometheus histograms](https://prometheus.io/docs/concepts/metric_types/#histogram) are a great way
|
||||||
|
to measure latency distributions of your RPCs. However since it is bad practice to have metrics
|
||||||
|
of [high cardinality](https://prometheus.io/docs/practices/instrumentation/#do-not-overuse-labels))
|
||||||
|
the latency monitoring metrics are disabled by default. To enable them please call the following
|
||||||
|
in your server initialization code:
|
||||||
|
|
||||||
|
```jsoniq
|
||||||
|
grpc_prometheus.EnableHandlingTimeHistogram()
|
||||||
|
```
|
||||||
|
|
||||||
|
After the call completes, it's handling time will be recorded in a [Prometheus histogram](https://prometheus.io/docs/concepts/metric_types/#histogram)
|
||||||
|
variable `grpc_server_handling_seconds`. It contains three sub-metrics:
|
||||||
|
|
||||||
|
* `grpc_server_handling_seconds_count` - the count of all completed RPCs by status and method
|
||||||
|
* `grpc_server_handling_seconds_sum` - cumulative time of RPCs by status and method, useful for
|
||||||
|
calculating average handling times
|
||||||
|
* `grpc_server_handling_seconds_bucket` - contains the counts of RPCs by status and method in respective
|
||||||
|
handling-time buckets. These buckets can be used by Prometheus to estimate SLAs (see [here](https://prometheus.io/docs/practices/histograms/))
|
||||||
|
|
||||||
|
The counter values will look as follows:
|
||||||
|
|
||||||
|
```jsoniq
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.005"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.01"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.025"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.05"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.1"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.25"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="0.5"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="1"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="2.5"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="5"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="10"} 1
|
||||||
|
grpc_server_handling_seconds_bucket{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream",le="+Inf"} 1
|
||||||
|
grpc_server_handling_seconds_sum{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 0.0003866430000000001
|
||||||
|
grpc_server_handling_seconds_count{grpc_code="OK",grpc_method="PingList",grpc_service="mwitkow.testproto.TestService",grpc_type="server_stream"} 1
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Useful query examples
|
||||||
|
|
||||||
|
Prometheus philosophy is to provide the most detailed metrics possible to the monitoring system, and
|
||||||
|
let the aggregations be handled there. The verbosity of above metrics make it possible to have that
|
||||||
|
flexibility. Here's a couple of useful monitoring queries:
|
||||||
|
|
||||||
|
|
||||||
|
### request inbound rate
|
||||||
|
```jsoniq
|
||||||
|
sum(rate(grpc_server_started_total{job="foo"}[1m])) by (grpc_service)
|
||||||
|
```
|
||||||
|
For `job="foo"` (common label to differentiate between Prometheus monitoring targets), calculate the
|
||||||
|
rate of requests per second (1 minute window) for each gRPC `grpc_service` that the job has. Please note
|
||||||
|
how the `grpc_method` is being omitted here: all methods of a given gRPC service will be summed together.
|
||||||
|
|
||||||
|
### unary request error rate
|
||||||
|
```jsoniq
|
||||||
|
sum(rate(grpc_server_handled_total{job="foo",grpc_type="unary",grpc_code!="OK"}[1m])) by (grpc_service)
|
||||||
|
```
|
||||||
|
For `job="foo"`, calculate the per-`grpc_service` rate of `unary` (1:1) RPCs that failed, i.e. the
|
||||||
|
ones that didn't finish with `OK` code.
|
||||||
|
|
||||||
|
### unary request error percentage
|
||||||
|
```jsoniq
|
||||||
|
sum(rate(grpc_server_handled_total{job="foo",grpc_type="unary",grpc_code!="OK"}[1m])) by (grpc_service)
|
||||||
|
/
|
||||||
|
sum(rate(grpc_server_started_total{job="foo",grpc_type="unary"}[1m])) by (grpc_service)
|
||||||
|
* 100.0
|
||||||
|
```
|
||||||
|
For `job="foo"`, calculate the percentage of failed requests by service. It's easy to notice that
|
||||||
|
this is a combination of the two above examples. This is an example of a query you would like to
|
||||||
|
[alert on](https://prometheus.io/docs/alerting/rules/) in your system for SLA violations, e.g.
|
||||||
|
"no more than 1% requests should fail".
|
||||||
|
|
||||||
|
### average response stream size
|
||||||
|
```jsoniq
|
||||||
|
sum(rate(grpc_server_msg_sent_total{job="foo",grpc_type="server_stream"}[10m])) by (grpc_service)
|
||||||
|
/
|
||||||
|
sum(rate(grpc_server_started_total{job="foo",grpc_type="server_stream"}[10m])) by (grpc_service)
|
||||||
|
```
|
||||||
|
For `job="foo"` what is the `grpc_service`-wide `10m` average of messages returned for all `
|
||||||
|
server_stream` RPCs. This allows you to track the stream sizes returned by your system, e.g. allows
|
||||||
|
you to track when clients started to send "wide" queries that ret
|
||||||
|
Note the divisor is the number of started RPCs, in order to account for in-flight requests.
|
||||||
|
|
||||||
|
### 99%-tile latency of unary requests
|
||||||
|
```jsoniq
|
||||||
|
histogram_quantile(0.99,
|
||||||
|
sum(rate(grpc_server_handling_seconds_bucket{job="foo",grpc_type="unary"}[5m])) by (grpc_service,le)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
For `job="foo"`, returns an 99%-tile [quantile estimation](https://prometheus.io/docs/practices/histograms/#quantiles)
|
||||||
|
of the handling time of RPCs per service. Please note the `5m` rate, this means that the quantile
|
||||||
|
estimation will take samples in a rolling `5m` window. When combined with other quantiles
|
||||||
|
(e.g. 50%, 90%), this query gives you tremendous insight into the responsiveness of your system
|
||||||
|
(e.g. impact of caching).
|
||||||
|
|
||||||
|
### percentage of slow unary queries (>250ms)
|
||||||
|
```jsoniq
|
||||||
|
100.0 - (
|
||||||
|
sum(rate(grpc_server_handling_seconds_bucket{job="foo",grpc_type="unary",le="0.25"}[5m])) by (grpc_service)
|
||||||
|
/
|
||||||
|
sum(rate(grpc_server_handling_seconds_count{job="foo",grpc_type="unary"}[5m])) by (grpc_service)
|
||||||
|
) * 100.0
|
||||||
|
```
|
||||||
|
For `job="foo"` calculate the by-`grpc_service` fraction of slow requests that took longer than `0.25`
|
||||||
|
seconds. This query is relatively complex, since the Prometheus aggregations use `le` (less or equal)
|
||||||
|
buckets, meaning that counting "fast" requests fractions is easier. However, simple maths helps.
|
||||||
|
This is an example of a query you would like to alert on in your system for SLA violations,
|
||||||
|
e.g. "less than 1% of requests are slower than 250ms".
|
||||||
|
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
This code has been used since August 2015 as the basis for monitoring of *production* gRPC micro services at [Improbable](https://improbable.io).
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
`go-grpc-prometheus` is released under the Apache 2.0 license. See the [LICENSE](LICENSE) file for details.
|
72
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client.go
generated
vendored
Normal file
72
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client.go
generated
vendored
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
// gRPC Prometheus monitoring interceptors for client-side gRPC.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UnaryClientInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
||||||
|
func UnaryClientInterceptor(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
|
||||||
|
monitor := newClientReporter(Unary, method)
|
||||||
|
monitor.SentMessage()
|
||||||
|
err := invoker(ctx, method, req, reply, cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
monitor.ReceivedMessage()
|
||||||
|
}
|
||||||
|
monitor.Handled(grpc.Code(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// StreamServerInterceptor is a gRPC client-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
||||||
|
func StreamClientInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
|
||||||
|
monitor := newClientReporter(clientStreamType(desc), method)
|
||||||
|
clientStream, err := streamer(ctx, desc, cc, method, opts...)
|
||||||
|
if err != nil {
|
||||||
|
monitor.Handled(grpc.Code(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &monitoredClientStream{clientStream, monitor}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func clientStreamType(desc *grpc.StreamDesc) grpcType {
|
||||||
|
if desc.ClientStreams && !desc.ServerStreams {
|
||||||
|
return ClientStream
|
||||||
|
} else if !desc.ClientStreams && desc.ServerStreams {
|
||||||
|
return ServerStream
|
||||||
|
}
|
||||||
|
return BidiStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// monitoredClientStream wraps grpc.ClientStream allowing each Sent/Recv of message to increment counters.
|
||||||
|
type monitoredClientStream struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
monitor *clientReporter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredClientStream) SendMsg(m interface{}) error {
|
||||||
|
err := s.ClientStream.SendMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.SentMessage()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredClientStream) RecvMsg(m interface{}) error {
|
||||||
|
err := s.ClientStream.RecvMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.ReceivedMessage()
|
||||||
|
} else if err == io.EOF {
|
||||||
|
s.monitor.Handled(codes.OK)
|
||||||
|
} else {
|
||||||
|
s.monitor.Handled(grpc.Code(err))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
111
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_reporter.go
generated
vendored
Normal file
111
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_reporter.go
generated
vendored
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
|
||||||
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
clientStartedCounter = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "client",
|
||||||
|
Name: "started_total",
|
||||||
|
Help: "Total number of RPCs started on the client.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
||||||
|
|
||||||
|
clientHandledCounter = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "client",
|
||||||
|
Name: "handled_total",
|
||||||
|
Help: "Total number of RPCs completed by the client, regardless of success or failure.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method", "grpc_code"})
|
||||||
|
|
||||||
|
clientStreamMsgReceived = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "client",
|
||||||
|
Name: "msg_received_total",
|
||||||
|
Help: "Total number of RPC stream messages received by the client.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
||||||
|
|
||||||
|
clientStreamMsgSent = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "client",
|
||||||
|
Name: "msg_sent_total",
|
||||||
|
Help: "Total number of gRPC stream messages sent by the client.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
||||||
|
|
||||||
|
clientHandledHistogramEnabled = false
|
||||||
|
clientHandledHistogramOpts = prom.HistogramOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "client",
|
||||||
|
Name: "handling_seconds",
|
||||||
|
Help: "Histogram of response latency (seconds) of the gRPC until it is finished by the application.",
|
||||||
|
Buckets: prom.DefBuckets,
|
||||||
|
}
|
||||||
|
clientHandledHistogram *prom.HistogramVec
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
prom.MustRegister(clientStartedCounter)
|
||||||
|
prom.MustRegister(clientHandledCounter)
|
||||||
|
prom.MustRegister(clientStreamMsgReceived)
|
||||||
|
prom.MustRegister(clientStreamMsgSent)
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableClientHandlingTimeHistogram turns on recording of handling time of RPCs.
|
||||||
|
// Histogram metrics can be very expensive for Prometheus to retain and query.
|
||||||
|
func EnableClientHandlingTimeHistogram(opts ...HistogramOption) {
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&clientHandledHistogramOpts)
|
||||||
|
}
|
||||||
|
if !clientHandledHistogramEnabled {
|
||||||
|
clientHandledHistogram = prom.NewHistogramVec(
|
||||||
|
clientHandledHistogramOpts,
|
||||||
|
[]string{"grpc_type", "grpc_service", "grpc_method"},
|
||||||
|
)
|
||||||
|
prom.Register(clientHandledHistogram)
|
||||||
|
}
|
||||||
|
clientHandledHistogramEnabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
type clientReporter struct {
|
||||||
|
rpcType grpcType
|
||||||
|
serviceName string
|
||||||
|
methodName string
|
||||||
|
startTime time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
func newClientReporter(rpcType grpcType, fullMethod string) *clientReporter {
|
||||||
|
r := &clientReporter{rpcType: rpcType}
|
||||||
|
if clientHandledHistogramEnabled {
|
||||||
|
r.startTime = time.Now()
|
||||||
|
}
|
||||||
|
r.serviceName, r.methodName = splitMethodName(fullMethod)
|
||||||
|
clientStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *clientReporter) ReceivedMessage() {
|
||||||
|
clientStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *clientReporter) SentMessage() {
|
||||||
|
clientStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *clientReporter) Handled(code codes.Code) {
|
||||||
|
clientHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc()
|
||||||
|
if clientHandledHistogramEnabled {
|
||||||
|
clientHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds())
|
||||||
|
}
|
||||||
|
}
|
212
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_test.go
generated
vendored
Normal file
212
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_test.go
generated
vendored
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"io"
|
||||||
|
|
||||||
|
pb_testproto "github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestClientInterceptorSuite(t *testing.T) {
|
||||||
|
suite.Run(t, &ClientInterceptorTestSuite{})
|
||||||
|
}
|
||||||
|
|
||||||
|
type ClientInterceptorTestSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
|
||||||
|
serverListener net.Listener
|
||||||
|
server *grpc.Server
|
||||||
|
clientConn *grpc.ClientConn
|
||||||
|
testClient pb_testproto.TestServiceClient
|
||||||
|
ctx context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) SetupSuite() {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
EnableClientHandlingTimeHistogram()
|
||||||
|
|
||||||
|
s.serverListener, err = net.Listen("tcp", "127.0.0.1:0")
|
||||||
|
require.NoError(s.T(), err, "must be able to allocate a port for serverListener")
|
||||||
|
|
||||||
|
// This is the point where we hook up the interceptor
|
||||||
|
s.server = grpc.NewServer()
|
||||||
|
pb_testproto.RegisterTestServiceServer(s.server, &testService{t: s.T()})
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
s.server.Serve(s.serverListener)
|
||||||
|
}()
|
||||||
|
|
||||||
|
s.clientConn, err = grpc.Dial(
|
||||||
|
s.serverListener.Addr().String(),
|
||||||
|
grpc.WithInsecure(),
|
||||||
|
grpc.WithBlock(),
|
||||||
|
grpc.WithUnaryInterceptor(UnaryClientInterceptor),
|
||||||
|
grpc.WithStreamInterceptor(StreamClientInterceptor),
|
||||||
|
grpc.WithTimeout(2*time.Second))
|
||||||
|
require.NoError(s.T(), err, "must not error on client Dial")
|
||||||
|
s.testClient = pb_testproto.NewTestServiceClient(s.clientConn)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) SetupTest() {
|
||||||
|
// Make all RPC calls last at most 2 sec, meaning all async issues or deadlock will not kill tests.
|
||||||
|
s.ctx, _ = context.WithTimeout(context.TODO(), 2*time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TearDownSuite() {
|
||||||
|
if s.serverListener != nil {
|
||||||
|
s.server.Stop()
|
||||||
|
s.T().Logf("stopped grpc.Server at: %v", s.serverListener.Addr().String())
|
||||||
|
s.serverListener.Close()
|
||||||
|
|
||||||
|
}
|
||||||
|
if s.clientConn != nil {
|
||||||
|
s.clientConn.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestUnaryIncrementsStarted() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_started_total", "PingEmpty", "unary")
|
||||||
|
s.testClient.PingEmpty(s.ctx, &pb_testproto.Empty{})
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_started_total", "PingEmpty", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_started_total should be incremented for PingEmpty")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_started_total", "PingError", "unary")
|
||||||
|
s.testClient.PingError(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.Unavailable)})
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_started_total", "PingError", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_started_total should be incremented for PingError")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestUnaryIncrementsHandled() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingEmpty", "unary", "OK")
|
||||||
|
s.testClient.PingEmpty(s.ctx, &pb_testproto.Empty{}) // should return with code=OK
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingEmpty", "unary", "OK")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handled_count should be incremented for PingEmpty")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingError", "unary", "FailedPrecondition")
|
||||||
|
s.testClient.PingError(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingError", "unary", "FailedPrecondition")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handled_total should be incremented for PingError")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestUnaryIncrementsHistograms() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingEmpty", "unary")
|
||||||
|
s.testClient.PingEmpty(s.ctx, &pb_testproto.Empty{}) // should return with code=OK
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingEmpty", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handled_count should be incremented for PingEmpty")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingError", "unary")
|
||||||
|
s.testClient.PingError(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingError", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handling_seconds_count should be incremented for PingError")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestStreamingIncrementsStarted() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_started_total", "PingList", "server_stream")
|
||||||
|
s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{})
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_started_total", "PingList", "server_stream")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_started_total should be incremented for PingList")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestStreamingIncrementsHistograms() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
ss, _ := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{}) // should return with code=OK
|
||||||
|
// Do a read, just for kicks.
|
||||||
|
for {
|
||||||
|
_, err := ss.Recv()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
require.NoError(s.T(), err, "reading pingList shouldn't fail")
|
||||||
|
}
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handling_seconds_count should be incremented for PingList OK")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
ss, err := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
require.NoError(s.T(), err, "PingList must not fail immedietely")
|
||||||
|
// Do a read, just to progate errors.
|
||||||
|
_, err = ss.Recv()
|
||||||
|
require.Equal(s.T(), codes.FailedPrecondition, grpc.Code(err), "Recv must return FailedPrecondition, otherwise the test is wrong")
|
||||||
|
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handling_seconds_count should be incremented for PingList FailedPrecondition")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestStreamingIncrementsHandled() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingList", "server_stream", "OK")
|
||||||
|
ss, _ := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{}) // should return with code=OK
|
||||||
|
// Do a read, just for kicks.
|
||||||
|
for {
|
||||||
|
_, err := ss.Recv()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
require.NoError(s.T(), err, "reading pingList shouldn't fail")
|
||||||
|
}
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingList", "server_stream", "OK")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handled_total should be incremented for PingList OK")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingList", "server_stream", "FailedPrecondition")
|
||||||
|
ss, err := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
require.NoError(s.T(), err, "PingList must not fail immedietely")
|
||||||
|
// Do a read, just to progate errors.
|
||||||
|
_, err = ss.Recv()
|
||||||
|
require.Equal(s.T(), codes.FailedPrecondition, grpc.Code(err), "Recv must return FailedPrecondition, otherwise the test is wrong")
|
||||||
|
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_client_handled_total", "PingList", "server_stream", "FailedPrecondition")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_client_handled_total should be incremented for PingList FailedPrecondition")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ClientInterceptorTestSuite) TestStreamingIncrementsMessageCounts() {
|
||||||
|
beforeRecv := sumCountersForMetricAndLabels(s.T(), "grpc_client_msg_received_total", "PingList", "server_stream")
|
||||||
|
beforeSent := sumCountersForMetricAndLabels(s.T(), "grpc_client_msg_sent_total", "PingList", "server_stream")
|
||||||
|
ss, _ := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{}) // should return with code=OK
|
||||||
|
// Do a read, just for kicks.
|
||||||
|
count := 0
|
||||||
|
for {
|
||||||
|
_, err := ss.Recv()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
require.NoError(s.T(), err, "reading pingList shouldn't fail")
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
require.EqualValues(s.T(), countListResponses, count, "Number of received msg on the wire must match")
|
||||||
|
afterSent := sumCountersForMetricAndLabels(s.T(), "grpc_client_msg_sent_total", "PingList", "server_stream")
|
||||||
|
afterRecv := sumCountersForMetricAndLabels(s.T(), "grpc_client_msg_received_total", "PingList", "server_stream")
|
||||||
|
|
||||||
|
assert.EqualValues(s.T(), beforeSent+1, afterSent, "grpc_client_msg_sent_total should be incremented 20 times for PingList")
|
||||||
|
assert.EqualValues(s.T(), beforeRecv+countListResponses, afterRecv, "grpc_client_msg_sent_total should be incremented ones for PingList ")
|
||||||
|
}
|
10
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto/Makefile
generated
vendored
Normal file
10
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto/Makefile
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
all: test_go
|
||||||
|
|
||||||
|
test_go: test.proto
|
||||||
|
PATH="${GOPATH}/bin:${PATH}" protoc \
|
||||||
|
-I. \
|
||||||
|
-I${GOPATH}/src \
|
||||||
|
--go_out=plugins=grpc:. \
|
||||||
|
test.proto
|
||||||
|
|
||||||
|
|
329
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto/test.pb.go
generated
vendored
Normal file
329
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto/test.pb.go
generated
vendored
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
// Code generated by protoc-gen-go.
|
||||||
|
// source: test.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package mwitkow_testproto is a generated protocol buffer package.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
test.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
Empty
|
||||||
|
PingRequest
|
||||||
|
PingResponse
|
||||||
|
*/
|
||||||
|
package mwitkow_testproto
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "golang.org/x/net/context"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
||||||
|
|
||||||
|
type Empty struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Empty) Reset() { *m = Empty{} }
|
||||||
|
func (m *Empty) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*Empty) ProtoMessage() {}
|
||||||
|
func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
|
|
||||||
|
type PingRequest struct {
|
||||||
|
Value string `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
|
||||||
|
SleepTimeMs int32 `protobuf:"varint,2,opt,name=sleep_time_ms,json=sleepTimeMs" json:"sleep_time_ms,omitempty"`
|
||||||
|
ErrorCodeReturned uint32 `protobuf:"varint,3,opt,name=error_code_returned,json=errorCodeReturned" json:"error_code_returned,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PingRequest) Reset() { *m = PingRequest{} }
|
||||||
|
func (m *PingRequest) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*PingRequest) ProtoMessage() {}
|
||||||
|
func (*PingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
||||||
|
|
||||||
|
func (m *PingRequest) GetValue() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PingRequest) GetSleepTimeMs() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.SleepTimeMs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PingRequest) GetErrorCodeReturned() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.ErrorCodeReturned
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type PingResponse struct {
|
||||||
|
Value string `protobuf:"bytes,1,opt,name=Value,json=value" json:"Value,omitempty"`
|
||||||
|
Counter int32 `protobuf:"varint,2,opt,name=counter" json:"counter,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PingResponse) Reset() { *m = PingResponse{} }
|
||||||
|
func (m *PingResponse) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*PingResponse) ProtoMessage() {}
|
||||||
|
func (*PingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
||||||
|
|
||||||
|
func (m *PingResponse) GetValue() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *PingResponse) GetCounter() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Counter
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*Empty)(nil), "mwitkow.testproto.Empty")
|
||||||
|
proto.RegisterType((*PingRequest)(nil), "mwitkow.testproto.PingRequest")
|
||||||
|
proto.RegisterType((*PingResponse)(nil), "mwitkow.testproto.PingResponse")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ context.Context
|
||||||
|
var _ grpc.ClientConn
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the grpc package it is being compiled against.
|
||||||
|
const _ = grpc.SupportPackageIsVersion4
|
||||||
|
|
||||||
|
// Client API for TestService service
|
||||||
|
|
||||||
|
type TestServiceClient interface {
|
||||||
|
PingEmpty(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*PingResponse, error)
|
||||||
|
Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error)
|
||||||
|
PingError(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error)
|
||||||
|
PingList(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (TestService_PingListClient, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type testServiceClient struct {
|
||||||
|
cc *grpc.ClientConn
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTestServiceClient(cc *grpc.ClientConn) TestServiceClient {
|
||||||
|
return &testServiceClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *testServiceClient) PingEmpty(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*PingResponse, error) {
|
||||||
|
out := new(PingResponse)
|
||||||
|
err := grpc.Invoke(ctx, "/mwitkow.testproto.TestService/PingEmpty", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *testServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) {
|
||||||
|
out := new(PingResponse)
|
||||||
|
err := grpc.Invoke(ctx, "/mwitkow.testproto.TestService/Ping", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *testServiceClient) PingError(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error) {
|
||||||
|
out := new(Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/mwitkow.testproto.TestService/PingError", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *testServiceClient) PingList(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (TestService_PingListClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[0], c.cc, "/mwitkow.testproto.TestService/PingList", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &testServicePingListClient{stream}
|
||||||
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type TestService_PingListClient interface {
|
||||||
|
Recv() (*PingResponse, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type testServicePingListClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *testServicePingListClient) Recv() (*PingResponse, error) {
|
||||||
|
m := new(PingResponse)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server API for TestService service
|
||||||
|
|
||||||
|
type TestServiceServer interface {
|
||||||
|
PingEmpty(context.Context, *Empty) (*PingResponse, error)
|
||||||
|
Ping(context.Context, *PingRequest) (*PingResponse, error)
|
||||||
|
PingError(context.Context, *PingRequest) (*Empty, error)
|
||||||
|
PingList(*PingRequest, TestService_PingListServer) error
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) {
|
||||||
|
s.RegisterService(&_TestService_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _TestService_PingEmpty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(Empty)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(TestServiceServer).PingEmpty(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/mwitkow.testproto.TestService/PingEmpty",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(TestServiceServer).PingEmpty(ctx, req.(*Empty))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _TestService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(PingRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(TestServiceServer).Ping(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/mwitkow.testproto.TestService/Ping",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(TestServiceServer).Ping(ctx, req.(*PingRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _TestService_PingError_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(PingRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(TestServiceServer).PingError(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/mwitkow.testproto.TestService/PingError",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(TestServiceServer).PingError(ctx, req.(*PingRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _TestService_PingList_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
m := new(PingRequest)
|
||||||
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return srv.(TestServiceServer).PingList(m, &testServicePingListServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type TestService_PingListServer interface {
|
||||||
|
Send(*PingResponse) error
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type testServicePingListServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *testServicePingListServer) Send(m *PingResponse) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _TestService_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "mwitkow.testproto.TestService",
|
||||||
|
HandlerType: (*TestServiceServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "PingEmpty",
|
||||||
|
Handler: _TestService_PingEmpty_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "Ping",
|
||||||
|
Handler: _TestService_Ping_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "PingError",
|
||||||
|
Handler: _TestService_PingError_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{
|
||||||
|
{
|
||||||
|
StreamName: "PingList",
|
||||||
|
Handler: _TestService_PingList_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Metadata: "test.proto",
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("test.proto", fileDescriptor0) }
|
||||||
|
|
||||||
|
var fileDescriptor0 = []byte{
|
||||||
|
// 273 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x90, 0xcf, 0x4b, 0xc3, 0x30,
|
||||||
|
0x14, 0xc7, 0xd7, 0x69, 0x9d, 0x7b, 0x75, 0x87, 0x45, 0x0f, 0xc5, 0x83, 0x96, 0x9c, 0x7a, 0x0a,
|
||||||
|
0xa2, 0x77, 0x2f, 0x22, 0x2a, 0x28, 0x4a, 0x1c, 0x5e, 0x8b, 0xb6, 0x0f, 0x09, 0x2e, 0x4d, 0x4d,
|
||||||
|
0x5e, 0x57, 0xfc, 0xdf, 0xfc, 0xe3, 0x24, 0x59, 0x05, 0x61, 0x0e, 0x3d, 0xec, 0x98, 0xcf, 0xf7,
|
||||||
|
0xf1, 0xfd, 0x11, 0x00, 0x42, 0x47, 0xa2, 0xb1, 0x86, 0x0c, 0x9b, 0xea, 0x4e, 0xd1, 0x9b, 0xe9,
|
||||||
|
0x84, 0x67, 0x01, 0xf1, 0x11, 0xc4, 0x97, 0xba, 0xa1, 0x0f, 0xde, 0x41, 0xf2, 0xa0, 0xea, 0x57,
|
||||||
|
0x89, 0xef, 0x2d, 0x3a, 0x62, 0x07, 0x10, 0x2f, 0x9e, 0xe7, 0x2d, 0xa6, 0x51, 0x16, 0xe5, 0x63,
|
||||||
|
0xb9, 0x7c, 0x30, 0x0e, 0x13, 0x37, 0x47, 0x6c, 0x0a, 0x52, 0x1a, 0x0b, 0xed, 0xd2, 0x61, 0x16,
|
||||||
|
0xe5, 0xb1, 0x4c, 0x02, 0x9c, 0x29, 0x8d, 0x77, 0x8e, 0x09, 0xd8, 0x47, 0x6b, 0x8d, 0x2d, 0x4a,
|
||||||
|
0x53, 0x61, 0x61, 0x91, 0x5a, 0x5b, 0x63, 0x95, 0x6e, 0x65, 0x51, 0x3e, 0x91, 0xd3, 0x20, 0x5d,
|
||||||
|
0x98, 0x0a, 0x65, 0x2f, 0xf0, 0x73, 0xd8, 0x5b, 0x06, 0xbb, 0xc6, 0xd4, 0x0e, 0x7d, 0xf2, 0xd3,
|
||||||
|
0x6a, 0x72, 0x0a, 0xa3, 0xd2, 0xb4, 0x35, 0xa1, 0xed, 0x33, 0xbf, 0x9f, 0xa7, 0x9f, 0x43, 0x48,
|
||||||
|
0x66, 0xe8, 0xe8, 0x11, 0xed, 0x42, 0x95, 0xc8, 0xae, 0x61, 0xec, 0xfd, 0xc2, 0x2a, 0x96, 0x8a,
|
||||||
|
0x95, 0xc9, 0x22, 0x28, 0x87, 0xc7, 0xbf, 0x28, 0x3f, 0x7b, 0xf0, 0x01, 0xbb, 0x81, 0x6d, 0x4f,
|
||||||
|
0xd8, 0xd1, 0xda, 0xd3, 0xf0, 0x57, 0xff, 0xb1, 0xba, 0xea, 0x4b, 0xf9, 0xf5, 0x7f, 0xfa, 0xad,
|
||||||
|
0x2d, 0xcd, 0x07, 0xec, 0x1e, 0x76, 0xfd, 0xe9, 0xad, 0x72, 0xb4, 0x81, 0x5e, 0x27, 0xd1, 0xcb,
|
||||||
|
0x4e, 0xe0, 0x67, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x38, 0x3e, 0x02, 0xe9, 0x28, 0x02, 0x00,
|
||||||
|
0x00,
|
||||||
|
}
|
28
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto/test.proto
generated
vendored
Normal file
28
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto/test.proto
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package mwitkow.testproto;
|
||||||
|
|
||||||
|
|
||||||
|
message Empty {
|
||||||
|
}
|
||||||
|
|
||||||
|
message PingRequest {
|
||||||
|
string value = 1;
|
||||||
|
int32 sleep_time_ms = 2;
|
||||||
|
uint32 error_code_returned = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message PingResponse {
|
||||||
|
string Value = 1;
|
||||||
|
int32 counter = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
service TestService {
|
||||||
|
rpc PingEmpty(Empty) returns (PingResponse) {}
|
||||||
|
|
||||||
|
rpc Ping(PingRequest) returns (PingResponse) {}
|
||||||
|
|
||||||
|
rpc PingError(PingRequest) returns (Empty) {}
|
||||||
|
|
||||||
|
rpc PingList(PingRequest) returns (stream PingResponse) {}
|
||||||
|
}
|
74
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server.go
generated
vendored
Normal file
74
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server.go
generated
vendored
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
// gRPC Prometheus monitoring interceptors for server-side gRPC.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PreregisterServices takes a gRPC server and pre-initializes all counters to 0.
|
||||||
|
// This allows for easier monitoring in Prometheus (no missing metrics), and should be called *after* all services have
|
||||||
|
// been registered with the server.
|
||||||
|
func Register(server *grpc.Server) {
|
||||||
|
serviceInfo := server.GetServiceInfo()
|
||||||
|
for serviceName, info := range serviceInfo {
|
||||||
|
for _, mInfo := range info.Methods {
|
||||||
|
preRegisterMethod(serviceName, &mInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnaryServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Unary RPCs.
|
||||||
|
func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
||||||
|
monitor := newServerReporter(Unary, info.FullMethod)
|
||||||
|
monitor.ReceivedMessage()
|
||||||
|
resp, err := handler(ctx, req)
|
||||||
|
monitor.Handled(grpc.Code(err))
|
||||||
|
if err == nil {
|
||||||
|
monitor.SentMessage()
|
||||||
|
}
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// StreamServerInterceptor is a gRPC server-side interceptor that provides Prometheus monitoring for Streaming RPCs.
|
||||||
|
func StreamServerInterceptor(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
|
||||||
|
monitor := newServerReporter(streamRpcType(info), info.FullMethod)
|
||||||
|
err := handler(srv, &monitoredServerStream{ss, monitor})
|
||||||
|
monitor.Handled(grpc.Code(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func streamRpcType(info *grpc.StreamServerInfo) grpcType {
|
||||||
|
if info.IsClientStream && !info.IsServerStream {
|
||||||
|
return ClientStream
|
||||||
|
} else if !info.IsClientStream && info.IsServerStream {
|
||||||
|
return ServerStream
|
||||||
|
}
|
||||||
|
return BidiStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// monitoredStream wraps grpc.ServerStream allowing each Sent/Recv of message to increment counters.
|
||||||
|
type monitoredServerStream struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
monitor *serverReporter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredServerStream) SendMsg(m interface{}) error {
|
||||||
|
err := s.ServerStream.SendMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.SentMessage()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *monitoredServerStream) RecvMsg(m interface{}) error {
|
||||||
|
err := s.ServerStream.RecvMsg(m)
|
||||||
|
if err == nil {
|
||||||
|
s.monitor.ReceivedMessage()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
157
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_reporter.go
generated
vendored
Normal file
157
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_reporter.go
generated
vendored
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
|
||||||
|
prom "github.com/prometheus/client_golang/prometheus"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
type grpcType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
Unary grpcType = "unary"
|
||||||
|
ClientStream grpcType = "client_stream"
|
||||||
|
ServerStream grpcType = "server_stream"
|
||||||
|
BidiStream grpcType = "bidi_stream"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
serverStartedCounter = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "started_total",
|
||||||
|
Help: "Total number of RPCs started on the server.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
||||||
|
|
||||||
|
serverHandledCounter = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "handled_total",
|
||||||
|
Help: "Total number of RPCs completed on the server, regardless of success or failure.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method", "grpc_code"})
|
||||||
|
|
||||||
|
serverStreamMsgReceived = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "msg_received_total",
|
||||||
|
Help: "Total number of RPC stream messages received on the server.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
||||||
|
|
||||||
|
serverStreamMsgSent = prom.NewCounterVec(
|
||||||
|
prom.CounterOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "msg_sent_total",
|
||||||
|
Help: "Total number of gRPC stream messages sent by the server.",
|
||||||
|
}, []string{"grpc_type", "grpc_service", "grpc_method"})
|
||||||
|
|
||||||
|
serverHandledHistogramEnabled = false
|
||||||
|
serverHandledHistogramOpts = prom.HistogramOpts{
|
||||||
|
Namespace: "grpc",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "handling_seconds",
|
||||||
|
Help: "Histogram of response latency (seconds) of gRPC that had been application-level handled by the server.",
|
||||||
|
Buckets: prom.DefBuckets,
|
||||||
|
}
|
||||||
|
serverHandledHistogram *prom.HistogramVec
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
prom.MustRegister(serverStartedCounter)
|
||||||
|
prom.MustRegister(serverHandledCounter)
|
||||||
|
prom.MustRegister(serverStreamMsgReceived)
|
||||||
|
prom.MustRegister(serverStreamMsgSent)
|
||||||
|
}
|
||||||
|
|
||||||
|
type HistogramOption func(*prom.HistogramOpts)
|
||||||
|
|
||||||
|
// WithHistogramBuckets allows you to specify custom bucket ranges for histograms if EnableHandlingTimeHistogram is on.
|
||||||
|
func WithHistogramBuckets(buckets []float64) HistogramOption {
|
||||||
|
return func(o *prom.HistogramOpts) { o.Buckets = buckets }
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnableHandlingTimeHistogram turns on recording of handling time of RPCs for server-side interceptors.
|
||||||
|
// Histogram metrics can be very expensive for Prometheus to retain and query.
|
||||||
|
func EnableHandlingTimeHistogram(opts ...HistogramOption) {
|
||||||
|
for _, o := range opts {
|
||||||
|
o(&serverHandledHistogramOpts)
|
||||||
|
}
|
||||||
|
if !serverHandledHistogramEnabled {
|
||||||
|
serverHandledHistogram = prom.NewHistogramVec(
|
||||||
|
serverHandledHistogramOpts,
|
||||||
|
[]string{"grpc_type", "grpc_service", "grpc_method"},
|
||||||
|
)
|
||||||
|
prom.Register(serverHandledHistogram)
|
||||||
|
}
|
||||||
|
serverHandledHistogramEnabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
type serverReporter struct {
|
||||||
|
rpcType grpcType
|
||||||
|
serviceName string
|
||||||
|
methodName string
|
||||||
|
startTime time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
func newServerReporter(rpcType grpcType, fullMethod string) *serverReporter {
|
||||||
|
r := &serverReporter{rpcType: rpcType}
|
||||||
|
if serverHandledHistogramEnabled {
|
||||||
|
r.startTime = time.Now()
|
||||||
|
}
|
||||||
|
r.serviceName, r.methodName = splitMethodName(fullMethod)
|
||||||
|
serverStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *serverReporter) ReceivedMessage() {
|
||||||
|
serverStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *serverReporter) SentMessage() {
|
||||||
|
serverStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *serverReporter) Handled(code codes.Code) {
|
||||||
|
serverHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc()
|
||||||
|
if serverHandledHistogramEnabled {
|
||||||
|
serverHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// preRegisterMethod is invoked on Register of a Server, allowing all gRPC services labels to be pre-populated.
|
||||||
|
func preRegisterMethod(serviceName string, mInfo *grpc.MethodInfo) {
|
||||||
|
methodName := mInfo.Name
|
||||||
|
methodType := string(typeFromMethodInfo(mInfo))
|
||||||
|
// These are just references (no increments), as just referencing will create the labels but not set values.
|
||||||
|
serverStartedCounter.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
serverStreamMsgReceived.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
serverStreamMsgSent.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
if serverHandledHistogramEnabled {
|
||||||
|
serverHandledHistogram.GetMetricWithLabelValues(methodType, serviceName, methodName)
|
||||||
|
}
|
||||||
|
for _, code := range allCodes {
|
||||||
|
serverHandledCounter.GetMetricWithLabelValues(methodType, serviceName, methodName, code.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func typeFromMethodInfo(mInfo *grpc.MethodInfo) grpcType {
|
||||||
|
if mInfo.IsClientStream == false && mInfo.IsServerStream == false {
|
||||||
|
return Unary
|
||||||
|
}
|
||||||
|
if mInfo.IsClientStream == true && mInfo.IsServerStream == false {
|
||||||
|
return ClientStream
|
||||||
|
}
|
||||||
|
if mInfo.IsClientStream == false && mInfo.IsServerStream == true {
|
||||||
|
return ServerStream
|
||||||
|
}
|
||||||
|
return BidiStream
|
||||||
|
}
|
307
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_test.go
generated
vendored
Normal file
307
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_test.go
generated
vendored
Normal file
@ -0,0 +1,307 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
pb_testproto "github.com/grpc-ecosystem/go-grpc-prometheus/examples/testproto"
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
pingDefaultValue = "I like kittens."
|
||||||
|
countListResponses = 20
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestServerInterceptorSuite(t *testing.T) {
|
||||||
|
suite.Run(t, &ServerInterceptorTestSuite{})
|
||||||
|
}
|
||||||
|
|
||||||
|
type ServerInterceptorTestSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
|
||||||
|
serverListener net.Listener
|
||||||
|
server *grpc.Server
|
||||||
|
clientConn *grpc.ClientConn
|
||||||
|
testClient pb_testproto.TestServiceClient
|
||||||
|
ctx context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) SetupSuite() {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
EnableHandlingTimeHistogram()
|
||||||
|
|
||||||
|
s.serverListener, err = net.Listen("tcp", "127.0.0.1:0")
|
||||||
|
require.NoError(s.T(), err, "must be able to allocate a port for serverListener")
|
||||||
|
|
||||||
|
// This is the point where we hook up the interceptor
|
||||||
|
s.server = grpc.NewServer(
|
||||||
|
grpc.StreamInterceptor(StreamServerInterceptor),
|
||||||
|
grpc.UnaryInterceptor(UnaryServerInterceptor),
|
||||||
|
)
|
||||||
|
pb_testproto.RegisterTestServiceServer(s.server, &testService{t: s.T()})
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
s.server.Serve(s.serverListener)
|
||||||
|
}()
|
||||||
|
|
||||||
|
s.clientConn, err = grpc.Dial(s.serverListener.Addr().String(), grpc.WithInsecure(), grpc.WithBlock(), grpc.WithTimeout(2*time.Second))
|
||||||
|
require.NoError(s.T(), err, "must not error on client Dial")
|
||||||
|
s.testClient = pb_testproto.NewTestServiceClient(s.clientConn)
|
||||||
|
|
||||||
|
// Important! Pre-register stuff here.
|
||||||
|
Register(s.server)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) SetupTest() {
|
||||||
|
// Make all RPC calls last at most 2 sec, meaning all async issues or deadlock will not kill tests.
|
||||||
|
s.ctx, _ = context.WithTimeout(context.TODO(), 2*time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TearDownSuite() {
|
||||||
|
if s.serverListener != nil {
|
||||||
|
s.server.Stop()
|
||||||
|
s.T().Logf("stopped grpc.Server at: %v", s.serverListener.Addr().String())
|
||||||
|
s.serverListener.Close()
|
||||||
|
|
||||||
|
}
|
||||||
|
if s.clientConn != nil {
|
||||||
|
s.clientConn.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestRegisterPresetsStuff() {
|
||||||
|
for testId, testCase := range []struct {
|
||||||
|
metricName string
|
||||||
|
existingLabels []string
|
||||||
|
}{
|
||||||
|
{"grpc_server_started_total", []string{"mwitkow.testproto.TestService", "PingEmpty", "unary"}},
|
||||||
|
{"grpc_server_started_total", []string{"mwitkow.testproto.TestService", "PingList", "server_stream"}},
|
||||||
|
{"grpc_server_msg_received_total", []string{"mwitkow.testproto.TestService", "PingList", "server_stream"}},
|
||||||
|
{"grpc_server_msg_sent_total", []string{"mwitkow.testproto.TestService", "PingEmpty", "unary"}},
|
||||||
|
{"grpc_server_handling_seconds_sum", []string{"mwitkow.testproto.TestService", "PingEmpty", "unary"}},
|
||||||
|
{"grpc_server_handling_seconds_count", []string{"mwitkow.testproto.TestService", "PingList", "server_stream"}},
|
||||||
|
{"grpc_server_handled_total", []string{"mwitkow.testproto.TestService", "PingList", "server_stream", "OutOfRange"}},
|
||||||
|
{"grpc_server_handled_total", []string{"mwitkow.testproto.TestService", "PingList", "server_stream", "Aborted"}},
|
||||||
|
{"grpc_server_handled_total", []string{"mwitkow.testproto.TestService", "PingEmpty", "unary", "FailedPrecondition"}},
|
||||||
|
{"grpc_server_handled_total", []string{"mwitkow.testproto.TestService", "PingEmpty", "unary", "ResourceExhausted"}},
|
||||||
|
} {
|
||||||
|
lineCount := len(fetchPrometheusLines(s.T(), testCase.metricName, testCase.existingLabels...))
|
||||||
|
assert.NotEqual(s.T(), 0, lineCount, "metrics must exist for test case %d", testId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestUnaryIncrementsStarted() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_started_total", "PingEmpty", "unary")
|
||||||
|
s.testClient.PingEmpty(s.ctx, &pb_testproto.Empty{})
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_started_total", "PingEmpty", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_started_total should be incremented for PingEmpty")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_started_total", "PingError", "unary")
|
||||||
|
s.testClient.PingError(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.Unavailable)})
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_started_total", "PingError", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_started_total should be incremented for PingError")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestUnaryIncrementsHandled() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingEmpty", "unary", "OK")
|
||||||
|
s.testClient.PingEmpty(s.ctx, &pb_testproto.Empty{}) // should return with code=OK
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingEmpty", "unary", "OK")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handled_count should be incremented for PingEmpty")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingError", "unary", "FailedPrecondition")
|
||||||
|
s.testClient.PingError(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingError", "unary", "FailedPrecondition")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handled_total should be incremented for PingError")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestUnaryIncrementsHistograms() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingEmpty", "unary")
|
||||||
|
s.testClient.PingEmpty(s.ctx, &pb_testproto.Empty{}) // should return with code=OK
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingEmpty", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handled_count should be incremented for PingEmpty")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingError", "unary")
|
||||||
|
s.testClient.PingError(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingError", "unary")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handling_seconds_count should be incremented for PingError")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestStreamingIncrementsStarted() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_started_total", "PingList", "server_stream")
|
||||||
|
s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{})
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_started_total", "PingList", "server_stream")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_started_total should be incremented for PingList")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestStreamingIncrementsHistograms() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
ss, _ := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{}) // should return with code=OK
|
||||||
|
// Do a read, just for kicks.
|
||||||
|
for {
|
||||||
|
_, err := ss.Recv()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
require.NoError(s.T(), err, "reading pingList shouldn't fail")
|
||||||
|
}
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handling_seconds_count should be incremented for PingList OK")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
_, err := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
require.NoError(s.T(), err, "PingList must not fail immedietely")
|
||||||
|
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handling_seconds_count", "PingList", "server_stream")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handling_seconds_count should be incremented for PingList FailedPrecondition")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestStreamingIncrementsHandled() {
|
||||||
|
var before int
|
||||||
|
var after int
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingList", "server_stream", "OK")
|
||||||
|
ss, _ := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{}) // should return with code=OK
|
||||||
|
// Do a read, just for kicks.
|
||||||
|
for {
|
||||||
|
_, err := ss.Recv()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
require.NoError(s.T(), err, "reading pingList shouldn't fail")
|
||||||
|
}
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingList", "server_stream", "OK")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handled_total should be incremented for PingList OK")
|
||||||
|
|
||||||
|
before = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingList", "server_stream", "FailedPrecondition")
|
||||||
|
_, err := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{ErrorCodeReturned: uint32(codes.FailedPrecondition)}) // should return with code=FailedPrecondition
|
||||||
|
require.NoError(s.T(), err, "PingList must not fail immedietely")
|
||||||
|
|
||||||
|
after = sumCountersForMetricAndLabels(s.T(), "grpc_server_handled_total", "PingList", "server_stream", "FailedPrecondition")
|
||||||
|
assert.EqualValues(s.T(), before+1, after, "grpc_server_handled_total should be incremented for PingList FailedPrecondition")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ServerInterceptorTestSuite) TestStreamingIncrementsMessageCounts() {
|
||||||
|
beforeRecv := sumCountersForMetricAndLabels(s.T(), "grpc_server_msg_received_total", "PingList", "server_stream")
|
||||||
|
beforeSent := sumCountersForMetricAndLabels(s.T(), "grpc_server_msg_sent_total", "PingList", "server_stream")
|
||||||
|
ss, _ := s.testClient.PingList(s.ctx, &pb_testproto.PingRequest{}) // should return with code=OK
|
||||||
|
// Do a read, just for kicks.
|
||||||
|
count := 0
|
||||||
|
for {
|
||||||
|
_, err := ss.Recv()
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
require.NoError(s.T(), err, "reading pingList shouldn't fail")
|
||||||
|
count += 1
|
||||||
|
}
|
||||||
|
require.EqualValues(s.T(), countListResponses, count, "Number of received msg on the wire must match")
|
||||||
|
afterSent := sumCountersForMetricAndLabels(s.T(), "grpc_server_msg_sent_total", "PingList", "server_stream")
|
||||||
|
afterRecv := sumCountersForMetricAndLabels(s.T(), "grpc_server_msg_received_total", "PingList", "server_stream")
|
||||||
|
|
||||||
|
assert.EqualValues(s.T(), beforeSent+countListResponses, afterSent, "grpc_server_msg_sent_total should be incremented 20 times for PingList")
|
||||||
|
assert.EqualValues(s.T(), beforeRecv+1, afterRecv, "grpc_server_msg_sent_total should be incremented ones for PingList ")
|
||||||
|
}
|
||||||
|
|
||||||
|
func fetchPrometheusLines(t *testing.T, metricName string, matchingLabelValues ...string) []string {
|
||||||
|
resp := httptest.NewRecorder()
|
||||||
|
req, err := http.NewRequest("GET", "/", nil)
|
||||||
|
require.NoError(t, err, "failed creating request for Prometheus handler")
|
||||||
|
prometheus.Handler().ServeHTTP(resp, req)
|
||||||
|
reader := bufio.NewReader(resp.Body)
|
||||||
|
ret := []string{}
|
||||||
|
for {
|
||||||
|
line, err := reader.ReadString('\n')
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
require.NoError(t, err, "error reading stuff")
|
||||||
|
}
|
||||||
|
if !strings.HasPrefix(line, metricName) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
matches := true
|
||||||
|
for _, labelValue := range matchingLabelValues {
|
||||||
|
if !strings.Contains(line, `"`+labelValue+`"`) {
|
||||||
|
matches = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if matches {
|
||||||
|
ret = append(ret, line)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
func sumCountersForMetricAndLabels(t *testing.T, metricName string, matchingLabelValues ...string) int {
|
||||||
|
count := 0
|
||||||
|
for _, line := range fetchPrometheusLines(t, metricName, matchingLabelValues...) {
|
||||||
|
valueString := line[strings.LastIndex(line, " ")+1 : len(line)-1]
|
||||||
|
valueFloat, err := strconv.ParseFloat(valueString, 32)
|
||||||
|
require.NoError(t, err, "failed parsing value for line: %v", line)
|
||||||
|
count += int(valueFloat)
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
type testService struct {
|
||||||
|
t *testing.T
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *testService) PingEmpty(ctx context.Context, _ *pb_testproto.Empty) (*pb_testproto.PingResponse, error) {
|
||||||
|
return &pb_testproto.PingResponse{Value: pingDefaultValue, Counter: 42}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *testService) Ping(ctx context.Context, ping *pb_testproto.PingRequest) (*pb_testproto.PingResponse, error) {
|
||||||
|
// Send user trailers and headers.
|
||||||
|
return &pb_testproto.PingResponse{Value: ping.Value, Counter: 42}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *testService) PingError(ctx context.Context, ping *pb_testproto.PingRequest) (*pb_testproto.Empty, error) {
|
||||||
|
code := codes.Code(ping.ErrorCodeReturned)
|
||||||
|
return nil, grpc.Errorf(code, "Userspace error.")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *testService) PingList(ping *pb_testproto.PingRequest, stream pb_testproto.TestService_PingListServer) error {
|
||||||
|
if ping.ErrorCodeReturned != 0 {
|
||||||
|
return grpc.Errorf(codes.Code(ping.ErrorCodeReturned), "foobar")
|
||||||
|
}
|
||||||
|
// Send user trailers and headers.
|
||||||
|
for i := 0; i < countListResponses; i++ {
|
||||||
|
stream.Send(&pb_testproto.PingResponse{Value: ping.Value, Counter: int32(i)})
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
14
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/test_all.sh
generated
vendored
Executable file
14
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/test_all.sh
generated
vendored
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
echo "" > coverage.txt
|
||||||
|
|
||||||
|
for d in $(go list ./... | grep -v vendor); do
|
||||||
|
echo -e "TESTS FOR: for \033[0;35m${d}\033[0m"
|
||||||
|
go test -race -v -coverprofile=profile.coverage.out -covermode=atomic $d
|
||||||
|
if [ -f profile.coverage.out ]; then
|
||||||
|
cat profile.coverage.out >> coverage.txt
|
||||||
|
rm profile.coverage.out
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
done
|
27
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/util.go
generated
vendored
Normal file
27
vendor/github.com/grpc-ecosystem/go-grpc-prometheus/util.go
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2016 Michal Witkowski. All Rights Reserved.
|
||||||
|
// See LICENSE for licensing terms.
|
||||||
|
|
||||||
|
package grpc_prometheus
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
allCodes = []codes.Code{
|
||||||
|
codes.OK, codes.Canceled, codes.Unknown, codes.InvalidArgument, codes.DeadlineExceeded, codes.NotFound,
|
||||||
|
codes.AlreadyExists, codes.PermissionDenied, codes.Unauthenticated, codes.ResourceExhausted,
|
||||||
|
codes.FailedPrecondition, codes.Aborted, codes.OutOfRange, codes.Unimplemented, codes.Internal,
|
||||||
|
codes.Unavailable, codes.DataLoss,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func splitMethodName(fullMethodName string) (string, string) {
|
||||||
|
fullMethodName = strings.TrimPrefix(fullMethodName, "/") // remove leading slash
|
||||||
|
if i := strings.Index(fullMethodName, "/"); i >= 0 {
|
||||||
|
return fullMethodName[:i], fullMethodName[i+1:]
|
||||||
|
}
|
||||||
|
return "unknown", "unknown"
|
||||||
|
}
|
1
vendor/github.com/grpc-ecosystem/grpc-gateway/.gitignore
generated
vendored
Normal file
1
vendor/github.com/grpc-ecosystem/grpc-gateway/.gitignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
_output/
|
36
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis.yml
generated
vendored
Normal file
36
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
language: go
|
||||||
|
sudo: false
|
||||||
|
go:
|
||||||
|
- 1.8.x
|
||||||
|
- 1.7.x
|
||||||
|
- tip
|
||||||
|
go_import_path: github.com/grpc-ecosystem/grpc-gateway
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/local
|
||||||
|
- ${TRAVIS_BUILD_DIR}/examples/browser/node_modules
|
||||||
|
before_install:
|
||||||
|
- ./.travis/install-protoc.sh 3.1.0
|
||||||
|
- ./.travis/install-swagger-codegen.sh 2.1.6
|
||||||
|
- nvm install v6.1 && nvm use v6.1 && node --version
|
||||||
|
- go get github.com/golang/lint/golint
|
||||||
|
- go get github.com/dghubble/sling
|
||||||
|
install:
|
||||||
|
- go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||||
|
- go get github.com/grpc-ecosystem/grpc-gateway/runtime
|
||||||
|
- go get github.com/grpc-ecosystem/grpc-gateway/examples
|
||||||
|
- go get github.com/grpc-ecosystem/grpc-gateway/examples/server
|
||||||
|
before_script:
|
||||||
|
- sh -c 'cd examples/browser && npm install'
|
||||||
|
script:
|
||||||
|
- make realclean && make examples SWAGGER_CODEGEN="java -jar $HOME/local/swagger-codegen-cli.jar"
|
||||||
|
- if (go version | grep -q 1.8) && [ -z "${GATEWAY_PLUGIN_FLAGS}" ]; then test -z "$(git status --porcelain)" || (git status; git diff; exit 1); fi
|
||||||
|
- env GLOG_logtostderr=1 go test -race -v github.com/grpc-ecosystem/grpc-gateway/...
|
||||||
|
- make lint
|
||||||
|
- sh -c 'cd examples/browser && gulp'
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- "PATH=$PATH:$HOME/local/bin"
|
||||||
|
matrix:
|
||||||
|
- GATEWAY_PLUGIN_FLAGS=
|
||||||
|
- GATEWAY_PLUGIN_FLAGS=request_context=true
|
19
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-protoc.sh
generated
vendored
Executable file
19
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-protoc.sh
generated
vendored
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/sh -eu
|
||||||
|
protoc_version=$1
|
||||||
|
if test -z "${protoc_version}"; then
|
||||||
|
echo "Usage: .travis/install-protoc.sh protoc-version"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "`$HOME/local/bin/protoc-${protoc_version} --version 2>/dev/null | cut -d' ' -f 2`" != ${protoc_version} ]; then
|
||||||
|
rm -rf $HOME/local/bin $HOME/local/include
|
||||||
|
|
||||||
|
mkdir -p $HOME/tmp $HOME/local
|
||||||
|
cd $HOME/tmp
|
||||||
|
wget https://github.com/google/protobuf/releases/download/v${protoc_version}/protoc-${protoc_version}-linux-x86_64.zip
|
||||||
|
unzip protoc-${protoc_version}-linux-x86_64.zip
|
||||||
|
mv bin $HOME/local/bin
|
||||||
|
mv include $HOME/local/include
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo \$ $HOME/local/bin/protoc --version
|
||||||
|
$HOME/local/bin/protoc --version
|
9
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-swagger-codegen.sh
generated
vendored
Executable file
9
vendor/github.com/grpc-ecosystem/grpc-gateway/.travis/install-swagger-codegen.sh
generated
vendored
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh -eu
|
||||||
|
codegen_version=$1
|
||||||
|
if test -z "${codegen_version}"; then
|
||||||
|
echo "Usage: .travis/install-swagger-codegen.sh codegen-version"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
wget http://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/${codegen_version}/swagger-codegen-cli-${codegen_version}.jar \
|
||||||
|
-O $HOME/local/swagger-codegen-cli.jar
|
169
vendor/github.com/grpc-ecosystem/grpc-gateway/CHANGELOG.md
generated
vendored
Normal file
169
vendor/github.com/grpc-ecosystem/grpc-gateway/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
# Change Log
|
||||||
|
|
||||||
|
## [v1.2.2](https://github.com/grpc-ecosystem/grpc-gateway/tree/v1.2.2) (2017-04-17)
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- metadata: fix properly and change to Outgoing [\#361](https://github.com/grpc-ecosystem/grpc-gateway/pull/361)
|
||||||
|
|
||||||
|
## [v1.2.1](https://github.com/grpc-ecosystem/grpc-gateway/tree/v1.2.1) (2017-04-17)
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Add changelog for 1.2.1 [\#360](https://github.com/grpc-ecosystem/grpc-gateway/pull/360)
|
||||||
|
- bugfix: reflect upstream api change. [\#359](https://github.com/grpc-ecosystem/grpc-gateway/pull/359)
|
||||||
|
|
||||||
|
## [v1.2.0](https://github.com/grpc-ecosystem/grpc-gateway/tree/v1.2.0) (2017-03-31)
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Add changelog for 1.2.0 [\#342](https://github.com/grpc-ecosystem/grpc-gateway/pull/342)
|
||||||
|
|
||||||
|
## [v1.2.0.rc1](https://github.com/grpc-ecosystem/grpc-gateway/tree/v1.2.0.rc1) (2017-03-24)
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Update go\_out parameter to remove comma [\#333](https://github.com/grpc-ecosystem/grpc-gateway/pull/333)
|
||||||
|
- Update stale path in README [\#332](https://github.com/grpc-ecosystem/grpc-gateway/pull/332)
|
||||||
|
- improve documentation regarding external dependencies [\#330](https://github.com/grpc-ecosystem/grpc-gateway/pull/330)
|
||||||
|
- Return an error on invalid nested query parameters. [\#329](https://github.com/grpc-ecosystem/grpc-gateway/pull/329)
|
||||||
|
- Update upstream proto files and add google.golang.org/genproto support. [\#325](https://github.com/grpc-ecosystem/grpc-gateway/pull/325)
|
||||||
|
- Support oneof fields in query params [\#321](https://github.com/grpc-ecosystem/grpc-gateway/pull/321)
|
||||||
|
- Do not ignore the error coming from http.ListenAndServe in examples [\#319](https://github.com/grpc-ecosystem/grpc-gateway/pull/319)
|
||||||
|
- Look up enum value maps by their proto name [\#315](https://github.com/grpc-ecosystem/grpc-gateway/pull/315)
|
||||||
|
- enable parsing enums from query parameters [\#314](https://github.com/grpc-ecosystem/grpc-gateway/pull/314)
|
||||||
|
- Do not add imports from methods with no bindings. [\#312](https://github.com/grpc-ecosystem/grpc-gateway/pull/312)
|
||||||
|
- Convert the first letter of method name to upper [\#300](https://github.com/grpc-ecosystem/grpc-gateway/pull/300)
|
||||||
|
- write query parameters to swagger definition [\#297](https://github.com/grpc-ecosystem/grpc-gateway/pull/297)
|
||||||
|
- Bump swagger-client to 2.1.28 for examples/browser [\#290](https://github.com/grpc-ecosystem/grpc-gateway/pull/290)
|
||||||
|
- pin to version before es6ism [\#289](https://github.com/grpc-ecosystem/grpc-gateway/pull/289)
|
||||||
|
- Prevent lack of http bindings from generating non-building output [\#286](https://github.com/grpc-ecosystem/grpc-gateway/pull/286)
|
||||||
|
- Added support for Timestamp in URL. [\#281](https://github.com/grpc-ecosystem/grpc-gateway/pull/281)
|
||||||
|
- add plugin param 'allow\_delete\_body' [\#280](https://github.com/grpc-ecosystem/grpc-gateway/pull/280)
|
||||||
|
- Fix ruby gen command [\#275](https://github.com/grpc-ecosystem/grpc-gateway/pull/275)
|
||||||
|
- Make grpc-gateway support enum fields in path parameter [\#273](https://github.com/grpc-ecosystem/grpc-gateway/pull/273)
|
||||||
|
- remove unnecessary make\(\) [\#271](https://github.com/grpc-ecosystem/grpc-gateway/pull/271)
|
||||||
|
- preserve field order in swagger spec [\#270](https://github.com/grpc-ecosystem/grpc-gateway/pull/270)
|
||||||
|
- Merge \#228 [\#268](https://github.com/grpc-ecosystem/grpc-gateway/pull/268)
|
||||||
|
- Handle methods with no bindings more carefully [\#267](https://github.com/grpc-ecosystem/grpc-gateway/pull/267)
|
||||||
|
- describe default marshaler in README.md [\#266](https://github.com/grpc-ecosystem/grpc-gateway/pull/266)
|
||||||
|
- Add request\_context flag to utilize \(\*http.Request\).Context\(\) in handlers [\#265](https://github.com/grpc-ecosystem/grpc-gateway/pull/265)
|
||||||
|
- Regenerate examples [\#264](https://github.com/grpc-ecosystem/grpc-gateway/pull/264)
|
||||||
|
- Correct runtime.errorBody protobuf field tag [\#256](https://github.com/grpc-ecosystem/grpc-gateway/pull/256)
|
||||||
|
- Pass permanent HTTP request headers [\#252](https://github.com/grpc-ecosystem/grpc-gateway/pull/252)
|
||||||
|
- regenerate examples, fix tests for go tip [\#248](https://github.com/grpc-ecosystem/grpc-gateway/pull/248)
|
||||||
|
- Render the swagger request body properly [\#247](https://github.com/grpc-ecosystem/grpc-gateway/pull/247)
|
||||||
|
- Error output should have lowercase attribute names [\#244](https://github.com/grpc-ecosystem/grpc-gateway/pull/244)
|
||||||
|
- runtime - export prefix constants [\#236](https://github.com/grpc-ecosystem/grpc-gateway/pull/236)
|
||||||
|
- README - Add CoreOS example [\#231](https://github.com/grpc-ecosystem/grpc-gateway/pull/231)
|
||||||
|
- Docs - Add section about how HTTP maps to gRPC [\#227](https://github.com/grpc-ecosystem/grpc-gateway/pull/227)
|
||||||
|
- readme: added links to additional documentation [\#222](https://github.com/grpc-ecosystem/grpc-gateway/pull/222)
|
||||||
|
- Use a released version of protoc [\#216](https://github.com/grpc-ecosystem/grpc-gateway/pull/216)
|
||||||
|
- Add contribution guideline [\#210](https://github.com/grpc-ecosystem/grpc-gateway/pull/210)
|
||||||
|
- improve\(genswagger:template\):added support for google.protobuf.Timestamp [\#209](https://github.com/grpc-ecosystem/grpc-gateway/pull/209)
|
||||||
|
- Allowing unknown fields to be dropped instead of returning error from… [\#208](https://github.com/grpc-ecosystem/grpc-gateway/pull/208)
|
||||||
|
- Avoid Internal Server Error on zero-length input for bidi streaming [\#200](https://github.com/grpc-ecosystem/grpc-gateway/pull/200)
|
||||||
|
|
||||||
|
## [v1.1.0](https://github.com/grpc-ecosystem/grpc-gateway/tree/v1.1.0) (2016-07-23)
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Rename packages to follow the repository transfer [\#192](https://github.com/grpc-ecosystem/grpc-gateway/pull/192)
|
||||||
|
- return err early if EOF to prevent logging in normal conditions [\#191](https://github.com/grpc-ecosystem/grpc-gateway/pull/191)
|
||||||
|
- send Trailer header on error [\#188](https://github.com/grpc-ecosystem/grpc-gateway/pull/188)
|
||||||
|
- generate swagger output for streaming endpoints with a basic note [\#183](https://github.com/grpc-ecosystem/grpc-gateway/pull/183)
|
||||||
|
|
||||||
|
## [v1.0.0](https://github.com/grpc-ecosystem/grpc-gateway/tree/v1.0.0) (2016-06-15)
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Regenerate files with the latest protoc-gen-go [\#185](https://github.com/grpc-ecosystem/grpc-gateway/pull/185)
|
||||||
|
- Add browser examples [\#184](https://github.com/grpc-ecosystem/grpc-gateway/pull/184)
|
||||||
|
- Fix golint and go vet errors [\#182](https://github.com/grpc-ecosystem/grpc-gateway/pull/182)
|
||||||
|
- Add integration with clients generated by swagger-codegen [\#181](https://github.com/grpc-ecosystem/grpc-gateway/pull/181)
|
||||||
|
- Simplify example services [\#180](https://github.com/grpc-ecosystem/grpc-gateway/pull/180)
|
||||||
|
- Avoid errors when req.RemoteAddr is empty [\#178](https://github.com/grpc-ecosystem/grpc-gateway/pull/178)
|
||||||
|
- Feature/headers [\#176](https://github.com/grpc-ecosystem/grpc-gateway/pull/176)
|
||||||
|
- Include HTTP req.remoteAddr in gRPC ctx [\#174](https://github.com/grpc-ecosystem/grpc-gateway/pull/174)
|
||||||
|
- Update dependencies [\#171](https://github.com/grpc-ecosystem/grpc-gateway/pull/171)
|
||||||
|
- Add bidirectional streaming support by running Send\(\) and Recv\(\) concurrently [\#170](https://github.com/grpc-ecosystem/grpc-gateway/pull/170)
|
||||||
|
- make Authorization header check case-insensitive to comply with RFC 2616 4.2 [\#164](https://github.com/grpc-ecosystem/grpc-gateway/pull/164)
|
||||||
|
- jsonpb: avoid duplicating upstream's struct [\#158](https://github.com/grpc-ecosystem/grpc-gateway/pull/158)
|
||||||
|
- Generate Swagger description for service methods using proto comments. [\#156](https://github.com/grpc-ecosystem/grpc-gateway/pull/156)
|
||||||
|
- Implement gRPC timeout support for inbound HTTP headers [\#155](https://github.com/grpc-ecosystem/grpc-gateway/pull/155)
|
||||||
|
- Add more examples to marshalers [\#154](https://github.com/grpc-ecosystem/grpc-gateway/pull/154)
|
||||||
|
- custom marshaler: handle `Accept` headers correctly [\#152](https://github.com/grpc-ecosystem/grpc-gateway/pull/152)
|
||||||
|
- Simplify custom marshaler API [\#151](https://github.com/grpc-ecosystem/grpc-gateway/pull/151)
|
||||||
|
- Fix camel case path parameter handling in swagger [\#149](https://github.com/grpc-ecosystem/grpc-gateway/pull/149)
|
||||||
|
- Swagger dot in path template [\#148](https://github.com/grpc-ecosystem/grpc-gateway/pull/148)
|
||||||
|
- Support map types in swagger generator [\#147](https://github.com/grpc-ecosystem/grpc-gateway/pull/147)
|
||||||
|
- Cleanup custom marshaler [\#146](https://github.com/grpc-ecosystem/grpc-gateway/pull/146)
|
||||||
|
- Implement custom Marshaler support, add jsonpb implemention. [\#144](https://github.com/grpc-ecosystem/grpc-gateway/pull/144)
|
||||||
|
- Allow period in path URL templates when generating Swagger templates. [\#143](https://github.com/grpc-ecosystem/grpc-gateway/pull/143)
|
||||||
|
- Link to LICENSE.txt [\#142](https://github.com/grpc-ecosystem/grpc-gateway/pull/142)
|
||||||
|
- Support map types in swagger generator [\#141](https://github.com/grpc-ecosystem/grpc-gateway/pull/141)
|
||||||
|
- Conditionally stops checking if generated file are up-to-date [\#136](https://github.com/grpc-ecosystem/grpc-gateway/pull/136)
|
||||||
|
- Generate Swagger description for service methods using proto comments. [\#134](https://github.com/grpc-ecosystem/grpc-gateway/pull/134)
|
||||||
|
- Swagger definitions now have `type` set to `object`. [\#133](https://github.com/grpc-ecosystem/grpc-gateway/pull/133)
|
||||||
|
- go\_package option as go import path [\#129](https://github.com/grpc-ecosystem/grpc-gateway/pull/129)
|
||||||
|
- Fix govet errors [\#126](https://github.com/grpc-ecosystem/grpc-gateway/pull/126)
|
||||||
|
- Fix data-race in generated codes [\#125](https://github.com/grpc-ecosystem/grpc-gateway/pull/125)
|
||||||
|
- Fix \#119 - CloseNotify race with ServeHTTP [\#120](https://github.com/grpc-ecosystem/grpc-gateway/pull/120)
|
||||||
|
- Replace glog with grpclog [\#118](https://github.com/grpc-ecosystem/grpc-gateway/pull/118)
|
||||||
|
- Fix a goroutine-leak in HTTP keep-alive [\#116](https://github.com/grpc-ecosystem/grpc-gateway/pull/116)
|
||||||
|
- Fix camel case path parameter handling in swagger [\#114](https://github.com/grpc-ecosystem/grpc-gateway/pull/114)
|
||||||
|
- gofmt -s [\#112](https://github.com/grpc-ecosystem/grpc-gateway/pull/112)
|
||||||
|
- fix typo [\#111](https://github.com/grpc-ecosystem/grpc-gateway/pull/111)
|
||||||
|
- fix typo [\#110](https://github.com/grpc-ecosystem/grpc-gateway/pull/110)
|
||||||
|
- fixes missing swagger operation objects [\#109](https://github.com/grpc-ecosystem/grpc-gateway/pull/109)
|
||||||
|
- Add parser and swagger support for enum, no gengateway yet [\#108](https://github.com/grpc-ecosystem/grpc-gateway/pull/108)
|
||||||
|
- README: add protoc-gen-swagger too [\#105](https://github.com/grpc-ecosystem/grpc-gateway/pull/105)
|
||||||
|
- README: Suggest go get -u by default. [\#104](https://github.com/grpc-ecosystem/grpc-gateway/pull/104)
|
||||||
|
- Cancel context when HTTP connection is closed [\#102](https://github.com/grpc-ecosystem/grpc-gateway/pull/102)
|
||||||
|
- wait test server up [\#100](https://github.com/grpc-ecosystem/grpc-gateway/pull/100)
|
||||||
|
- Fix the swagger section of the README.md [\#98](https://github.com/grpc-ecosystem/grpc-gateway/pull/98)
|
||||||
|
- Add documentation for using Swagger [\#97](https://github.com/grpc-ecosystem/grpc-gateway/pull/97)
|
||||||
|
- Better compatibility to field names generated by protoc-gen-go [\#96](https://github.com/grpc-ecosystem/grpc-gateway/pull/96)
|
||||||
|
- Update protoc from 3.0.0-beta1 to 3.0.0-beta2 [\#95](https://github.com/grpc-ecosystem/grpc-gateway/pull/95)
|
||||||
|
- Better grpc error strings [\#94](https://github.com/grpc-ecosystem/grpc-gateway/pull/94)
|
||||||
|
- make available header and trailer metadata [\#93](https://github.com/grpc-ecosystem/grpc-gateway/pull/93)
|
||||||
|
- make grpc.DialOption configurable [\#89](https://github.com/grpc-ecosystem/grpc-gateway/pull/89)
|
||||||
|
- Add request in error handlers [\#88](https://github.com/grpc-ecosystem/grpc-gateway/pull/88)
|
||||||
|
- Improve PascalFromSnake behavior [\#85](https://github.com/grpc-ecosystem/grpc-gateway/pull/85)
|
||||||
|
- Typo grcp -\> grpc [\#81](https://github.com/grpc-ecosystem/grpc-gateway/pull/81)
|
||||||
|
- Add abstraction of code generator implementation [\#78](https://github.com/grpc-ecosystem/grpc-gateway/pull/78)
|
||||||
|
- Support multivalue of metadata [\#77](https://github.com/grpc-ecosystem/grpc-gateway/pull/77)
|
||||||
|
- Fix broken test [\#76](https://github.com/grpc-ecosystem/grpc-gateway/pull/76)
|
||||||
|
- Added missing instruction line in README [\#75](https://github.com/grpc-ecosystem/grpc-gateway/pull/75)
|
||||||
|
- Fix a complie error in generated go files [\#71](https://github.com/grpc-ecosystem/grpc-gateway/pull/71)
|
||||||
|
- Update generated .pb.go files in third\_party [\#69](https://github.com/grpc-ecosystem/grpc-gateway/pull/69)
|
||||||
|
- Add swagger support [\#68](https://github.com/grpc-ecosystem/grpc-gateway/pull/68)
|
||||||
|
- Bugfix/handling headers for `Authorization` and `Host` [\#65](https://github.com/grpc-ecosystem/grpc-gateway/pull/65)
|
||||||
|
- Fix `error` field always in chunk response [\#64](https://github.com/grpc-ecosystem/grpc-gateway/pull/64)
|
||||||
|
- Update .pb.go to latest version. [\#63](https://github.com/grpc-ecosystem/grpc-gateway/pull/63)
|
||||||
|
- Run more tests in Travis CI [\#60](https://github.com/grpc-ecosystem/grpc-gateway/pull/60)
|
||||||
|
- Added http error code and error status for responseStreamChunk error [\#59](https://github.com/grpc-ecosystem/grpc-gateway/pull/59)
|
||||||
|
- Fix parsing of verb and final path component. [\#55](https://github.com/grpc-ecosystem/grpc-gateway/pull/55)
|
||||||
|
- Add runtime.WithForwardResponseOption [\#53](https://github.com/grpc-ecosystem/grpc-gateway/pull/53)
|
||||||
|
- add grpc.WithInsecure\(\) as option for grpc.Dial call in template [\#52](https://github.com/grpc-ecosystem/grpc-gateway/pull/52)
|
||||||
|
- update .pb.go files for latest golang proto generation [\#51](https://github.com/grpc-ecosystem/grpc-gateway/pull/51)
|
||||||
|
- Fix a build error with the latest protoc-gen-go [\#50](https://github.com/grpc-ecosystem/grpc-gateway/pull/50)
|
||||||
|
- Configure Travis CI [\#49](https://github.com/grpc-ecosystem/grpc-gateway/pull/49)
|
||||||
|
- Follow a change of go package name convention in protoc-gen-go [\#48](https://github.com/grpc-ecosystem/grpc-gateway/pull/48)
|
||||||
|
- Consider tail segments after deep wildcard [\#47](https://github.com/grpc-ecosystem/grpc-gateway/pull/47)
|
||||||
|
- Fix typo in README [\#45](https://github.com/grpc-ecosystem/grpc-gateway/pull/45)
|
||||||
|
- Fix undefined variable error in generated codes [\#42](https://github.com/grpc-ecosystem/grpc-gateway/pull/42)
|
||||||
|
- Follow changes in protoc-gen-go and grpc-go [\#41](https://github.com/grpc-ecosystem/grpc-gateway/pull/41)
|
||||||
|
- Fixes \#4 [\#40](https://github.com/grpc-ecosystem/grpc-gateway/pull/40)
|
||||||
|
- fix examples to work with go1.5 [\#39](https://github.com/grpc-ecosystem/grpc-gateway/pull/39)
|
||||||
|
- rename internal to utilties for 1.5 compatibility [\#38](https://github.com/grpc-ecosystem/grpc-gateway/pull/38)
|
||||||
|
- Reflection fix of proto3 nested messages. [\#34](https://github.com/grpc-ecosystem/grpc-gateway/pull/34)
|
||||||
|
- \[Experimental\] Make the response forwarder function customizable [\#31](https://github.com/grpc-ecosystem/grpc-gateway/pull/31)
|
||||||
|
- Add f.Flush\(\) to runtime.ForwardResponseStream [\#30](https://github.com/grpc-ecosystem/grpc-gateway/pull/30)
|
||||||
|
- Format error message in JSON [\#29](https://github.com/grpc-ecosystem/grpc-gateway/pull/29)
|
||||||
|
- Update examples with HTTP header context annotation [\#28](https://github.com/grpc-ecosystem/grpc-gateway/pull/28)
|
||||||
|
- Report semantic errors in the source to protoc [\#27](https://github.com/grpc-ecosystem/grpc-gateway/pull/27)
|
||||||
|
- Add support for non-nullable nested messages. [\#21](https://github.com/grpc-ecosystem/grpc-gateway/pull/21)
|
||||||
|
- Receive GRPC metadata from HTTP headers. [\#18](https://github.com/grpc-ecosystem/grpc-gateway/pull/18)
|
||||||
|
- Implement detailed specs of google.api.http [\#14](https://github.com/grpc-ecosystem/grpc-gateway/pull/14)
|
||||||
|
- Configure travis CI [\#13](https://github.com/grpc-ecosystem/grpc-gateway/pull/13)
|
||||||
|
- Replace our own custom option with the one defined by Google [\#12](https://github.com/grpc-ecosystem/grpc-gateway/pull/12)
|
||||||
|
- Remove useless context setup [\#11](https://github.com/grpc-ecosystem/grpc-gateway/pull/11)
|
||||||
|
- Fix typo, path, missing semicolon. [\#10](https://github.com/grpc-ecosystem/grpc-gateway/pull/10)
|
||||||
|
- Use a globally unique id for the custom option [\#3](https://github.com/grpc-ecosystem/grpc-gateway/pull/3)
|
||||||
|
- implement ABitOfEverythingService [\#2](https://github.com/grpc-ecosystem/grpc-gateway/pull/2)
|
||||||
|
- support streaming API calls [\#1](https://github.com/grpc-ecosystem/grpc-gateway/pull/1)
|
20
vendor/github.com/grpc-ecosystem/grpc-gateway/CONTRIBUTING.md
generated
vendored
Normal file
20
vendor/github.com/grpc-ecosystem/grpc-gateway/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# How to contribute
|
||||||
|
|
||||||
|
Thank you for your contribution to grpc-gateway.
|
||||||
|
Here's the recommended process of contribution.
|
||||||
|
|
||||||
|
1. `go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway`
|
||||||
|
2. `cd $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway`
|
||||||
|
3. hack, hack, hack...
|
||||||
|
4. Make sure that your change follows best practices in Go
|
||||||
|
* [Effective Go](https://golang.org/doc/effective_go.html)
|
||||||
|
* [Go Code Review Comments](https://golang.org/wiki/CodeReviewComments)
|
||||||
|
5. Make sure that `make test` passes. (use swagger-codegen 2.1.6, not newer versions)
|
||||||
|
6. Sign [a Contributor License Agreement](https://cla.developers.google.com/clas)
|
||||||
|
7. Open a pull request in Github
|
||||||
|
|
||||||
|
When you work on a larger contribution, it is also recommended that you get in touch
|
||||||
|
with us through the issue tracker.
|
||||||
|
|
||||||
|
### Code reviews
|
||||||
|
All submissions, including submissions by project members, require review.
|
27
vendor/github.com/grpc-ecosystem/grpc-gateway/LICENSE.txt
generated
vendored
Normal file
27
vendor/github.com/grpc-ecosystem/grpc-gateway/LICENSE.txt
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Copyright (c) 2015, Gengo, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
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 Gengo, 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.
|
143
vendor/github.com/grpc-ecosystem/grpc-gateway/Makefile
generated
vendored
Normal file
143
vendor/github.com/grpc-ecosystem/grpc-gateway/Makefile
generated
vendored
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
# This is a Makefile which maintains files automatically generated but to be
|
||||||
|
# shipped together with other files.
|
||||||
|
# You don't have to rebuild these targets by yourself unless you develop
|
||||||
|
# grpc-gateway itself.
|
||||||
|
|
||||||
|
PKG=github.com/grpc-ecosystem/grpc-gateway
|
||||||
|
GO_PLUGIN=bin/protoc-gen-go
|
||||||
|
GO_PLUGIN_PKG=github.com/golang/protobuf/protoc-gen-go
|
||||||
|
SWAGGER_PLUGIN=bin/protoc-gen-swagger
|
||||||
|
SWAGGER_PLUGIN_SRC= utilities/doc.go \
|
||||||
|
utilities/pattern.go \
|
||||||
|
utilities/trie.go \
|
||||||
|
protoc-gen-swagger/genswagger/generator.go \
|
||||||
|
protoc-gen-swagger/genswagger/template.go \
|
||||||
|
protoc-gen-swagger/main.go
|
||||||
|
SWAGGER_PLUGIN_PKG=$(PKG)/protoc-gen-swagger
|
||||||
|
GATEWAY_PLUGIN=bin/protoc-gen-grpc-gateway
|
||||||
|
GATEWAY_PLUGIN_PKG=$(PKG)/protoc-gen-grpc-gateway
|
||||||
|
GATEWAY_PLUGIN_SRC= utilities/doc.go \
|
||||||
|
utilities/pattern.go \
|
||||||
|
utilities/trie.go \
|
||||||
|
protoc-gen-grpc-gateway \
|
||||||
|
protoc-gen-grpc-gateway/descriptor \
|
||||||
|
protoc-gen-grpc-gateway/descriptor/registry.go \
|
||||||
|
protoc-gen-grpc-gateway/descriptor/services.go \
|
||||||
|
protoc-gen-grpc-gateway/descriptor/types.go \
|
||||||
|
protoc-gen-grpc-gateway/generator \
|
||||||
|
protoc-gen-grpc-gateway/generator/generator.go \
|
||||||
|
protoc-gen-grpc-gateway/gengateway \
|
||||||
|
protoc-gen-grpc-gateway/gengateway/doc.go \
|
||||||
|
protoc-gen-grpc-gateway/gengateway/generator.go \
|
||||||
|
protoc-gen-grpc-gateway/gengateway/template.go \
|
||||||
|
protoc-gen-grpc-gateway/httprule \
|
||||||
|
protoc-gen-grpc-gateway/httprule/compile.go \
|
||||||
|
protoc-gen-grpc-gateway/httprule/parse.go \
|
||||||
|
protoc-gen-grpc-gateway/httprule/types.go \
|
||||||
|
protoc-gen-grpc-gateway/main.go
|
||||||
|
GATEWAY_PLUGIN_FLAGS?=
|
||||||
|
|
||||||
|
GOOGLEAPIS_DIR=third_party/googleapis
|
||||||
|
OUTPUT_DIR=_output
|
||||||
|
|
||||||
|
RUNTIME_PROTO=runtime/internal/stream_chunk.proto
|
||||||
|
RUNTIME_GO=$(RUNTIME_PROTO:.proto=.pb.go)
|
||||||
|
|
||||||
|
PKGMAP=Mgoogle/protobuf/descriptor.proto=$(GO_PLUGIN_PKG)/descriptor,Mexamples/sub/message.proto=$(PKG)/examples/sub
|
||||||
|
ADDITIONAL_FLAGS=
|
||||||
|
ifneq "$(GATEWAY_PLUGIN_FLAGS)" ""
|
||||||
|
ADDITIONAL_FLAGS=,$(GATEWAY_PLUGIN_FLAGS)
|
||||||
|
endif
|
||||||
|
SWAGGER_EXAMPLES=examples/examplepb/echo_service.proto \
|
||||||
|
examples/examplepb/a_bit_of_everything.proto
|
||||||
|
EXAMPLES=examples/examplepb/echo_service.proto \
|
||||||
|
examples/examplepb/a_bit_of_everything.proto \
|
||||||
|
examples/examplepb/stream.proto \
|
||||||
|
examples/examplepb/flow_combination.proto
|
||||||
|
EXAMPLE_SVCSRCS=$(EXAMPLES:.proto=.pb.go)
|
||||||
|
EXAMPLE_GWSRCS=$(EXAMPLES:.proto=.pb.gw.go)
|
||||||
|
EXAMPLE_SWAGGERSRCS=$(EXAMPLES:.proto=.swagger.json)
|
||||||
|
EXAMPLE_DEPS=examples/sub/message.proto examples/sub2/message.proto
|
||||||
|
EXAMPLE_DEPSRCS=$(EXAMPLE_DEPS:.proto=.pb.go)
|
||||||
|
|
||||||
|
EXAMPLE_CLIENT_DIR=examples/clients
|
||||||
|
ECHO_EXAMPLE_SPEC=examples/examplepb/echo_service.swagger.json
|
||||||
|
ECHO_EXAMPLE_SRCS=$(EXAMPLE_CLIENT_DIR)/echo/EchoServiceApi.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/echo/ExamplepbSimpleMessage.go
|
||||||
|
ABE_EXAMPLE_SPEC=examples/examplepb/a_bit_of_everything.swagger.json
|
||||||
|
ABE_EXAMPLE_SRCS=$(EXAMPLE_CLIENT_DIR)/abe/ABitOfEverythingServiceApi.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/ABitOfEverythingNested.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/ExamplepbABitOfEverything.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/ExamplepbNumericEnum.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/ExamplepbIdMessage.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/NestedDeepEnum.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/ProtobufEmpty.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/Sub2IdMessage.go \
|
||||||
|
$(EXAMPLE_CLIENT_DIR)/abe/SubStringMessage.go
|
||||||
|
EXAMPLE_CLIENT_SRCS=$(ECHO_EXAMPLE_SRCS) $(ABE_EXAMPLE_SRCS)
|
||||||
|
SWAGGER_CODEGEN=swagger-codegen
|
||||||
|
|
||||||
|
PROTOC_INC_PATH=$(dir $(shell which protoc))/../include
|
||||||
|
|
||||||
|
generate: $(RUNTIME_GO)
|
||||||
|
|
||||||
|
.SUFFIXES: .go .proto
|
||||||
|
|
||||||
|
$(GO_PLUGIN):
|
||||||
|
go get $(GO_PLUGIN_PKG)
|
||||||
|
go build -o $@ $(GO_PLUGIN_PKG)
|
||||||
|
|
||||||
|
$(RUNTIME_GO): $(RUNTIME_PROTO) $(GO_PLUGIN)
|
||||||
|
protoc -I $(PROTOC_INC_PATH) --plugin=$(GO_PLUGIN) -I. --go_out=$(PKGMAP):. $(RUNTIME_PROTO)
|
||||||
|
|
||||||
|
$(GATEWAY_PLUGIN): $(RUNTIME_GO) $(GATEWAY_PLUGIN_SRC)
|
||||||
|
go build -o $@ $(GATEWAY_PLUGIN_PKG)
|
||||||
|
|
||||||
|
$(SWAGGER_PLUGIN): $(SWAGGER_PLUGIN_SRC)
|
||||||
|
go build -o $@ $(SWAGGER_PLUGIN_PKG)
|
||||||
|
|
||||||
|
$(EXAMPLE_SVCSRCS): $(GO_PLUGIN) $(EXAMPLES)
|
||||||
|
protoc -I $(PROTOC_INC_PATH) -I. -I$(GOOGLEAPIS_DIR) --plugin=$(GO_PLUGIN) --go_out=$(PKGMAP),plugins=grpc:. $(EXAMPLES)
|
||||||
|
$(EXAMPLE_DEPSRCS): $(GO_PLUGIN) $(EXAMPLE_DEPS)
|
||||||
|
mkdir -p $(OUTPUT_DIR)
|
||||||
|
protoc -I $(PROTOC_INC_PATH) -I. --plugin=$(GO_PLUGIN) --go_out=$(PKGMAP),plugins=grpc:$(OUTPUT_DIR) $(@:.pb.go=.proto)
|
||||||
|
cp $(OUTPUT_DIR)/$(PKG)/$@ $@ || cp $(OUTPUT_DIR)/$@ $@
|
||||||
|
$(EXAMPLE_GWSRCS): $(GATEWAY_PLUGIN) $(EXAMPLES)
|
||||||
|
protoc -I $(PROTOC_INC_PATH) -I. -I$(GOOGLEAPIS_DIR) --plugin=$(GATEWAY_PLUGIN) --grpc-gateway_out=logtostderr=true,$(PKGMAP)$(ADDITIONAL_FLAGS):. $(EXAMPLES)
|
||||||
|
$(EXAMPLE_SWAGGERSRCS): $(SWAGGER_PLUGIN) $(SWAGGER_EXAMPLES)
|
||||||
|
protoc -I $(PROTOC_INC_PATH) -I. -I$(GOOGLEAPIS_DIR) --plugin=$(SWAGGER_PLUGIN) --swagger_out=logtostderr=true,$(PKGMAP):. $(SWAGGER_EXAMPLES)
|
||||||
|
|
||||||
|
$(ECHO_EXAMPLE_SRCS): $(ECHO_EXAMPLE_SPEC)
|
||||||
|
$(SWAGGER_CODEGEN) generate -i $(ECHO_EXAMPLE_SPEC) \
|
||||||
|
-l go -o examples/clients --additional-properties packageName=echo
|
||||||
|
@rm -f $(EXAMPLE_CLIENT_DIR)/README.md $(EXAMPLE_CLIENT_DIR)/git_push.sh $(EXAMPLE_CLIENT_DIR)/.gitignore
|
||||||
|
$(ABE_EXAMPLE_SRCS): $(ABE_EXAMPLE_SPEC)
|
||||||
|
$(SWAGGER_CODEGEN) generate -i $(ABE_EXAMPLE_SPEC) \
|
||||||
|
-l go -o examples/clients --additional-properties packageName=abe
|
||||||
|
@rm -f $(EXAMPLE_CLIENT_DIR)/README.md $(EXAMPLE_CLIENT_DIR)/git_push.sh $(EXAMPLE_CLIENT_DIR)/.gitignore
|
||||||
|
|
||||||
|
examples: $(EXAMPLE_SVCSRCS) $(EXAMPLE_GWSRCS) $(EXAMPLE_DEPSRCS) $(EXAMPLE_SWAGGERSRCS) $(EXAMPLE_CLIENT_SRCS)
|
||||||
|
test: examples
|
||||||
|
go test -race $(PKG)/...
|
||||||
|
|
||||||
|
lint:
|
||||||
|
golint --set_exit_status $(PKG)/runtime
|
||||||
|
golint --set_exit_status $(PKG)/utilities/...
|
||||||
|
golint --set_exit_status $(PKG)/protoc-gen-grpc-gateway/...
|
||||||
|
golint --set_exit_status $(PKG)/protoc-gen-swagger/...
|
||||||
|
go vet $(PKG)/runtime || true
|
||||||
|
go vet $(PKG)/utilities/...
|
||||||
|
go vet $(PKG)/protoc-gen-grpc-gateway/...
|
||||||
|
go vet $(PKG)/protoc-gen-swagger/...
|
||||||
|
|
||||||
|
clean distclean:
|
||||||
|
rm -f $(GATEWAY_PLUGIN)
|
||||||
|
realclean: distclean
|
||||||
|
rm -f $(EXAMPLE_SVCSRCS) $(EXAMPLE_DEPSRCS)
|
||||||
|
rm -f $(EXAMPLE_GWSRCS)
|
||||||
|
rm -f $(EXAMPLE_SWAGGERSRCS)
|
||||||
|
rm -f $(GO_PLUGIN)
|
||||||
|
rm -f $(SWAGGER_PLUGIN)
|
||||||
|
rm -f $(EXAMPLE_CLIENT_SRCS)
|
||||||
|
|
||||||
|
.PHONY: generate examples test lint clean distclean realclean
|
245
vendor/github.com/grpc-ecosystem/grpc-gateway/README.md
generated
vendored
Normal file
245
vendor/github.com/grpc-ecosystem/grpc-gateway/README.md
generated
vendored
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
# grpc-gateway
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/grpc-ecosystem/grpc-gateway.svg?branch=master)](https://travis-ci.org/grpc-ecosystem/grpc-gateway)
|
||||||
|
|
||||||
|
grpc-gateway is a plugin of [protoc](http://github.com/google/protobuf).
|
||||||
|
It reads [gRPC](http://github.com/grpc/grpc-common) service definition,
|
||||||
|
and generates a reverse-proxy server which translates a RESTful JSON API into gRPC.
|
||||||
|
This server is generated according to [custom options](https://cloud.google.com/service-management/reference/rpc/google.api#http) in your gRPC definition.
|
||||||
|
|
||||||
|
It helps you to provide your APIs in both gRPC and RESTful style at the same time.
|
||||||
|
|
||||||
|
![architecture introduction diagram](https://docs.google.com/drawings/d/12hp4CPqrNPFhattL_cIoJptFvlAqm5wLQ0ggqI5mkCg/pub?w=749&h=370)
|
||||||
|
|
||||||
|
## Background
|
||||||
|
gRPC is great -- it generates API clients and server stubs in many programming languages, it is fast, easy-to-use, bandwidth-efficient and its design is combat-proven by Google.
|
||||||
|
However, you might still want to provide a traditional RESTful API as well. Reasons can range from maintaining backwards-compatibility, supporting languages or clients not well supported by gRPC to simply maintaining the aesthetics and tooling involved with a RESTful architecture.
|
||||||
|
|
||||||
|
This project aims to provide that HTTP+JSON interface to your gRPC service. A small amount of configuration in your service to attach HTTP semantics is all that's needed to generate a reverse-proxy with this library.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
First you need to install ProtocolBuffers 3.0.0-beta-3 or later.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir tmp
|
||||||
|
cd tmp
|
||||||
|
git clone https://github.com/google/protobuf
|
||||||
|
cd protobuf
|
||||||
|
./autogen.sh
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make check
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, `go get -u` as usual the following packages:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
|
||||||
|
go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
|
||||||
|
go get -u github.com/golang/protobuf/protoc-gen-go
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
Make sure that your `$GOPATH/bin` is in your `$PATH`.
|
||||||
|
|
||||||
|
1. Define your service in gRPC
|
||||||
|
|
||||||
|
your_service.proto:
|
||||||
|
```protobuf
|
||||||
|
syntax = "proto3";
|
||||||
|
package example;
|
||||||
|
message StringMessage {
|
||||||
|
string value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
service YourService {
|
||||||
|
rpc Echo(StringMessage) returns (StringMessage) {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
2. Add a [custom option](https://cloud.google.com/service-management/reference/rpc/google.api#http) to the .proto file
|
||||||
|
|
||||||
|
your_service.proto:
|
||||||
|
```diff
|
||||||
|
syntax = "proto3";
|
||||||
|
package example;
|
||||||
|
+
|
||||||
|
+import "google/api/annotations.proto";
|
||||||
|
+
|
||||||
|
message StringMessage {
|
||||||
|
string value = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
service YourService {
|
||||||
|
- rpc Echo(StringMessage) returns (StringMessage) {}
|
||||||
|
+ rpc Echo(StringMessage) returns (StringMessage) {
|
||||||
|
+ option (google.api.http) = {
|
||||||
|
+ post: "/v1/example/echo"
|
||||||
|
+ body: "*"
|
||||||
|
+ };
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
3. Generate gRPC stub
|
||||||
|
|
||||||
|
```sh
|
||||||
|
protoc -I/usr/local/include -I. \
|
||||||
|
-I$GOPATH/src \
|
||||||
|
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||||
|
--go_out=plugins=grpc:. \
|
||||||
|
path/to/your_service.proto
|
||||||
|
```
|
||||||
|
|
||||||
|
It will generate a stub file `path/to/your_service.pb.go`.
|
||||||
|
4. Implement your service in gRPC as usual
|
||||||
|
1. (Optional) Generate gRPC stub in the language you want.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
```sh
|
||||||
|
protoc -I/usr/local/include -I. \
|
||||||
|
-I$GOPATH/src \
|
||||||
|
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||||
|
--ruby_out=. \
|
||||||
|
path/to/your/service_proto
|
||||||
|
|
||||||
|
protoc -I/usr/local/include -I. \
|
||||||
|
-I$GOPATH/src \
|
||||||
|
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||||
|
--plugin=protoc-gen-grpc=grpc_ruby_plugin \
|
||||||
|
--grpc-ruby_out=. \
|
||||||
|
path/to/your/service.proto
|
||||||
|
```
|
||||||
|
2. Add the googleapis-common-protos gem (or your language equivalent) as a dependency to your project.
|
||||||
|
3. Implement your service
|
||||||
|
|
||||||
|
5. Generate reverse-proxy
|
||||||
|
|
||||||
|
```sh
|
||||||
|
protoc -I/usr/local/include -I. \
|
||||||
|
-I$GOPATH/src \
|
||||||
|
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||||
|
--grpc-gateway_out=logtostderr=true:. \
|
||||||
|
path/to/your_service.proto
|
||||||
|
```
|
||||||
|
|
||||||
|
It will generate a reverse proxy `path/to/your_service.pb.gw.go`.
|
||||||
|
|
||||||
|
Note: After generating the code for each of the stubs, in order to build the code, you will want to run ```go get .``` from the directory containing the stubs.
|
||||||
|
|
||||||
|
6. Write an entrypoint
|
||||||
|
|
||||||
|
Now you need to write an entrypoint of the proxy server.
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/golang/glog"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
|
gw "path/to/your_service_package"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
echoEndpoint = flag.String("echo_endpoint", "localhost:9090", "endpoint of YourService")
|
||||||
|
)
|
||||||
|
|
||||||
|
func run() error {
|
||||||
|
ctx := context.Background()
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
mux := runtime.NewServeMux()
|
||||||
|
opts := []grpc.DialOption{grpc.WithInsecure()}
|
||||||
|
err := gw.RegisterYourServiceHandlerFromEndpoint(ctx, mux, *echoEndpoint, opts)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return http.ListenAndServe(":8080", mux)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
defer glog.Flush()
|
||||||
|
|
||||||
|
if err := run(); err != nil {
|
||||||
|
glog.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
7. (Optional) Generate swagger definitions
|
||||||
|
|
||||||
|
```sh
|
||||||
|
protoc -I/usr/local/include -I. \
|
||||||
|
-I$GOPATH/src \
|
||||||
|
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
|
||||||
|
--swagger_out=logtostderr=true:. \
|
||||||
|
path/to/your_service.proto
|
||||||
|
```
|
||||||
|
|
||||||
|
## Parameters and flags
|
||||||
|
`protoc-gen-grpc-gateway` supports custom mapping from Protobuf `import` to Golang import path.
|
||||||
|
They are compatible to [the parameters with same names in `protoc-gen-go`](https://github.com/golang/protobuf#parameters).
|
||||||
|
|
||||||
|
In addition we also support the `request_context` parameter in order to use the `http.Request`'s Context (only for Go 1.7 and above).
|
||||||
|
This parameter can be useful to pass request scoped context between the gateway and the gRPC service.
|
||||||
|
|
||||||
|
`protoc-gen-grpc-gateway` also supports some more command line flags to control logging. You can give these flags together with parameters above. Run `protoc-gen-grpc-gateway --help` for more details about the flags.
|
||||||
|
|
||||||
|
## More Examples
|
||||||
|
More examples are available under `examples` directory.
|
||||||
|
* `examplepb/echo_service.proto`, `examplepb/a_bit_of_everything.proto`: service definition
|
||||||
|
* `examplepb/echo_service.pb.go`, `examplepb/a_bit_of_everything.pb.go`: [generated] stub of the service
|
||||||
|
* `examplepb/echo_service.pb.gw.go`, `examplepb/a_bit_of_everything.pb.gw.go`: [generated] reverse proxy for the service
|
||||||
|
* `server/main.go`: service implementation
|
||||||
|
* `main.go`: entrypoint of the generated reverse proxy
|
||||||
|
|
||||||
|
To use the same port for custom HTTP handlers (e.g. serving `swagger.json`), gRPC-gateway, and a gRPC server, see [this code example by CoreOS](https://github.com/philips/grpc-gateway-example/blob/master/cmd/serve.go) (and its accompanying [blog post](https://coreos.com/blog/gRPC-protobufs-swagger.html))
|
||||||
|
|
||||||
|
## Features
|
||||||
|
### Supported
|
||||||
|
* Generating JSON API handlers
|
||||||
|
* Method parameters in request body
|
||||||
|
* Method parameters in request path
|
||||||
|
* Method parameters in query string
|
||||||
|
* Enum fields in path parameter (including repeated enum fields).
|
||||||
|
* Mapping streaming APIs to newline-delimited JSON streams
|
||||||
|
* Mapping HTTP headers with `Grpc-Metadata-` prefix to gRPC metadata (prefixed with `grpcgateway-`)
|
||||||
|
* Optionally emitting API definition for [Swagger](http://swagger.io).
|
||||||
|
* Setting [gRPC timeouts](http://www.grpc.io/docs/guides/wire.html) through inbound HTTP `Grpc-Timeout` header.
|
||||||
|
|
||||||
|
### Want to support
|
||||||
|
But not yet.
|
||||||
|
* bytes fields in path parameter. #5
|
||||||
|
* Optionally generating the entrypoint. #8
|
||||||
|
* `import_path` parameter
|
||||||
|
|
||||||
|
### No plan to support
|
||||||
|
But patch is welcome.
|
||||||
|
* Method parameters in HTTP headers
|
||||||
|
* Handling trailer metadata
|
||||||
|
* Encoding request/response body in XML
|
||||||
|
* True bi-directional streaming. (Probably impossible?)
|
||||||
|
|
||||||
|
# Mapping gRPC to HTTP
|
||||||
|
|
||||||
|
* [How gRPC error codes map to HTTP status codes in the response](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/runtime/errors.go#L15)
|
||||||
|
* HTTP request source IP is added as `X-Forwarded-For` gRPC request header
|
||||||
|
* HTTP request host is added as `X-Forwarded-Host` gRPC request header
|
||||||
|
* HTTP `Authorization` header is added as `authorization` gRPC request header
|
||||||
|
* Remaining Permanent HTTP header keys (as specified by the IANA [here](http://www.iana.org/assignments/message-headers/message-headers.xhtml) are prefixed with `grpcgateway-` and added with their values to gRPC request header
|
||||||
|
* HTTP headers that start with 'Grpc-Metadata-' are mapped to gRPC metadata (prefixed with `grpcgateway-`)
|
||||||
|
* While configurable, the default {un,}marshaling uses [jsonpb](https://godoc.org/github.com/golang/protobuf/jsonpb) with `OrigName: true`.
|
||||||
|
|
||||||
|
# Contribution
|
||||||
|
See [CONTRIBUTING.md](http://github.com/grpc-ecosystem/grpc-gateway/blob/master/CONTRIBUTING.md).
|
||||||
|
|
||||||
|
# License
|
||||||
|
grpc-gateway is licensed under the BSD 3-Clause License.
|
||||||
|
See [LICENSE.txt](https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt) for more details.
|
3
vendor/github.com/grpc-ecosystem/grpc-gateway/bin/.gitignore
generated
vendored
Normal file
3
vendor/github.com/grpc-ecosystem/grpc-gateway/bin/.gitignore
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
/protoc-gen-go
|
||||||
|
/protoc-gen-grpc-gateway
|
||||||
|
/protoc-gen-swagger
|
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/.gitignore
generated
vendored
Normal file
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/.gitignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/bower_components
|
||||||
|
/node_modules
|
31
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/README.md
generated
vendored
Normal file
31
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/README.md
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Browser example
|
||||||
|
|
||||||
|
This directory contains an example use of grpc-gateway with web browsers.
|
||||||
|
The following commands automatically runs integration tests with phantomjs.
|
||||||
|
|
||||||
|
```shell-session
|
||||||
|
$ npm install -g gulp-cli
|
||||||
|
$ npm install
|
||||||
|
$ gulp
|
||||||
|
```
|
||||||
|
|
||||||
|
## Other examples
|
||||||
|
|
||||||
|
### Very simple example
|
||||||
|
Run
|
||||||
|
```shell-session
|
||||||
|
$ gulp bower
|
||||||
|
$ gulp backends
|
||||||
|
```
|
||||||
|
|
||||||
|
then, open `index.html`.
|
||||||
|
|
||||||
|
|
||||||
|
### Integration test with your browser
|
||||||
|
|
||||||
|
Run
|
||||||
|
```shell-session
|
||||||
|
$ gulp serve
|
||||||
|
```
|
||||||
|
|
||||||
|
then, open `http://localhost:8000` with your browser.
|
185
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/a_bit_of_everything_service.spec.js
generated
vendored
Normal file
185
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/a_bit_of_everything_service.spec.js
generated
vendored
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var SwaggerClient = require('swagger-client');
|
||||||
|
|
||||||
|
describe('ABitOfEverythingService', function() {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function(done) {
|
||||||
|
new SwaggerClient({
|
||||||
|
url: "http://localhost:8080/swagger/a_bit_of_everything.swagger.json",
|
||||||
|
usePromise: true,
|
||||||
|
}).then(function(c) {
|
||||||
|
client = c;
|
||||||
|
}).catch(function(err) {
|
||||||
|
done.fail(err);
|
||||||
|
}).then(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Create', function() {
|
||||||
|
var created;
|
||||||
|
var expected = {
|
||||||
|
float_value: 1.5,
|
||||||
|
double_value: 2.5,
|
||||||
|
int64_value: "4294967296",
|
||||||
|
uint64_value: "9223372036854775807",
|
||||||
|
int32_value: -2147483648,
|
||||||
|
fixed64_value: "9223372036854775807",
|
||||||
|
fixed32_value: 4294967295,
|
||||||
|
bool_value: true,
|
||||||
|
string_value: "strprefix/foo",
|
||||||
|
uint32_value: 4294967295,
|
||||||
|
sfixed32_value: 2147483647,
|
||||||
|
sfixed64_value: "-4611686018427387904",
|
||||||
|
sint32_value: 2147483647,
|
||||||
|
sint64_value: "4611686018427387903",
|
||||||
|
nonConventionalNameValue: "camelCase",
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(function(done) {
|
||||||
|
client.ABitOfEverythingService.Create(expected).then(function(resp) {
|
||||||
|
created = resp.obj;
|
||||||
|
}).catch(function(err) {
|
||||||
|
done.fail(err);
|
||||||
|
}).then(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should assign id', function() {
|
||||||
|
expect(created.uuid).not.toBe("");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should echo the request back', function() {
|
||||||
|
delete created.uuid;
|
||||||
|
expect(created).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('CreateBody', function() {
|
||||||
|
var created;
|
||||||
|
var expected = {
|
||||||
|
float_value: 1.5,
|
||||||
|
double_value: 2.5,
|
||||||
|
int64_value: "4294967296",
|
||||||
|
uint64_value: "9223372036854775807",
|
||||||
|
int32_value: -2147483648,
|
||||||
|
fixed64_value: "9223372036854775807",
|
||||||
|
fixed32_value: 4294967295,
|
||||||
|
bool_value: true,
|
||||||
|
string_value: "strprefix/foo",
|
||||||
|
uint32_value: 4294967295,
|
||||||
|
sfixed32_value: 2147483647,
|
||||||
|
sfixed64_value: "-4611686018427387904",
|
||||||
|
sint32_value: 2147483647,
|
||||||
|
sint64_value: "4611686018427387903",
|
||||||
|
nonConventionalNameValue: "camelCase",
|
||||||
|
|
||||||
|
nested: [
|
||||||
|
{ name: "bar", amount: 10 },
|
||||||
|
{ name: "baz", amount: 20 },
|
||||||
|
],
|
||||||
|
repeated_string_value: ["a", "b", "c"],
|
||||||
|
oneof_string: "x",
|
||||||
|
// TODO(yugui) Support enum by name
|
||||||
|
map_value: { a: 1, b: 2 },
|
||||||
|
mapped_string_value: { a: "x", b: "y" },
|
||||||
|
mapped_nested_value: {
|
||||||
|
a: { name: "x", amount: 1 },
|
||||||
|
b: { name: "y", amount: 2 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(function(done) {
|
||||||
|
client.ABitOfEverythingService.CreateBody({
|
||||||
|
body: expected,
|
||||||
|
}).then(function(resp) {
|
||||||
|
created = resp.obj;
|
||||||
|
}).catch(function(err) {
|
||||||
|
done.fail(err);
|
||||||
|
}).then(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should assign id', function() {
|
||||||
|
expect(created.uuid).not.toBe("");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should echo the request back', function() {
|
||||||
|
delete created.uuid;
|
||||||
|
expect(created).toEqual(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('lookup', function() {
|
||||||
|
var created;
|
||||||
|
var expected = {
|
||||||
|
bool_value: true,
|
||||||
|
string_value: "strprefix/foo",
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(function(done) {
|
||||||
|
client.ABitOfEverythingService.CreateBody({
|
||||||
|
body: expected,
|
||||||
|
}).then(function(resp) {
|
||||||
|
created = resp.obj;
|
||||||
|
}).catch(function(err) {
|
||||||
|
fail(err);
|
||||||
|
}).finally(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should look up an object by uuid', function(done) {
|
||||||
|
client.ABitOfEverythingService.Lookup({
|
||||||
|
uuid: created.uuid
|
||||||
|
}).then(function(resp) {
|
||||||
|
expect(resp.obj).toEqual(created);
|
||||||
|
}).catch(function(err) {
|
||||||
|
fail(err.errObj);
|
||||||
|
}).finally(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail if no such object', function(done) {
|
||||||
|
client.ABitOfEverythingService.Lookup({
|
||||||
|
uuid: 'not_exist',
|
||||||
|
}).then(function(resp) {
|
||||||
|
fail('expected failure but succeeded');
|
||||||
|
}).catch(function(err) {
|
||||||
|
expect(err.status).toBe(404);
|
||||||
|
}).finally(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Delete', function() {
|
||||||
|
var created;
|
||||||
|
var expected = {
|
||||||
|
bool_value: true,
|
||||||
|
string_value: "strprefix/foo",
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(function(done) {
|
||||||
|
client.ABitOfEverythingService.CreateBody({
|
||||||
|
body: expected,
|
||||||
|
}).then(function(resp) {
|
||||||
|
created = resp.obj;
|
||||||
|
}).catch(function(err) {
|
||||||
|
fail(err);
|
||||||
|
}).finally(done);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should delete an object by id', function(done) {
|
||||||
|
client.ABitOfEverythingService.Delete({
|
||||||
|
uuid: created.uuid
|
||||||
|
}).then(function(resp) {
|
||||||
|
expect(resp.obj).toEqual({});
|
||||||
|
}).catch(function(err) {
|
||||||
|
fail(err.errObj);
|
||||||
|
}).then(function() {
|
||||||
|
return client.ABitOfEverythingService.Lookup({
|
||||||
|
uuid: created.uuid
|
||||||
|
});
|
||||||
|
}).then(function(resp) {
|
||||||
|
fail('expected failure but succeeded');
|
||||||
|
}). catch(function(err) {
|
||||||
|
expect(err.status).toBe(404);
|
||||||
|
}).finally(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bin/.gitignore
generated
vendored
Normal file
2
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bin/.gitignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/*
|
||||||
|
!/.gitignore
|
21
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bower.json
generated
vendored
Normal file
21
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/bower.json
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "grpc-gateway-example-browser",
|
||||||
|
"description": "Example use of grpc-gateway from browser",
|
||||||
|
"main": "index.js",
|
||||||
|
"authors": [
|
||||||
|
"Yuki Yugui Sonoda <yugui@gengo.com>"
|
||||||
|
],
|
||||||
|
"license": "SEE LICENSE IN LICENSE file",
|
||||||
|
"homepage": "https://github.com/grpc-ecosystem/grpc-gateway",
|
||||||
|
"private": true,
|
||||||
|
"dependencies": {
|
||||||
|
"swagger-js": "~> 2.1"
|
||||||
|
},
|
||||||
|
"ignore": [
|
||||||
|
"**/.*",
|
||||||
|
"node_modules",
|
||||||
|
"bower_components",
|
||||||
|
"test",
|
||||||
|
"tests"
|
||||||
|
]
|
||||||
|
}
|
43
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/echo_service.spec.js
generated
vendored
Normal file
43
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/echo_service.spec.js
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var SwaggerClient = require('swagger-client');
|
||||||
|
|
||||||
|
describe('EchoService', function() {
|
||||||
|
var client;
|
||||||
|
|
||||||
|
beforeEach(function(done) {
|
||||||
|
new SwaggerClient({
|
||||||
|
url: "http://localhost:8080/swagger/echo_service.swagger.json",
|
||||||
|
usePromise: true,
|
||||||
|
}).then(function(c) {
|
||||||
|
client = c;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Echo', function() {
|
||||||
|
it('should echo the request back', function(done) {
|
||||||
|
client.EchoService.Echo(
|
||||||
|
{id: "foo"},
|
||||||
|
{responseContentType: "application/json"}
|
||||||
|
).then(function(resp) {
|
||||||
|
expect(resp.obj).toEqual({id: "foo"});
|
||||||
|
}).catch(function(err) {
|
||||||
|
done.fail(err);
|
||||||
|
}).then(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('EchoBody', function() {
|
||||||
|
it('should echo the request back', function(done) {
|
||||||
|
client.EchoService.EchoBody(
|
||||||
|
{body: {id: "foo"}},
|
||||||
|
{responseContentType: "application/json"}
|
||||||
|
).then(function(resp) {
|
||||||
|
expect(resp.obj).toEqual({id: "foo"});
|
||||||
|
}).catch(function(err) {
|
||||||
|
done.fail(err);
|
||||||
|
}).then(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
81
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/gulpfile.js
generated
vendored
Normal file
81
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/gulpfile.js
generated
vendored
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
var gulp = require('gulp');
|
||||||
|
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
|
var bower = require('gulp-bower');
|
||||||
|
var exit = require('gulp-exit');
|
||||||
|
var gprocess = require('gulp-process');
|
||||||
|
var shell = require('gulp-shell');
|
||||||
|
var jasmineBrowser = require('gulp-jasmine-browser');
|
||||||
|
var webpack = require('webpack-stream');
|
||||||
|
|
||||||
|
gulp.task('bower', function(){
|
||||||
|
return bower();
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('server', shell.task([
|
||||||
|
'go build -o bin/example-server github.com/grpc-ecosystem/grpc-gateway/examples/server/cmd/example-server',
|
||||||
|
]));
|
||||||
|
|
||||||
|
gulp.task('gateway', shell.task([
|
||||||
|
'go build -o bin/example-gw github.com/grpc-ecosystem/grpc-gateway/examples',
|
||||||
|
]));
|
||||||
|
|
||||||
|
gulp.task('serve-server', ['server'], function(){
|
||||||
|
gprocess.start('server-server', 'bin/example-server', [
|
||||||
|
'--logtostderr',
|
||||||
|
]);
|
||||||
|
gulp.watch('bin/example-server', ['serve-server']);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('serve-gateway', ['gateway', 'serve-server'], function(){
|
||||||
|
gprocess.start('gateway-server', 'bin/example-gw', [
|
||||||
|
'--logtostderr', '--swagger_dir', path.join(__dirname, "../examplepb"),
|
||||||
|
]);
|
||||||
|
gulp.watch('bin/example-gateway', ['serve-gateway']);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('backends', ['serve-gateway', 'serve-server']);
|
||||||
|
|
||||||
|
var specFiles = ['*.spec.js'];
|
||||||
|
gulp.task('test', ['backends'], function(done) {
|
||||||
|
return gulp.src(specFiles)
|
||||||
|
.pipe(webpack({output: {filename: 'spec.js'}}))
|
||||||
|
.pipe(jasmineBrowser.specRunner({
|
||||||
|
console: true,
|
||||||
|
sourceMappedStacktrace: true,
|
||||||
|
}))
|
||||||
|
.pipe(jasmineBrowser.headless({
|
||||||
|
findOpenPort: true,
|
||||||
|
catch: true,
|
||||||
|
throwFailures: true,
|
||||||
|
}))
|
||||||
|
.on('error', function(err) {
|
||||||
|
done(err);
|
||||||
|
process.exit(1);
|
||||||
|
})
|
||||||
|
.pipe(exit());
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('serve', ['backends'], function(done) {
|
||||||
|
var JasminePlugin = require('gulp-jasmine-browser/webpack/jasmine-plugin');
|
||||||
|
var plugin = new JasminePlugin();
|
||||||
|
|
||||||
|
return gulp.src(specFiles)
|
||||||
|
.pipe(webpack({
|
||||||
|
output: {filename: 'spec.js'},
|
||||||
|
watch: true,
|
||||||
|
plugins: [plugin],
|
||||||
|
}))
|
||||||
|
.pipe(jasmineBrowser.specRunner({
|
||||||
|
sourceMappedStacktrace: true,
|
||||||
|
}))
|
||||||
|
.pipe(jasmineBrowser.server({
|
||||||
|
port: 8000,
|
||||||
|
whenReady: plugin.whenReady,
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('default', ['test']);
|
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/index.html
generated
vendored
Normal file
22
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/index.html
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script type="application/javascript" src="bower_components/swagger-js/browser/swagger-client.min.js"></script>
|
||||||
|
<script type="application/javascript">
|
||||||
|
window.client = new SwaggerClient({
|
||||||
|
url: "http://localhost:8080/swagger/echo_service.swagger.json",
|
||||||
|
success: function() {
|
||||||
|
client.EchoService.Echo(
|
||||||
|
{id: "foo"},
|
||||||
|
{responseContentType: "application/json"},
|
||||||
|
function(data) {
|
||||||
|
document.getElementById("echoBack").innerHTML = data.obj.id;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="echoBack"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
23
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/package.json
generated
vendored
Normal file
23
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/browser/package.json
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "grpc-gateway-example",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Example use of grpc-gateway from browser",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "SEE LICENSE IN LICENSE.txt",
|
||||||
|
"devDependencies": {
|
||||||
|
"bower": "^1.7.9",
|
||||||
|
"gulp": "^3.9.1",
|
||||||
|
"gulp-bower": "0.0.13",
|
||||||
|
"gulp-exit": "0.0.2",
|
||||||
|
"gulp-jasmine-browser": "^1.3.2",
|
||||||
|
"gulp-process": "^0.1.2",
|
||||||
|
"gulp-shell": "^0.5.2",
|
||||||
|
"jasmine": "^2.4.1",
|
||||||
|
"phantomjs": "^2.1.7",
|
||||||
|
"swagger-client": "^2.1.28",
|
||||||
|
"webpack-stream": "^3.2.0"
|
||||||
|
}
|
||||||
|
}
|
162
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/client_test.go
generated
vendored
Normal file
162
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/client_test.go
generated
vendored
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestClientIntegration(t *testing.T) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEchoClient(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cl := echo.NewEchoServiceApiWithBasePath("http://localhost:8080")
|
||||||
|
resp, err := cl.Echo("foo")
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf(`cl.Echo("foo") failed with %v; want success`, err)
|
||||||
|
}
|
||||||
|
if got, want := resp.Id, "foo"; got != want {
|
||||||
|
t.Errorf("resp.Id = %q; want %q", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEchoBodyClient(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cl := echo.NewEchoServiceApiWithBasePath("http://localhost:8080")
|
||||||
|
req := echo.ExamplepbSimpleMessage{Id: "foo"}
|
||||||
|
resp, err := cl.EchoBody(req)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("cl.EchoBody(%#v) failed with %v; want success", req, err)
|
||||||
|
}
|
||||||
|
if got, want := resp.Id, "foo"; got != want {
|
||||||
|
t.Errorf("resp.Id = %q; want %q", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAbitOfEverythingClient(t *testing.T) {
|
||||||
|
if testing.Short() {
|
||||||
|
t.Skip()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
cl := abe.NewABitOfEverythingServiceApiWithBasePath("http://localhost:8080")
|
||||||
|
testABEClientCreate(t, cl)
|
||||||
|
testABEClientCreateBody(t, cl)
|
||||||
|
}
|
||||||
|
|
||||||
|
func testABEClientCreate(t *testing.T, cl *abe.ABitOfEverythingServiceApi) {
|
||||||
|
want := abe.ExamplepbABitOfEverything{
|
||||||
|
FloatValue: 1.5,
|
||||||
|
DoubleValue: 2.5,
|
||||||
|
Int64Value: "4294967296",
|
||||||
|
Uint64Value: "9223372036854775807",
|
||||||
|
Int32Value: -2147483648,
|
||||||
|
Fixed64Value: "9223372036854775807",
|
||||||
|
Fixed32Value: 4294967295,
|
||||||
|
BoolValue: true,
|
||||||
|
StringValue: "strprefix/foo",
|
||||||
|
Uint32Value: 4294967295,
|
||||||
|
Sfixed32Value: 2147483647,
|
||||||
|
Sfixed64Value: "-4611686018427387904",
|
||||||
|
Sint32Value: 2147483647,
|
||||||
|
Sint64Value: "4611686018427387903",
|
||||||
|
NonConventionalNameValue: "camelCase",
|
||||||
|
}
|
||||||
|
resp, err := cl.Create(
|
||||||
|
want.FloatValue,
|
||||||
|
want.DoubleValue,
|
||||||
|
want.Int64Value,
|
||||||
|
want.Uint64Value,
|
||||||
|
want.Int32Value,
|
||||||
|
want.Fixed64Value,
|
||||||
|
want.Fixed32Value,
|
||||||
|
want.BoolValue,
|
||||||
|
want.StringValue,
|
||||||
|
want.Uint32Value,
|
||||||
|
want.Sfixed32Value,
|
||||||
|
want.Sfixed64Value,
|
||||||
|
want.Sint32Value,
|
||||||
|
want.Sint64Value,
|
||||||
|
want.NonConventionalNameValue,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("cl.Create(%#v) failed with %v; want success", want, err)
|
||||||
|
}
|
||||||
|
if resp.Uuid == "" {
|
||||||
|
t.Errorf("resp.Uuid is empty; want not empty")
|
||||||
|
}
|
||||||
|
resp.Uuid = ""
|
||||||
|
if got := resp; !reflect.DeepEqual(got, want) {
|
||||||
|
t.Errorf("resp = %#v; want %#v", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testABEClientCreateBody(t *testing.T, cl *abe.ABitOfEverythingServiceApi) {
|
||||||
|
t.Log("TODO: support enum")
|
||||||
|
return
|
||||||
|
|
||||||
|
want := abe.ExamplepbABitOfEverything{
|
||||||
|
FloatValue: 1.5,
|
||||||
|
DoubleValue: 2.5,
|
||||||
|
Int64Value: "4294967296",
|
||||||
|
Uint64Value: "9223372036854775807",
|
||||||
|
Int32Value: -2147483648,
|
||||||
|
Fixed64Value: "9223372036854775807",
|
||||||
|
Fixed32Value: 4294967295,
|
||||||
|
BoolValue: true,
|
||||||
|
StringValue: "strprefix/foo",
|
||||||
|
Uint32Value: 4294967295,
|
||||||
|
Sfixed32Value: 2147483647,
|
||||||
|
Sfixed64Value: "-4611686018427387904",
|
||||||
|
Sint32Value: 2147483647,
|
||||||
|
Sint64Value: "4611686018427387903",
|
||||||
|
NonConventionalNameValue: "camelCase",
|
||||||
|
|
||||||
|
Nested: []abe.ABitOfEverythingNested{
|
||||||
|
{
|
||||||
|
Name: "bar",
|
||||||
|
Amount: 10,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "baz",
|
||||||
|
Amount: 20,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
RepeatedStringValue: []string{"a", "b", "c"},
|
||||||
|
OneofString: "x",
|
||||||
|
MapValue: map[string]abe.ExamplepbNumericEnum{
|
||||||
|
// "a": abe.ExamplepbNumericEnum_ONE,
|
||||||
|
// "b": abe.ExamplepbNumericEnum_ZERO,
|
||||||
|
},
|
||||||
|
MappedStringValue: map[string]string{
|
||||||
|
"a": "x",
|
||||||
|
"b": "y",
|
||||||
|
},
|
||||||
|
MappedNestedValue: map[string]abe.ABitOfEverythingNested{
|
||||||
|
"a": {Name: "x", Amount: 1},
|
||||||
|
"b": {Name: "y", Amount: 2},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
resp, err := cl.CreateBody(want)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("cl.CreateBody(%#v) failed with %v; want success", want, err)
|
||||||
|
}
|
||||||
|
if resp.Uuid == "" {
|
||||||
|
t.Errorf("resp.Uuid is empty; want not empty")
|
||||||
|
}
|
||||||
|
resp.Uuid = ""
|
||||||
|
if got := resp; !reflect.DeepEqual(got, want) {
|
||||||
|
t.Errorf("resp = %#v; want %#v", got, want)
|
||||||
|
}
|
||||||
|
}
|
11
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ABitOfEverythingNested.go
generated
vendored
Normal file
11
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ABitOfEverythingNested.go
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type ABitOfEverythingNested struct {
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
Amount int64 `json:"amount,omitempty"`
|
||||||
|
Ok NestedDeepEnum `json:"ok,omitempty"`
|
||||||
|
|
||||||
|
}
|
764
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ABitOfEverythingServiceApi.go
generated
vendored
Normal file
764
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ABitOfEverythingServiceApi.go
generated
vendored
Normal file
@ -0,0 +1,764 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
"fmt"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"github.com/dghubble/sling"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ABitOfEverythingServiceApi struct {
|
||||||
|
basePath string
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewABitOfEverythingServiceApi() *ABitOfEverythingServiceApi{
|
||||||
|
return &ABitOfEverythingServiceApi {
|
||||||
|
basePath: "http://localhost",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewABitOfEverythingServiceApiWithBasePath(basePath string) *ABitOfEverythingServiceApi{
|
||||||
|
return &ABitOfEverythingServiceApi {
|
||||||
|
basePath: basePath,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param floatValue
|
||||||
|
* @param doubleValue
|
||||||
|
* @param int64Value
|
||||||
|
* @param uint64Value
|
||||||
|
* @param int32Value
|
||||||
|
* @param fixed64Value
|
||||||
|
* @param fixed32Value
|
||||||
|
* @param boolValue
|
||||||
|
* @param stringValue
|
||||||
|
* @param uint32Value
|
||||||
|
* @param sfixed32Value
|
||||||
|
* @param sfixed64Value
|
||||||
|
* @param sint32Value
|
||||||
|
* @param sint64Value
|
||||||
|
* @param nonConventionalNameValue
|
||||||
|
* @return ExamplepbABitOfEverything
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Create (floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string) (ExamplepbABitOfEverything, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Create (floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string) (ExamplepbABitOfEverything, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}"
|
||||||
|
path = strings.Replace(path, "{" + "float_value" + "}", fmt.Sprintf("%v", floatValue), -1)
|
||||||
|
path = strings.Replace(path, "{" + "double_value" + "}", fmt.Sprintf("%v", doubleValue), -1)
|
||||||
|
path = strings.Replace(path, "{" + "int64_value" + "}", fmt.Sprintf("%v", int64Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "uint64_value" + "}", fmt.Sprintf("%v", uint64Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "int32_value" + "}", fmt.Sprintf("%v", int32Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "fixed64_value" + "}", fmt.Sprintf("%v", fixed64Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "fixed32_value" + "}", fmt.Sprintf("%v", fixed32Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "bool_value" + "}", fmt.Sprintf("%v", boolValue), -1)
|
||||||
|
path = strings.Replace(path, "{" + "string_value" + "}", fmt.Sprintf("%v", stringValue), -1)
|
||||||
|
path = strings.Replace(path, "{" + "uint32_value" + "}", fmt.Sprintf("%v", uint32Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "sfixed32_value" + "}", fmt.Sprintf("%v", sfixed32Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "sfixed64_value" + "}", fmt.Sprintf("%v", sfixed64Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "sint32_value" + "}", fmt.Sprintf("%v", sint32Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "sint64_value" + "}", fmt.Sprintf("%v", sint64Value), -1)
|
||||||
|
path = strings.Replace(path, "{" + "nonConventionalNameValue" + "}", fmt.Sprintf("%v", nonConventionalNameValue), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(ExamplepbABitOfEverything)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param body
|
||||||
|
* @return ExamplepbABitOfEverything
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) CreateBody (body ExamplepbABitOfEverything) (ExamplepbABitOfEverything, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) CreateBody (body ExamplepbABitOfEverything) (ExamplepbABitOfEverything, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything"
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
// body params
|
||||||
|
_sling = _sling.BodyJSON(body)
|
||||||
|
|
||||||
|
var successPayload = new(ExamplepbABitOfEverything)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param singleNestedName
|
||||||
|
* @param body
|
||||||
|
* @return ExamplepbABitOfEverything
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) DeepPathEcho (singleNestedName string, body ExamplepbABitOfEverything) (ExamplepbABitOfEverything, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) DeepPathEcho (singleNestedName string, body ExamplepbABitOfEverything) (ExamplepbABitOfEverything, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/{single_nested.name}"
|
||||||
|
path = strings.Replace(path, "{" + "single_nested.name" + "}", fmt.Sprintf("%v", singleNestedName), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
// body params
|
||||||
|
_sling = _sling.BodyJSON(body)
|
||||||
|
|
||||||
|
var successPayload = new(ExamplepbABitOfEverything)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param uuid
|
||||||
|
* @return ProtobufEmpty
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Delete (uuid string) (ProtobufEmpty, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Delete (uuid string) (ProtobufEmpty, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Delete(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/{uuid}"
|
||||||
|
path = strings.Replace(path, "{" + "uuid" + "}", fmt.Sprintf("%v", uuid), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(ProtobufEmpty)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @return SubStringMessage
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Echo (value string) (SubStringMessage, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Echo (value string) (SubStringMessage, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Get(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/echo/{value}"
|
||||||
|
path = strings.Replace(path, "{" + "value" + "}", fmt.Sprintf("%v", value), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(SubStringMessage)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param value
|
||||||
|
* @return SubStringMessage
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Echo_1 (value string) (SubStringMessage, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Echo_1 (value string) (SubStringMessage, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Get(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v2/example/echo"
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
type QueryParams struct {
|
||||||
|
value string `url:"value,omitempty"`
|
||||||
|
|
||||||
|
}
|
||||||
|
_sling = _sling.QueryStruct(&QueryParams{ value: value })
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(SubStringMessage)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param body
|
||||||
|
* @return SubStringMessage
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Echo_2 (body string) (SubStringMessage, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Echo_2 (body string) (SubStringMessage, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v2/example/echo"
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
// body params
|
||||||
|
_sling = _sling.BodyJSON(body)
|
||||||
|
|
||||||
|
var successPayload = new(SubStringMessage)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param uuid
|
||||||
|
* @param singleNestedName name is nested field.
|
||||||
|
* @param singleNestedAmount
|
||||||
|
* @param singleNestedOk - FALSE: FALSE is false.\n - TRUE: TRUE is true.
|
||||||
|
* @param floatValue
|
||||||
|
* @param doubleValue
|
||||||
|
* @param int64Value
|
||||||
|
* @param uint64Value
|
||||||
|
* @param int32Value
|
||||||
|
* @param fixed64Value
|
||||||
|
* @param fixed32Value
|
||||||
|
* @param boolValue
|
||||||
|
* @param stringValue
|
||||||
|
* @param uint32Value TODO(yugui) add bytes_value.
|
||||||
|
* @param enumValue - ZERO: ZERO means 0\n - ONE: ONE means 1
|
||||||
|
* @param sfixed32Value
|
||||||
|
* @param sfixed64Value
|
||||||
|
* @param sint32Value
|
||||||
|
* @param sint64Value
|
||||||
|
* @param repeatedStringValue
|
||||||
|
* @param oneofString
|
||||||
|
* @param nonConventionalNameValue
|
||||||
|
* @param timestampValue
|
||||||
|
* @param repeatedEnumValue repeated enum value. it is comma-separated in query.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1
|
||||||
|
* @return ProtobufEmpty
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) GetQuery (uuid string, singleNestedName string, singleNestedAmount int64, singleNestedOk string, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, enumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string) (ProtobufEmpty, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) GetQuery (uuid string, singleNestedName string, singleNestedAmount int64, singleNestedOk string, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, enumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string) (ProtobufEmpty, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Get(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/query/{uuid}"
|
||||||
|
path = strings.Replace(path, "{" + "uuid" + "}", fmt.Sprintf("%v", uuid), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
type QueryParams struct {
|
||||||
|
singleNestedName string `url:"single_nested.name,omitempty"`
|
||||||
|
singleNestedAmount int64 `url:"single_nested.amount,omitempty"`
|
||||||
|
singleNestedOk string `url:"single_nested.ok,omitempty"`
|
||||||
|
floatValue float32 `url:"float_value,omitempty"`
|
||||||
|
doubleValue float64 `url:"double_value,omitempty"`
|
||||||
|
int64Value string `url:"int64_value,omitempty"`
|
||||||
|
uint64Value string `url:"uint64_value,omitempty"`
|
||||||
|
int32Value int32 `url:"int32_value,omitempty"`
|
||||||
|
fixed64Value string `url:"fixed64_value,omitempty"`
|
||||||
|
fixed32Value int64 `url:"fixed32_value,omitempty"`
|
||||||
|
boolValue bool `url:"bool_value,omitempty"`
|
||||||
|
stringValue string `url:"string_value,omitempty"`
|
||||||
|
uint32Value int64 `url:"uint32_value,omitempty"`
|
||||||
|
enumValue string `url:"enum_value,omitempty"`
|
||||||
|
sfixed32Value int32 `url:"sfixed32_value,omitempty"`
|
||||||
|
sfixed64Value string `url:"sfixed64_value,omitempty"`
|
||||||
|
sint32Value int32 `url:"sint32_value,omitempty"`
|
||||||
|
sint64Value string `url:"sint64_value,omitempty"`
|
||||||
|
repeatedStringValue []string `url:"repeated_string_value,omitempty"`
|
||||||
|
oneofString string `url:"oneof_string,omitempty"`
|
||||||
|
nonConventionalNameValue string `url:"nonConventionalNameValue,omitempty"`
|
||||||
|
timestampValue time.Time `url:"timestamp_value,omitempty"`
|
||||||
|
repeatedEnumValue []string `url:"repeated_enum_value,omitempty"`
|
||||||
|
|
||||||
|
}
|
||||||
|
_sling = _sling.QueryStruct(&QueryParams{ singleNestedName: singleNestedName,singleNestedAmount: singleNestedAmount,singleNestedOk: singleNestedOk,floatValue: floatValue,doubleValue: doubleValue,int64Value: int64Value,uint64Value: uint64Value,int32Value: int32Value,fixed64Value: fixed64Value,fixed32Value: fixed32Value,boolValue: boolValue,stringValue: stringValue,uint32Value: uint32Value,enumValue: enumValue,sfixed32Value: sfixed32Value,sfixed64Value: sfixed64Value,sint32Value: sint32Value,sint64Value: sint64Value,repeatedStringValue: repeatedStringValue,oneofString: oneofString,nonConventionalNameValue: nonConventionalNameValue,timestampValue: timestampValue,repeatedEnumValue: repeatedEnumValue })
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(ProtobufEmpty)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param uuid
|
||||||
|
* @return ExamplepbABitOfEverything
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Lookup (uuid string) (ExamplepbABitOfEverything, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Lookup (uuid string) (ExamplepbABitOfEverything, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Get(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/{uuid}"
|
||||||
|
path = strings.Replace(path, "{" + "uuid" + "}", fmt.Sprintf("%v", uuid), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(ExamplepbABitOfEverything)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return ProtobufEmpty
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Timeout () (ProtobufEmpty, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Timeout () (ProtobufEmpty, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Get(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v2/example/timeout"
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(ProtobufEmpty)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param uuid
|
||||||
|
* @param body
|
||||||
|
* @return ProtobufEmpty
|
||||||
|
*/
|
||||||
|
//func (a ABitOfEverythingServiceApi) Update (uuid string, body ExamplepbABitOfEverything) (ProtobufEmpty, error) {
|
||||||
|
func (a ABitOfEverythingServiceApi) Update (uuid string, body ExamplepbABitOfEverything) (ProtobufEmpty, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Put(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/a_bit_of_everything/{uuid}"
|
||||||
|
path = strings.Replace(path, "{" + "uuid" + "}", fmt.Sprintf("%v", uuid), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
// body params
|
||||||
|
_sling = _sling.BodyJSON(body)
|
||||||
|
|
||||||
|
var successPayload = new(ProtobufEmpty)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
36
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ExamplepbABitOfEverything.go
generated
vendored
Normal file
36
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ExamplepbABitOfEverything.go
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ExamplepbABitOfEverything struct {
|
||||||
|
SingleNested ABitOfEverythingNested `json:"single_nested,omitempty"`
|
||||||
|
Uuid string `json:"uuid,omitempty"`
|
||||||
|
Nested []ABitOfEverythingNested `json:"nested,omitempty"`
|
||||||
|
FloatValue float32 `json:"float_value,omitempty"`
|
||||||
|
DoubleValue float64 `json:"double_value,omitempty"`
|
||||||
|
Int64Value string `json:"int64_value,omitempty"`
|
||||||
|
Uint64Value string `json:"uint64_value,omitempty"`
|
||||||
|
Int32Value int32 `json:"int32_value,omitempty"`
|
||||||
|
Fixed64Value string `json:"fixed64_value,omitempty"`
|
||||||
|
Fixed32Value int64 `json:"fixed32_value,omitempty"`
|
||||||
|
BoolValue bool `json:"bool_value,omitempty"`
|
||||||
|
StringValue string `json:"string_value,omitempty"`
|
||||||
|
Uint32Value int64 `json:"uint32_value,omitempty"`
|
||||||
|
EnumValue ExamplepbNumericEnum `json:"enum_value,omitempty"`
|
||||||
|
Sfixed32Value int32 `json:"sfixed32_value,omitempty"`
|
||||||
|
Sfixed64Value string `json:"sfixed64_value,omitempty"`
|
||||||
|
Sint32Value int32 `json:"sint32_value,omitempty"`
|
||||||
|
Sint64Value string `json:"sint64_value,omitempty"`
|
||||||
|
RepeatedStringValue []string `json:"repeated_string_value,omitempty"`
|
||||||
|
OneofEmpty ProtobufEmpty `json:"oneof_empty,omitempty"`
|
||||||
|
OneofString string `json:"oneof_string,omitempty"`
|
||||||
|
MapValue map[string]ExamplepbNumericEnum `json:"map_value,omitempty"`
|
||||||
|
MappedStringValue map[string]string `json:"mapped_string_value,omitempty"`
|
||||||
|
MappedNestedValue map[string]ABitOfEverythingNested `json:"mapped_nested_value,omitempty"`
|
||||||
|
NonConventionalNameValue string `json:"nonConventionalNameValue,omitempty"`
|
||||||
|
TimestampValue time.Time `json:"timestamp_value,omitempty"`
|
||||||
|
RepeatedEnumValue []ExamplepbNumericEnum `json:"repeated_enum_value,omitempty"`
|
||||||
|
|
||||||
|
}
|
8
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ExamplepbNumericEnum.go
generated
vendored
Normal file
8
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ExamplepbNumericEnum.go
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type ExamplepbNumericEnum struct {
|
||||||
|
|
||||||
|
}
|
8
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/NestedDeepEnum.go
generated
vendored
Normal file
8
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/NestedDeepEnum.go
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type NestedDeepEnum struct {
|
||||||
|
|
||||||
|
}
|
10
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ProtobufDuration.go
generated
vendored
Normal file
10
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ProtobufDuration.go
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type ProtobufDuration struct {
|
||||||
|
Seconds string `json:"seconds,omitempty"`
|
||||||
|
Nanos int32 `json:"nanos,omitempty"`
|
||||||
|
|
||||||
|
}
|
8
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ProtobufEmpty.go
generated
vendored
Normal file
8
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/ProtobufEmpty.go
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type ProtobufEmpty struct {
|
||||||
|
|
||||||
|
}
|
9
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/SubStringMessage.go
generated
vendored
Normal file
9
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/abe/SubStringMessage.go
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package abe
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type SubStringMessage struct {
|
||||||
|
Value string `json:"value,omitempty"`
|
||||||
|
|
||||||
|
}
|
145
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/EchoServiceApi.go
generated
vendored
Normal file
145
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/EchoServiceApi.go
generated
vendored
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
package echo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
"fmt"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"github.com/dghubble/sling"
|
||||||
|
)
|
||||||
|
|
||||||
|
type EchoServiceApi struct {
|
||||||
|
basePath string
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewEchoServiceApi() *EchoServiceApi{
|
||||||
|
return &EchoServiceApi {
|
||||||
|
basePath: "http://localhost",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewEchoServiceApiWithBasePath(basePath string) *EchoServiceApi{
|
||||||
|
return &EchoServiceApi {
|
||||||
|
basePath: basePath,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Echo method receives a simple message and returns it.
|
||||||
|
* The message posted as the id parameter will also be\nreturned.
|
||||||
|
* @param id
|
||||||
|
* @return ExamplepbSimpleMessage
|
||||||
|
*/
|
||||||
|
//func (a EchoServiceApi) Echo (id string) (ExamplepbSimpleMessage, error) {
|
||||||
|
func (a EchoServiceApi) Echo (id string) (ExamplepbSimpleMessage, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/echo/{id}"
|
||||||
|
path = strings.Replace(path, "{" + "id" + "}", fmt.Sprintf("%v", id), -1)
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var successPayload = new(ExamplepbSimpleMessage)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* EchoBody method receives a simple message and returns it.
|
||||||
|
*
|
||||||
|
* @param body
|
||||||
|
* @return ExamplepbSimpleMessage
|
||||||
|
*/
|
||||||
|
//func (a EchoServiceApi) EchoBody (body ExamplepbSimpleMessage) (ExamplepbSimpleMessage, error) {
|
||||||
|
func (a EchoServiceApi) EchoBody (body ExamplepbSimpleMessage) (ExamplepbSimpleMessage, error) {
|
||||||
|
|
||||||
|
_sling := sling.New().Post(a.basePath)
|
||||||
|
|
||||||
|
// create path and map variables
|
||||||
|
path := "/v1/example/echo_body"
|
||||||
|
|
||||||
|
_sling = _sling.Path(path)
|
||||||
|
|
||||||
|
// accept header
|
||||||
|
accepts := []string { "application/json" }
|
||||||
|
for key := range accepts {
|
||||||
|
_sling = _sling.Set("Accept", accepts[key])
|
||||||
|
break // only use the first Accept
|
||||||
|
}
|
||||||
|
|
||||||
|
// body params
|
||||||
|
_sling = _sling.BodyJSON(body)
|
||||||
|
|
||||||
|
var successPayload = new(ExamplepbSimpleMessage)
|
||||||
|
|
||||||
|
// We use this map (below) so that any arbitrary error JSON can be handled.
|
||||||
|
// FIXME: This is in the absence of this Go generator honoring the non-2xx
|
||||||
|
// response (error) models, which needs to be implemented at some point.
|
||||||
|
var failurePayload map[string]interface{}
|
||||||
|
|
||||||
|
httpResponse, err := _sling.Receive(successPayload, &failurePayload)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
// err == nil only means that there wasn't a sub-application-layer error (e.g. no network error)
|
||||||
|
if failurePayload != nil {
|
||||||
|
// If the failurePayload is present, there likely was some kind of non-2xx status
|
||||||
|
// returned (and a JSON payload error present)
|
||||||
|
var str []byte
|
||||||
|
str, err = json.Marshal(failurePayload)
|
||||||
|
if err == nil { // For safety, check for an error marshalling... probably superfluous
|
||||||
|
// This will return the JSON error body as a string
|
||||||
|
err = errors.New(string(str))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// So, there was no network-type error, and nothing in the failure payload,
|
||||||
|
// but we should still check the status code
|
||||||
|
if httpResponse == nil {
|
||||||
|
// This should never happen...
|
||||||
|
err = errors.New("No HTTP Response received.")
|
||||||
|
} else if code := httpResponse.StatusCode; 200 > code || code > 299 {
|
||||||
|
err = errors.New("HTTP Error: " + string(httpResponse.StatusCode))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *successPayload, err
|
||||||
|
}
|
9
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/ExamplepbSimpleMessage.go
generated
vendored
Normal file
9
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/clients/echo/ExamplepbSimpleMessage.go
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package echo
|
||||||
|
|
||||||
|
import (
|
||||||
|
)
|
||||||
|
|
||||||
|
type ExamplepbSimpleMessage struct {
|
||||||
|
Id string `json:"id,omitempty"`
|
||||||
|
|
||||||
|
}
|
957
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.pb.go
generated
vendored
Normal file
957
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.pb.go
generated
vendored
Normal file
@ -0,0 +1,957 @@
|
|||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: examples/examplepb/a_bit_of_everything.proto
|
||||||
|
|
||||||
|
package examplepb
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
import _ "google.golang.org/genproto/googleapis/api/annotations"
|
||||||
|
import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
|
||||||
|
import google_protobuf2 "github.com/golang/protobuf/ptypes/duration"
|
||||||
|
import grpc_gateway_examples_sub "github.com/grpc-ecosystem/grpc-gateway/examples/sub"
|
||||||
|
import sub2 "github.com/grpc-ecosystem/grpc-gateway/examples/sub2"
|
||||||
|
import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp"
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "golang.org/x/net/context"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
// NumericEnum is one or zero.
|
||||||
|
type NumericEnum int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ZERO means 0
|
||||||
|
NumericEnum_ZERO NumericEnum = 0
|
||||||
|
// ONE means 1
|
||||||
|
NumericEnum_ONE NumericEnum = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
var NumericEnum_name = map[int32]string{
|
||||||
|
0: "ZERO",
|
||||||
|
1: "ONE",
|
||||||
|
}
|
||||||
|
var NumericEnum_value = map[string]int32{
|
||||||
|
"ZERO": 0,
|
||||||
|
"ONE": 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x NumericEnum) String() string {
|
||||||
|
return proto.EnumName(NumericEnum_name, int32(x))
|
||||||
|
}
|
||||||
|
func (NumericEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
|
||||||
|
|
||||||
|
// DeepEnum is one or zero.
|
||||||
|
type ABitOfEverything_Nested_DeepEnum int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
// FALSE is false.
|
||||||
|
ABitOfEverything_Nested_FALSE ABitOfEverything_Nested_DeepEnum = 0
|
||||||
|
// TRUE is true.
|
||||||
|
ABitOfEverything_Nested_TRUE ABitOfEverything_Nested_DeepEnum = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
var ABitOfEverything_Nested_DeepEnum_name = map[int32]string{
|
||||||
|
0: "FALSE",
|
||||||
|
1: "TRUE",
|
||||||
|
}
|
||||||
|
var ABitOfEverything_Nested_DeepEnum_value = map[string]int32{
|
||||||
|
"FALSE": 0,
|
||||||
|
"TRUE": 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x ABitOfEverything_Nested_DeepEnum) String() string {
|
||||||
|
return proto.EnumName(ABitOfEverything_Nested_DeepEnum_name, int32(x))
|
||||||
|
}
|
||||||
|
func (ABitOfEverything_Nested_DeepEnum) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor1, []int{0, 0, 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Intentionaly complicated message type to cover much features of Protobuf.
|
||||||
|
// NEXT ID: 27
|
||||||
|
type ABitOfEverything struct {
|
||||||
|
SingleNested *ABitOfEverything_Nested `protobuf:"bytes,25,opt,name=single_nested,json=singleNested" json:"single_nested,omitempty"`
|
||||||
|
Uuid string `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"`
|
||||||
|
Nested []*ABitOfEverything_Nested `protobuf:"bytes,2,rep,name=nested" json:"nested,omitempty"`
|
||||||
|
FloatValue float32 `protobuf:"fixed32,3,opt,name=float_value,json=floatValue" json:"float_value,omitempty"`
|
||||||
|
DoubleValue float64 `protobuf:"fixed64,4,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"`
|
||||||
|
Int64Value int64 `protobuf:"varint,5,opt,name=int64_value,json=int64Value" json:"int64_value,omitempty"`
|
||||||
|
Uint64Value uint64 `protobuf:"varint,6,opt,name=uint64_value,json=uint64Value" json:"uint64_value,omitempty"`
|
||||||
|
Int32Value int32 `protobuf:"varint,7,opt,name=int32_value,json=int32Value" json:"int32_value,omitempty"`
|
||||||
|
Fixed64Value uint64 `protobuf:"fixed64,8,opt,name=fixed64_value,json=fixed64Value" json:"fixed64_value,omitempty"`
|
||||||
|
Fixed32Value uint32 `protobuf:"fixed32,9,opt,name=fixed32_value,json=fixed32Value" json:"fixed32_value,omitempty"`
|
||||||
|
BoolValue bool `protobuf:"varint,10,opt,name=bool_value,json=boolValue" json:"bool_value,omitempty"`
|
||||||
|
StringValue string `protobuf:"bytes,11,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
|
||||||
|
// TODO(yugui) add bytes_value
|
||||||
|
Uint32Value uint32 `protobuf:"varint,13,opt,name=uint32_value,json=uint32Value" json:"uint32_value,omitempty"`
|
||||||
|
EnumValue NumericEnum `protobuf:"varint,14,opt,name=enum_value,json=enumValue,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"enum_value,omitempty"`
|
||||||
|
Sfixed32Value int32 `protobuf:"fixed32,15,opt,name=sfixed32_value,json=sfixed32Value" json:"sfixed32_value,omitempty"`
|
||||||
|
Sfixed64Value int64 `protobuf:"fixed64,16,opt,name=sfixed64_value,json=sfixed64Value" json:"sfixed64_value,omitempty"`
|
||||||
|
Sint32Value int32 `protobuf:"zigzag32,17,opt,name=sint32_value,json=sint32Value" json:"sint32_value,omitempty"`
|
||||||
|
Sint64Value int64 `protobuf:"zigzag64,18,opt,name=sint64_value,json=sint64Value" json:"sint64_value,omitempty"`
|
||||||
|
RepeatedStringValue []string `protobuf:"bytes,19,rep,name=repeated_string_value,json=repeatedStringValue" json:"repeated_string_value,omitempty"`
|
||||||
|
// Types that are valid to be assigned to OneofValue:
|
||||||
|
// *ABitOfEverything_OneofEmpty
|
||||||
|
// *ABitOfEverything_OneofString
|
||||||
|
OneofValue isABitOfEverything_OneofValue `protobuf_oneof:"oneof_value"`
|
||||||
|
MapValue map[string]NumericEnum `protobuf:"bytes,22,rep,name=map_value,json=mapValue" json:"map_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=grpc.gateway.examples.examplepb.NumericEnum"`
|
||||||
|
MappedStringValue map[string]string `protobuf:"bytes,23,rep,name=mapped_string_value,json=mappedStringValue" json:"mapped_string_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||||
|
MappedNestedValue map[string]*ABitOfEverything_Nested `protobuf:"bytes,24,rep,name=mapped_nested_value,json=mappedNestedValue" json:"mapped_nested_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||||
|
NonConventionalNameValue string `protobuf:"bytes,26,opt,name=nonConventionalNameValue" json:"nonConventionalNameValue,omitempty"`
|
||||||
|
TimestampValue *google_protobuf3.Timestamp `protobuf:"bytes,27,opt,name=timestamp_value,json=timestampValue" json:"timestamp_value,omitempty"`
|
||||||
|
// repeated enum value. it is comma-separated in query
|
||||||
|
RepeatedEnumValue []NumericEnum `protobuf:"varint,28,rep,packed,name=repeated_enum_value,json=repeatedEnumValue,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_value,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) Reset() { *m = ABitOfEverything{} }
|
||||||
|
func (m *ABitOfEverything) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*ABitOfEverything) ProtoMessage() {}
|
||||||
|
func (*ABitOfEverything) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} }
|
||||||
|
|
||||||
|
type isABitOfEverything_OneofValue interface {
|
||||||
|
isABitOfEverything_OneofValue()
|
||||||
|
}
|
||||||
|
|
||||||
|
type ABitOfEverything_OneofEmpty struct {
|
||||||
|
OneofEmpty *google_protobuf1.Empty `protobuf:"bytes,20,opt,name=oneof_empty,json=oneofEmpty,oneof"`
|
||||||
|
}
|
||||||
|
type ABitOfEverything_OneofString struct {
|
||||||
|
OneofString string `protobuf:"bytes,21,opt,name=oneof_string,json=oneofString,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ABitOfEverything_OneofEmpty) isABitOfEverything_OneofValue() {}
|
||||||
|
func (*ABitOfEverything_OneofString) isABitOfEverything_OneofValue() {}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetOneofValue() isABitOfEverything_OneofValue {
|
||||||
|
if m != nil {
|
||||||
|
return m.OneofValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetSingleNested() *ABitOfEverything_Nested {
|
||||||
|
if m != nil {
|
||||||
|
return m.SingleNested
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetUuid() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Uuid
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetNested() []*ABitOfEverything_Nested {
|
||||||
|
if m != nil {
|
||||||
|
return m.Nested
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetFloatValue() float32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.FloatValue
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetDoubleValue() float64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.DoubleValue
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetInt64Value() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Int64Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetUint64Value() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Uint64Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetInt32Value() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Int32Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetFixed64Value() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Fixed64Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetFixed32Value() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Fixed32Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetBoolValue() bool {
|
||||||
|
if m != nil {
|
||||||
|
return m.BoolValue
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetStringValue() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.StringValue
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetUint32Value() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Uint32Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetEnumValue() NumericEnum {
|
||||||
|
if m != nil {
|
||||||
|
return m.EnumValue
|
||||||
|
}
|
||||||
|
return NumericEnum_ZERO
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetSfixed32Value() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Sfixed32Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetSfixed64Value() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Sfixed64Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetSint32Value() int32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Sint32Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetSint64Value() int64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Sint64Value
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetRepeatedStringValue() []string {
|
||||||
|
if m != nil {
|
||||||
|
return m.RepeatedStringValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetOneofEmpty() *google_protobuf1.Empty {
|
||||||
|
if x, ok := m.GetOneofValue().(*ABitOfEverything_OneofEmpty); ok {
|
||||||
|
return x.OneofEmpty
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetOneofString() string {
|
||||||
|
if x, ok := m.GetOneofValue().(*ABitOfEverything_OneofString); ok {
|
||||||
|
return x.OneofString
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetMapValue() map[string]NumericEnum {
|
||||||
|
if m != nil {
|
||||||
|
return m.MapValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetMappedStringValue() map[string]string {
|
||||||
|
if m != nil {
|
||||||
|
return m.MappedStringValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetMappedNestedValue() map[string]*ABitOfEverything_Nested {
|
||||||
|
if m != nil {
|
||||||
|
return m.MappedNestedValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetNonConventionalNameValue() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.NonConventionalNameValue
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetTimestampValue() *google_protobuf3.Timestamp {
|
||||||
|
if m != nil {
|
||||||
|
return m.TimestampValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything) GetRepeatedEnumValue() []NumericEnum {
|
||||||
|
if m != nil {
|
||||||
|
return m.RepeatedEnumValue
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX_OneofFuncs is for the internal use of the proto package.
|
||||||
|
func (*ABitOfEverything) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
|
||||||
|
return _ABitOfEverything_OneofMarshaler, _ABitOfEverything_OneofUnmarshaler, _ABitOfEverything_OneofSizer, []interface{}{
|
||||||
|
(*ABitOfEverything_OneofEmpty)(nil),
|
||||||
|
(*ABitOfEverything_OneofString)(nil),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverything_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
|
||||||
|
m := msg.(*ABitOfEverything)
|
||||||
|
// oneof_value
|
||||||
|
switch x := m.OneofValue.(type) {
|
||||||
|
case *ABitOfEverything_OneofEmpty:
|
||||||
|
b.EncodeVarint(20<<3 | proto.WireBytes)
|
||||||
|
if err := b.EncodeMessage(x.OneofEmpty); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case *ABitOfEverything_OneofString:
|
||||||
|
b.EncodeVarint(21<<3 | proto.WireBytes)
|
||||||
|
b.EncodeStringBytes(x.OneofString)
|
||||||
|
case nil:
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("ABitOfEverything.OneofValue has unexpected type %T", x)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverything_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
|
||||||
|
m := msg.(*ABitOfEverything)
|
||||||
|
switch tag {
|
||||||
|
case 20: // oneof_value.oneof_empty
|
||||||
|
if wire != proto.WireBytes {
|
||||||
|
return true, proto.ErrInternalBadWireType
|
||||||
|
}
|
||||||
|
msg := new(google_protobuf1.Empty)
|
||||||
|
err := b.DecodeMessage(msg)
|
||||||
|
m.OneofValue = &ABitOfEverything_OneofEmpty{msg}
|
||||||
|
return true, err
|
||||||
|
case 21: // oneof_value.oneof_string
|
||||||
|
if wire != proto.WireBytes {
|
||||||
|
return true, proto.ErrInternalBadWireType
|
||||||
|
}
|
||||||
|
x, err := b.DecodeStringBytes()
|
||||||
|
m.OneofValue = &ABitOfEverything_OneofString{x}
|
||||||
|
return true, err
|
||||||
|
default:
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverything_OneofSizer(msg proto.Message) (n int) {
|
||||||
|
m := msg.(*ABitOfEverything)
|
||||||
|
// oneof_value
|
||||||
|
switch x := m.OneofValue.(type) {
|
||||||
|
case *ABitOfEverything_OneofEmpty:
|
||||||
|
s := proto.Size(x.OneofEmpty)
|
||||||
|
n += proto.SizeVarint(20<<3 | proto.WireBytes)
|
||||||
|
n += proto.SizeVarint(uint64(s))
|
||||||
|
n += s
|
||||||
|
case *ABitOfEverything_OneofString:
|
||||||
|
n += proto.SizeVarint(21<<3 | proto.WireBytes)
|
||||||
|
n += proto.SizeVarint(uint64(len(x.OneofString)))
|
||||||
|
n += len(x.OneofString)
|
||||||
|
case nil:
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nested is nested type.
|
||||||
|
type ABitOfEverything_Nested struct {
|
||||||
|
// name is nested field.
|
||||||
|
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
|
||||||
|
Amount uint32 `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"`
|
||||||
|
Ok ABitOfEverything_Nested_DeepEnum `protobuf:"varint,3,opt,name=ok,enum=grpc.gateway.examples.examplepb.ABitOfEverything_Nested_DeepEnum" json:"ok,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything_Nested) Reset() { *m = ABitOfEverything_Nested{} }
|
||||||
|
func (m *ABitOfEverything_Nested) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*ABitOfEverything_Nested) ProtoMessage() {}
|
||||||
|
func (*ABitOfEverything_Nested) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} }
|
||||||
|
|
||||||
|
func (m *ABitOfEverything_Nested) GetName() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Name
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything_Nested) GetAmount() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Amount
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *ABitOfEverything_Nested) GetOk() ABitOfEverything_Nested_DeepEnum {
|
||||||
|
if m != nil {
|
||||||
|
return m.Ok
|
||||||
|
}
|
||||||
|
return ABitOfEverything_Nested_FALSE
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*ABitOfEverything)(nil), "grpc.gateway.examples.examplepb.ABitOfEverything")
|
||||||
|
proto.RegisterType((*ABitOfEverything_Nested)(nil), "grpc.gateway.examples.examplepb.ABitOfEverything.Nested")
|
||||||
|
proto.RegisterEnum("grpc.gateway.examples.examplepb.NumericEnum", NumericEnum_name, NumericEnum_value)
|
||||||
|
proto.RegisterEnum("grpc.gateway.examples.examplepb.ABitOfEverything_Nested_DeepEnum", ABitOfEverything_Nested_DeepEnum_name, ABitOfEverything_Nested_DeepEnum_value)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ context.Context
|
||||||
|
var _ grpc.ClientConn
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the grpc package it is being compiled against.
|
||||||
|
const _ = grpc.SupportPackageIsVersion4
|
||||||
|
|
||||||
|
// Client API for ABitOfEverythingService service
|
||||||
|
|
||||||
|
type ABitOfEverythingServiceClient interface {
|
||||||
|
Create(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*ABitOfEverything, error)
|
||||||
|
CreateBody(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*ABitOfEverything, error)
|
||||||
|
Lookup(ctx context.Context, in *sub2.IdMessage, opts ...grpc.CallOption) (*ABitOfEverything, error)
|
||||||
|
Update(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
|
||||||
|
Delete(ctx context.Context, in *sub2.IdMessage, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
|
||||||
|
GetQuery(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
|
||||||
|
Echo(ctx context.Context, in *grpc_gateway_examples_sub.StringMessage, opts ...grpc.CallOption) (*grpc_gateway_examples_sub.StringMessage, error)
|
||||||
|
DeepPathEcho(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*ABitOfEverything, error)
|
||||||
|
NoBindings(ctx context.Context, in *google_protobuf2.Duration, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
|
||||||
|
Timeout(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type aBitOfEverythingServiceClient struct {
|
||||||
|
cc *grpc.ClientConn
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewABitOfEverythingServiceClient(cc *grpc.ClientConn) ABitOfEverythingServiceClient {
|
||||||
|
return &aBitOfEverythingServiceClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) Create(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*ABitOfEverything, error) {
|
||||||
|
out := new(ABitOfEverything)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Create", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) CreateBody(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*ABitOfEverything, error) {
|
||||||
|
out := new(ABitOfEverything)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/CreateBody", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) Lookup(ctx context.Context, in *sub2.IdMessage, opts ...grpc.CallOption) (*ABitOfEverything, error) {
|
||||||
|
out := new(ABitOfEverything)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Lookup", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) Update(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
|
||||||
|
out := new(google_protobuf1.Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Update", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) Delete(ctx context.Context, in *sub2.IdMessage, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
|
||||||
|
out := new(google_protobuf1.Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Delete", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) GetQuery(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
|
||||||
|
out := new(google_protobuf1.Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/GetQuery", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) Echo(ctx context.Context, in *grpc_gateway_examples_sub.StringMessage, opts ...grpc.CallOption) (*grpc_gateway_examples_sub.StringMessage, error) {
|
||||||
|
out := new(grpc_gateway_examples_sub.StringMessage)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Echo", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) DeepPathEcho(ctx context.Context, in *ABitOfEverything, opts ...grpc.CallOption) (*ABitOfEverything, error) {
|
||||||
|
out := new(ABitOfEverything)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/DeepPathEcho", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) NoBindings(ctx context.Context, in *google_protobuf2.Duration, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
|
||||||
|
out := new(google_protobuf1.Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/NoBindings", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *aBitOfEverythingServiceClient) Timeout(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
|
||||||
|
out := new(google_protobuf1.Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Timeout", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server API for ABitOfEverythingService service
|
||||||
|
|
||||||
|
type ABitOfEverythingServiceServer interface {
|
||||||
|
Create(context.Context, *ABitOfEverything) (*ABitOfEverything, error)
|
||||||
|
CreateBody(context.Context, *ABitOfEverything) (*ABitOfEverything, error)
|
||||||
|
Lookup(context.Context, *sub2.IdMessage) (*ABitOfEverything, error)
|
||||||
|
Update(context.Context, *ABitOfEverything) (*google_protobuf1.Empty, error)
|
||||||
|
Delete(context.Context, *sub2.IdMessage) (*google_protobuf1.Empty, error)
|
||||||
|
GetQuery(context.Context, *ABitOfEverything) (*google_protobuf1.Empty, error)
|
||||||
|
Echo(context.Context, *grpc_gateway_examples_sub.StringMessage) (*grpc_gateway_examples_sub.StringMessage, error)
|
||||||
|
DeepPathEcho(context.Context, *ABitOfEverything) (*ABitOfEverything, error)
|
||||||
|
NoBindings(context.Context, *google_protobuf2.Duration) (*google_protobuf1.Empty, error)
|
||||||
|
Timeout(context.Context, *google_protobuf1.Empty) (*google_protobuf1.Empty, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterABitOfEverythingServiceServer(s *grpc.Server, srv ABitOfEverythingServiceServer) {
|
||||||
|
s.RegisterService(&_ABitOfEverythingService_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ABitOfEverything)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Create(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Create",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Create(ctx, req.(*ABitOfEverything))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_CreateBody_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ABitOfEverything)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).CreateBody(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/CreateBody",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).CreateBody(ctx, req.(*ABitOfEverything))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_Lookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(sub2.IdMessage)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Lookup(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Lookup",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Lookup(ctx, req.(*sub2.IdMessage))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ABitOfEverything)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Update(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Update",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Update(ctx, req.(*ABitOfEverything))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(sub2.IdMessage)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Delete(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Delete",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Delete(ctx, req.(*sub2.IdMessage))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_GetQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ABitOfEverything)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).GetQuery(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/GetQuery",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).GetQuery(ctx, req.(*ABitOfEverything))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_Echo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(grpc_gateway_examples_sub.StringMessage)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Echo(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Echo",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Echo(ctx, req.(*grpc_gateway_examples_sub.StringMessage))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_DeepPathEcho_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ABitOfEverything)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).DeepPathEcho(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/DeepPathEcho",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).DeepPathEcho(ctx, req.(*ABitOfEverything))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_NoBindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(google_protobuf2.Duration)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).NoBindings(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/NoBindings",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).NoBindings(ctx, req.(*google_protobuf2.Duration))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ABitOfEverythingService_Timeout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(google_protobuf1.Empty)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Timeout(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.ABitOfEverythingService/Timeout",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ABitOfEverythingServiceServer).Timeout(ctx, req.(*google_protobuf1.Empty))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ABitOfEverythingService_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "grpc.gateway.examples.examplepb.ABitOfEverythingService",
|
||||||
|
HandlerType: (*ABitOfEverythingServiceServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "Create",
|
||||||
|
Handler: _ABitOfEverythingService_Create_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "CreateBody",
|
||||||
|
Handler: _ABitOfEverythingService_CreateBody_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "Lookup",
|
||||||
|
Handler: _ABitOfEverythingService_Lookup_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "Update",
|
||||||
|
Handler: _ABitOfEverythingService_Update_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "Delete",
|
||||||
|
Handler: _ABitOfEverythingService_Delete_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "GetQuery",
|
||||||
|
Handler: _ABitOfEverythingService_GetQuery_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "Echo",
|
||||||
|
Handler: _ABitOfEverythingService_Echo_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "DeepPathEcho",
|
||||||
|
Handler: _ABitOfEverythingService_DeepPathEcho_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "NoBindings",
|
||||||
|
Handler: _ABitOfEverythingService_NoBindings_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "Timeout",
|
||||||
|
Handler: _ABitOfEverythingService_Timeout_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{},
|
||||||
|
Metadata: "examples/examplepb/a_bit_of_everything.proto",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Client API for AnotherServiceWithNoBindings service
|
||||||
|
|
||||||
|
type AnotherServiceWithNoBindingsClient interface {
|
||||||
|
NoBindings(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type anotherServiceWithNoBindingsClient struct {
|
||||||
|
cc *grpc.ClientConn
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewAnotherServiceWithNoBindingsClient(cc *grpc.ClientConn) AnotherServiceWithNoBindingsClient {
|
||||||
|
return &anotherServiceWithNoBindingsClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *anotherServiceWithNoBindingsClient) NoBindings(ctx context.Context, in *google_protobuf1.Empty, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
|
||||||
|
out := new(google_protobuf1.Empty)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.AnotherServiceWithNoBindings/NoBindings", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server API for AnotherServiceWithNoBindings service
|
||||||
|
|
||||||
|
type AnotherServiceWithNoBindingsServer interface {
|
||||||
|
NoBindings(context.Context, *google_protobuf1.Empty) (*google_protobuf1.Empty, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterAnotherServiceWithNoBindingsServer(s *grpc.Server, srv AnotherServiceWithNoBindingsServer) {
|
||||||
|
s.RegisterService(&_AnotherServiceWithNoBindings_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _AnotherServiceWithNoBindings_NoBindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(google_protobuf1.Empty)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(AnotherServiceWithNoBindingsServer).NoBindings(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.AnotherServiceWithNoBindings/NoBindings",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(AnotherServiceWithNoBindingsServer).NoBindings(ctx, req.(*google_protobuf1.Empty))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _AnotherServiceWithNoBindings_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "grpc.gateway.examples.examplepb.AnotherServiceWithNoBindings",
|
||||||
|
HandlerType: (*AnotherServiceWithNoBindingsServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "NoBindings",
|
||||||
|
Handler: _AnotherServiceWithNoBindings_NoBindings_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{},
|
||||||
|
Metadata: "examples/examplepb/a_bit_of_everything.proto",
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("examples/examplepb/a_bit_of_everything.proto", fileDescriptor1) }
|
||||||
|
|
||||||
|
var fileDescriptor1 = []byte{
|
||||||
|
// 1297 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
|
||||||
|
0x14, 0xcf, 0xd8, 0x89, 0x13, 0x3f, 0xc7, 0x89, 0x33, 0x69, 0x53, 0xd7, 0x2d, 0x64, 0x71, 0x01,
|
||||||
|
0xad, 0x42, 0xb5, 0xab, 0xba, 0x15, 0x6a, 0x23, 0x41, 0x95, 0x34, 0x86, 0x22, 0xda, 0xb4, 0xdd,
|
||||||
|
0xfe, 0x41, 0x8a, 0x5a, 0xac, 0xb5, 0x3d, 0xb6, 0x57, 0xf1, 0xee, 0x2c, 0xbb, 0xb3, 0x26, 0x96,
|
||||||
|
0x31, 0x07, 0x0e, 0x5c, 0x38, 0x72, 0xef, 0x05, 0x09, 0x71, 0xe1, 0xc8, 0x19, 0xbe, 0x03, 0x5f,
|
||||||
|
0x81, 0x03, 0x1f, 0x03, 0xed, 0xcc, 0xec, 0x76, 0xd7, 0x89, 0xe5, 0x26, 0x45, 0xbd, 0xed, 0xcc,
|
||||||
|
0x7b, 0xef, 0xf7, 0x7b, 0x7f, 0xe6, 0xbd, 0x99, 0x85, 0xab, 0xe4, 0xc8, 0xb4, 0xdd, 0x3e, 0xf1,
|
||||||
|
0x75, 0xf9, 0xe1, 0x36, 0x75, 0xb3, 0xd1, 0xb4, 0x58, 0x83, 0x76, 0x1a, 0x64, 0x40, 0xbc, 0x21,
|
||||||
|
0xeb, 0x59, 0x4e, 0x57, 0x73, 0x3d, 0xca, 0x28, 0xde, 0xec, 0x7a, 0x6e, 0x4b, 0xeb, 0x9a, 0x8c,
|
||||||
|
0x7c, 0x6b, 0x0e, 0xb5, 0xc8, 0x54, 0x8b, 0x4d, 0x2b, 0x97, 0xbb, 0x94, 0x76, 0xfb, 0x44, 0x37,
|
||||||
|
0x5d, 0x4b, 0x37, 0x1d, 0x87, 0x32, 0x93, 0x59, 0xd4, 0xf1, 0x85, 0x79, 0xe5, 0x92, 0x94, 0xf2,
|
||||||
|
0x55, 0x33, 0xe8, 0xe8, 0xc4, 0x76, 0xd9, 0x50, 0x0a, 0xdf, 0x9d, 0x14, 0xb6, 0x03, 0x8f, 0x5b,
|
||||||
|
0x4b, 0x79, 0x25, 0xf6, 0xd4, 0x0f, 0x9a, 0xba, 0x4d, 0x7c, 0xdf, 0xec, 0x92, 0x08, 0x38, 0x29,
|
||||||
|
0xab, 0x4d, 0x08, 0x37, 0x27, 0x81, 0x99, 0x65, 0x13, 0x9f, 0x99, 0xb6, 0x2b, 0x14, 0xaa, 0x7f,
|
||||||
|
0xad, 0x42, 0x69, 0x67, 0xd7, 0x62, 0x0f, 0x3a, 0xf5, 0x38, 0x60, 0xfc, 0x02, 0x8a, 0xbe, 0xe5,
|
||||||
|
0x74, 0xfb, 0xa4, 0xe1, 0x10, 0x9f, 0x91, 0x76, 0xf9, 0xa2, 0x82, 0xd4, 0x42, 0xed, 0xa6, 0x36,
|
||||||
|
0x23, 0x05, 0xda, 0x24, 0x92, 0xb6, 0xcf, 0xed, 0x8d, 0x65, 0x01, 0x27, 0x56, 0x18, 0xc3, 0x7c,
|
||||||
|
0x10, 0x58, 0xed, 0x32, 0x52, 0x90, 0x9a, 0x37, 0xf8, 0x37, 0x7e, 0x08, 0x39, 0xc9, 0x95, 0x51,
|
||||||
|
0xb2, 0x6f, 0xc4, 0x25, 0x71, 0xf0, 0x26, 0x14, 0x3a, 0x7d, 0x6a, 0xb2, 0xc6, 0xc0, 0xec, 0x07,
|
||||||
|
0xa4, 0x9c, 0x55, 0x90, 0x9a, 0x31, 0x80, 0x6f, 0x3d, 0x0b, 0x77, 0xf0, 0x7b, 0xb0, 0xdc, 0xa6,
|
||||||
|
0x41, 0xb3, 0x4f, 0xa4, 0xc6, 0xbc, 0x82, 0x54, 0x64, 0x14, 0xc4, 0x9e, 0x50, 0xd9, 0x84, 0x82,
|
||||||
|
0xe5, 0xb0, 0x8f, 0x6f, 0x48, 0x8d, 0x05, 0x05, 0xa9, 0x59, 0x03, 0xf8, 0x56, 0x8c, 0x11, 0x24,
|
||||||
|
0x35, 0x72, 0x0a, 0x52, 0xe7, 0x8d, 0x42, 0x90, 0x50, 0x11, 0x18, 0xd7, 0x6b, 0x52, 0x63, 0x51,
|
||||||
|
0x41, 0xea, 0x02, 0xc7, 0xb8, 0x5e, 0x13, 0x0a, 0x57, 0xa0, 0xd8, 0xb1, 0x8e, 0x48, 0x3b, 0x06,
|
||||||
|
0x59, 0x52, 0x90, 0x9a, 0x33, 0x96, 0xe5, 0x66, 0x5a, 0x29, 0xc6, 0xc9, 0x2b, 0x48, 0x5d, 0x94,
|
||||||
|
0x4a, 0x11, 0xd2, 0x3b, 0x00, 0x4d, 0x4a, 0xfb, 0x52, 0x03, 0x14, 0xa4, 0x2e, 0x19, 0xf9, 0x70,
|
||||||
|
0x27, 0x76, 0xd6, 0x67, 0x9e, 0xe5, 0x74, 0xa5, 0x42, 0x81, 0xe7, 0xbf, 0x20, 0xf6, 0x52, 0xf1,
|
||||||
|
0xc4, 0x2c, 0x45, 0x05, 0xa9, 0x45, 0x11, 0x4f, 0x44, 0xf2, 0x25, 0x00, 0x71, 0x02, 0x5b, 0x2a,
|
||||||
|
0xac, 0x28, 0x48, 0x5d, 0xa9, 0x5d, 0x9d, 0x59, 0xad, 0xfd, 0xc0, 0x26, 0x9e, 0xd5, 0xaa, 0x3b,
|
||||||
|
0x81, 0x6d, 0xe4, 0x43, 0x7b, 0x01, 0xf6, 0x01, 0xac, 0xf8, 0xe9, 0xb8, 0x56, 0x15, 0xa4, 0xae,
|
||||||
|
0x1a, 0x45, 0x3f, 0x15, 0x58, 0xac, 0x16, 0xe7, 0xa8, 0xa4, 0x20, 0xb5, 0x14, 0xa9, 0x25, 0xaa,
|
||||||
|
0xe1, 0x27, 0xbd, 0x5f, 0x53, 0x90, 0xba, 0x66, 0x14, 0xfc, 0x84, 0xf7, 0x52, 0x25, 0xc6, 0xc1,
|
||||||
|
0x0a, 0x52, 0xb1, 0x50, 0x89, 0x50, 0x6a, 0x70, 0xde, 0x23, 0x2e, 0x31, 0x19, 0x69, 0x37, 0x52,
|
||||||
|
0xf9, 0x5a, 0x57, 0xb2, 0x6a, 0xde, 0x58, 0x8f, 0x84, 0x8f, 0x13, 0x79, 0xbb, 0x05, 0x05, 0xea,
|
||||||
|
0x90, 0x70, 0x6c, 0x84, 0x5d, 0x5d, 0x3e, 0xc7, 0xfb, 0x65, 0x43, 0x13, 0xdd, 0xa7, 0x45, 0xdd,
|
||||||
|
0xa7, 0xd5, 0x43, 0xe9, 0xdd, 0x39, 0x03, 0xb8, 0x32, 0x5f, 0xe1, 0x2b, 0xb0, 0x2c, 0x4c, 0x05,
|
||||||
|
0x57, 0xf9, 0x7c, 0x58, 0x95, 0xbb, 0x73, 0x86, 0x00, 0x14, 0x24, 0xf8, 0x39, 0xe4, 0x6d, 0xd3,
|
||||||
|
0x95, 0x7e, 0x6c, 0xf0, 0x0e, 0xb9, 0x7d, 0xfa, 0x0e, 0xb9, 0x6f, 0xba, 0xdc, 0xdd, 0xba, 0xc3,
|
||||||
|
0xbc, 0xa1, 0xb1, 0x64, 0xcb, 0x25, 0x3e, 0x82, 0x75, 0xdb, 0x74, 0xdd, 0xc9, 0x78, 0x2f, 0x70,
|
||||||
|
0x9e, 0xbb, 0x67, 0xe2, 0x71, 0x53, 0xf9, 0x11, 0x84, 0x6b, 0xf6, 0xe4, 0x7e, 0x82, 0x59, 0x74,
|
||||||
|
0xad, 0x64, 0x2e, 0xbf, 0x19, 0xb3, 0x98, 0x04, 0xc7, 0x99, 0x13, 0xfb, 0x78, 0x1b, 0xca, 0x0e,
|
||||||
|
0x75, 0xee, 0x50, 0x67, 0x40, 0x9c, 0x70, 0xd2, 0x9a, 0xfd, 0x7d, 0xd3, 0x16, 0x6d, 0x5f, 0xae,
|
||||||
|
0xf0, 0xc6, 0x98, 0x2a, 0xc7, 0x77, 0x60, 0x35, 0x9e, 0xa3, 0xd2, 0xe3, 0x4b, 0xbc, 0xe2, 0x95,
|
||||||
|
0x63, 0x15, 0x7f, 0x12, 0xe9, 0x19, 0x2b, 0xb1, 0x89, 0x00, 0x79, 0x0e, 0xf1, 0x49, 0x6a, 0x24,
|
||||||
|
0x1a, 0xea, 0xb2, 0x92, 0x3d, 0x75, 0x43, 0xad, 0x45, 0x40, 0xf5, 0xa8, 0xb1, 0x2a, 0xbf, 0x21,
|
||||||
|
0xc8, 0xbd, 0x1a, 0xb7, 0x8e, 0x69, 0x93, 0x68, 0xdc, 0x86, 0xdf, 0x78, 0x03, 0x72, 0xa6, 0x4d,
|
||||||
|
0x03, 0x87, 0x95, 0x33, 0xbc, 0xc3, 0xe5, 0x0a, 0x3f, 0x82, 0x0c, 0x3d, 0xe4, 0xb3, 0x72, 0xa5,
|
||||||
|
0xb6, 0x73, 0xd6, 0x11, 0xac, 0xed, 0x11, 0xe2, 0x72, 0xc7, 0x32, 0xf4, 0xb0, 0xba, 0x09, 0x4b,
|
||||||
|
0xd1, 0x1a, 0xe7, 0x61, 0xe1, 0xb3, 0x9d, 0x7b, 0x8f, 0xeb, 0xa5, 0x39, 0xbc, 0x04, 0xf3, 0x4f,
|
||||||
|
0x8c, 0xa7, 0xf5, 0x12, 0xaa, 0x58, 0x50, 0x4c, 0x1d, 0x4c, 0x5c, 0x82, 0xec, 0x21, 0x19, 0x4a,
|
||||||
|
0x7f, 0xc3, 0x4f, 0xbc, 0x0b, 0x0b, 0x22, 0x3b, 0x99, 0x33, 0x8c, 0x1b, 0x61, 0xba, 0x9d, 0xb9,
|
||||||
|
0x89, 0x2a, 0x7b, 0xb0, 0x71, 0xf2, 0xd9, 0x3c, 0x81, 0xf3, 0x5c, 0x92, 0x33, 0x9f, 0x44, 0xf9,
|
||||||
|
0x3e, 0x42, 0x99, 0x3c, 0x67, 0x27, 0xa0, 0xec, 0x27, 0x51, 0xde, 0xe4, 0x5a, 0x7b, 0xc5, 0xbf,
|
||||||
|
0x5b, 0x8c, 0x86, 0x0d, 0xdf, 0xda, 0x52, 0xa0, 0x90, 0x08, 0x37, 0x4c, 0xec, 0x41, 0xdd, 0x78,
|
||||||
|
0x50, 0x9a, 0xc3, 0x8b, 0x90, 0x7d, 0xb0, 0x5f, 0x2f, 0xa1, 0xda, 0xbf, 0xcb, 0x70, 0x61, 0x12,
|
||||||
|
0xf7, 0x31, 0xf1, 0x06, 0x56, 0x8b, 0xe0, 0x97, 0x59, 0xc8, 0xdd, 0xf1, 0xc2, 0xd3, 0x83, 0xaf,
|
||||||
|
0x9d, 0xda, 0xb9, 0xca, 0xe9, 0x4d, 0xaa, 0xbf, 0x67, 0x7e, 0xf8, 0xfb, 0x9f, 0x9f, 0x33, 0xbf,
|
||||||
|
0x66, 0xaa, 0xbf, 0x64, 0xf4, 0xc1, 0xb5, 0xe8, 0xed, 0x75, 0xd2, 0xcb, 0x4b, 0x1f, 0x25, 0x6e,
|
||||||
|
0xf0, 0xb1, 0x3e, 0x4a, 0x5e, 0xd7, 0x63, 0x7d, 0x94, 0x98, 0xe3, 0x63, 0xdd, 0x27, 0xae, 0xe9,
|
||||||
|
0x99, 0x8c, 0x7a, 0xfa, 0x28, 0x48, 0x09, 0x46, 0x89, 0x1b, 0x61, 0xac, 0x8f, 0x52, 0xd7, 0x48,
|
||||||
|
0xb4, 0x4e, 0xc8, 0x5f, 0x5d, 0xa0, 0x63, 0x7d, 0x94, 0x1c, 0x87, 0x9f, 0xf8, 0xcc, 0x73, 0x3d,
|
||||||
|
0xd2, 0xb1, 0x8e, 0xf4, 0xad, 0xb1, 0x20, 0x49, 0x98, 0xf9, 0x93, 0x38, 0xfe, 0x24, 0x91, 0x3f,
|
||||||
|
0x61, 0x90, 0x76, 0x72, 0xda, 0xac, 0x19, 0xe3, 0x97, 0x08, 0x40, 0x14, 0x68, 0x97, 0xb6, 0x87,
|
||||||
|
0x6f, 0xa9, 0x48, 0x5b, 0xbc, 0x46, 0xef, 0x57, 0x37, 0x67, 0x54, 0x68, 0x1b, 0x6d, 0xe1, 0xef,
|
||||||
|
0x20, 0x77, 0x8f, 0xd2, 0xc3, 0xc0, 0xc5, 0xab, 0x5a, 0xf8, 0x04, 0xd5, 0xbe, 0x68, 0xdf, 0x17,
|
||||||
|
0x8f, 0xd0, 0xb3, 0x30, 0x6b, 0x9c, 0x59, 0xc5, 0x1f, 0xce, 0x3c, 0x1b, 0xe1, 0xbb, 0x71, 0x8c,
|
||||||
|
0x7f, 0x44, 0x90, 0x7b, 0xea, 0xb6, 0xcf, 0x78, 0x7e, 0xa7, 0x5c, 0xd1, 0xd5, 0x6b, 0xdc, 0x8b,
|
||||||
|
0x8f, 0x2a, 0xaf, 0xe9, 0x45, 0x98, 0x06, 0x13, 0x72, 0x7b, 0xa4, 0x4f, 0x18, 0x39, 0x9e, 0x86,
|
||||||
|
0x69, 0x2c, 0x32, 0xd6, 0xad, 0xd7, 0x8d, 0xf5, 0x27, 0x04, 0x4b, 0x9f, 0x13, 0xf6, 0x28, 0x20,
|
||||||
|
0xde, 0xf0, 0xff, 0x8c, 0xf6, 0x06, 0xf7, 0x43, 0xc3, 0x57, 0x67, 0xf9, 0xf1, 0x4d, 0xc8, 0x1c,
|
||||||
|
0x79, 0xf3, 0x27, 0x82, 0xf9, 0x7a, 0xab, 0x47, 0xb1, 0x3a, 0xc5, 0x13, 0x3f, 0x68, 0x6a, 0x62,
|
||||||
|
0xd0, 0x46, 0x89, 0x78, 0x6d, 0xcd, 0x6a, 0x8b, 0xbb, 0xf4, 0x62, 0xb6, 0x4b, 0xa4, 0xd5, 0xa3,
|
||||||
|
0xfa, 0x48, 0xb4, 0xd1, 0xc1, 0xc5, 0x6a, 0x49, 0x1f, 0xd4, 0x62, 0xfd, 0x50, 0xb6, 0x2d, 0x06,
|
||||||
|
0xe7, 0x01, 0xc6, 0xc7, 0x44, 0xf8, 0x0f, 0x04, 0xcb, 0xe1, 0xdd, 0xf4, 0xd0, 0x64, 0x3d, 0x1e,
|
||||||
|
0xc9, 0xdb, 0x69, 0xae, 0xdb, 0x3c, 0xb6, 0x5b, 0xd5, 0x1b, 0x33, 0xcb, 0x9e, 0xfa, 0x0b, 0xd3,
|
||||||
|
0xc2, 0x9b, 0x9b, 0x1f, 0xb5, 0x1d, 0x80, 0x7d, 0xba, 0x6b, 0x39, 0x6d, 0xcb, 0xe9, 0xfa, 0xf8,
|
||||||
|
0xe2, 0xb1, 0xaa, 0xee, 0xc9, 0xbf, 0xc7, 0xa9, 0x05, 0x9f, 0xc3, 0xcf, 0x60, 0x31, 0x7c, 0x9a,
|
||||||
|
0xd0, 0x80, 0xe1, 0x29, 0x4a, 0x53, 0x8d, 0x2f, 0x71, 0xf7, 0xcf, 0xe3, 0xf5, 0x64, 0x3e, 0x99,
|
||||||
|
0x00, 0xab, 0x7d, 0x0d, 0x97, 0x77, 0x1c, 0xca, 0x7a, 0xc4, 0x93, 0x17, 0xcc, 0x57, 0x16, 0xeb,
|
||||||
|
0x25, 0x9c, 0xfd, 0x34, 0xe5, 0xfa, 0x69, 0xa9, 0xe7, 0x76, 0x0b, 0x07, 0xf9, 0x38, 0xb3, 0xcd,
|
||||||
|
0x1c, 0x17, 0x5f, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xab, 0xe5, 0x92, 0x0d, 0xc9, 0x0f, 0x00,
|
||||||
|
0x00,
|
||||||
|
}
|
852
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.pb.gw.go
generated
vendored
Normal file
852
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.pb.gw.go
generated
vendored
Normal file
@ -0,0 +1,852 @@
|
|||||||
|
// Code generated by protoc-gen-grpc-gateway
|
||||||
|
// source: examples/examplepb/a_bit_of_everything.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package examplepb is a reverse proxy.
|
||||||
|
|
||||||
|
It translates gRPC into RESTful JSON APIs.
|
||||||
|
*/
|
||||||
|
package examplepb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
"github.com/golang/protobuf/ptypes/empty"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/examples/sub"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/examples/sub2"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/utilities"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
"google.golang.org/grpc/grpclog"
|
||||||
|
"google.golang.org/grpc/status"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ codes.Code
|
||||||
|
var _ io.Reader
|
||||||
|
var _ status.Status
|
||||||
|
var _ = runtime.String
|
||||||
|
var _ = utilities.NewDoubleArray
|
||||||
|
|
||||||
|
var (
|
||||||
|
filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}
|
||||||
|
)
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq ABitOfEverything
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["float_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "float_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.FloatValue, err = runtime.Float32(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["double_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "double_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.DoubleValue, err = runtime.Float64(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["int64_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "int64_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Int64Value, err = runtime.Int64(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["uint64_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uint64_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Uint64Value, err = runtime.Uint64(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["int32_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "int32_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Int32Value, err = runtime.Int32(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["fixed64_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "fixed64_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Fixed64Value, err = runtime.Uint64(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["fixed32_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "fixed32_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Fixed32Value, err = runtime.Uint32(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["bool_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "bool_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.BoolValue, err = runtime.Bool(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["string_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "string_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.StringValue, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["uint32_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uint32_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Uint32Value, err = runtime.Uint32(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["sfixed32_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "sfixed32_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Sfixed32Value, err = runtime.Int32(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["sfixed64_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "sfixed64_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Sfixed64Value, err = runtime.Int64(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["sint32_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "sint32_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Sint32Value, err = runtime.Int32(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["sint64_value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "sint64_value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Sint64Value, err = runtime.Int64(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
val, ok = pathParams["nonConventionalNameValue"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "nonConventionalNameValue")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.NonConventionalNameValue, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_ABitOfEverythingService_Create_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Create(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_CreateBody_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq ABitOfEverything
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.CreateBody(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Lookup_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq sub2.IdMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["uuid"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Uuid, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Lookup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Update_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq ABitOfEverything
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["uuid"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Uuid, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Update(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Delete_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq sub2.IdMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["uuid"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Uuid, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Delete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
filter_ABitOfEverythingService_GetQuery_0 = &utilities.DoubleArray{Encoding: map[string]int{"uuid": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
|
||||||
|
)
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_GetQuery_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq ABitOfEverything
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["uuid"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uuid")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Uuid, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_ABitOfEverythingService_GetQuery_0); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.GetQuery(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Echo_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq sub.StringMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["value"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "value")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Value, err = runtime.StringP(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Echo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Echo_1(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq sub.StringMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq.Value); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Echo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
filter_ABitOfEverythingService_Echo_2 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
|
||||||
|
)
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Echo_2(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq sub.StringMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_ABitOfEverythingService_Echo_2); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Echo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_DeepPathEcho_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq ABitOfEverything
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["single_nested.name"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "single_nested.name")
|
||||||
|
}
|
||||||
|
|
||||||
|
err = runtime.PopulateFieldFromPath(&protoReq, "single_nested.name", val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.DeepPathEcho(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_ABitOfEverythingService_Timeout_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq empty.Empty
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
msg, err := client.Timeout(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterABitOfEverythingServiceHandlerFromEndpoint is same as RegisterABitOfEverythingServiceHandler but
|
||||||
|
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
|
||||||
|
func RegisterABitOfEverythingServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
|
||||||
|
conn, err := grpc.Dial(endpoint, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
if cerr := conn.Close(); cerr != nil {
|
||||||
|
grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
<-ctx.Done()
|
||||||
|
if cerr := conn.Close(); cerr != nil {
|
||||||
|
grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}()
|
||||||
|
|
||||||
|
return RegisterABitOfEverythingServiceHandler(ctx, mux, conn)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterABitOfEverythingServiceHandler registers the http handlers for service ABitOfEverythingService to "mux".
|
||||||
|
// The handlers forward requests to the grpc endpoint over "conn".
|
||||||
|
func RegisterABitOfEverythingServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
|
||||||
|
client := NewABitOfEverythingServiceClient(conn)
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_ABitOfEverythingService_Create_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Create_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Create_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_ABitOfEverythingService_CreateBody_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_CreateBody_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_CreateBody_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ABitOfEverythingService_Lookup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Lookup_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Lookup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("PUT", pattern_ABitOfEverythingService_Update_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Update_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Update_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("DELETE", pattern_ABitOfEverythingService_Delete_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Delete_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Delete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ABitOfEverythingService_GetQuery_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_GetQuery_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_GetQuery_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ABitOfEverythingService_Echo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Echo_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Echo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_ABitOfEverythingService_Echo_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Echo_1(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Echo_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ABitOfEverythingService_Echo_2, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Echo_2(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Echo_2(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_ABitOfEverythingService_DeepPathEcho_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_DeepPathEcho_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_DeepPathEcho_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("GET", pattern_ABitOfEverythingService_Timeout_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_ABitOfEverythingService_Timeout_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Timeout_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_CreateBody_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "example", "a_bit_of_everything"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Lookup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "example", "a_bit_of_everything", "uuid"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Update_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "example", "a_bit_of_everything", "uuid"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Delete_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "example", "a_bit_of_everything", "uuid"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_GetQuery_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "example", "a_bit_of_everything", "query", "uuid"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Echo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "example", "a_bit_of_everything", "echo", "value"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Echo_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "example", "echo"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Echo_2 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "example", "echo"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_DeepPathEcho_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "example", "a_bit_of_everything", "single_nested.name"}, ""))
|
||||||
|
|
||||||
|
pattern_ABitOfEverythingService_Timeout_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "example", "timeout"}, ""))
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
forward_ABitOfEverythingService_Create_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_CreateBody_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Lookup_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Update_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Delete_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_GetQuery_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Echo_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Echo_1 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Echo_2 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_DeepPathEcho_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_ABitOfEverythingService_Timeout_0 = runtime.ForwardResponseMessage
|
||||||
|
)
|
137
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.proto
generated
vendored
Normal file
137
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.proto
generated
vendored
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
option go_package = "examplepb";
|
||||||
|
package grpc.gateway.examples.examplepb;
|
||||||
|
|
||||||
|
import "google/api/annotations.proto";
|
||||||
|
import "google/protobuf/empty.proto";
|
||||||
|
import "google/protobuf/duration.proto";
|
||||||
|
import "examples/sub/message.proto";
|
||||||
|
import "examples/sub2/message.proto";
|
||||||
|
import "google/protobuf/timestamp.proto";
|
||||||
|
|
||||||
|
// Intentionaly complicated message type to cover much features of Protobuf.
|
||||||
|
// NEXT ID: 27
|
||||||
|
message ABitOfEverything {
|
||||||
|
// Nested is nested type.
|
||||||
|
message Nested {
|
||||||
|
// name is nested field.
|
||||||
|
string name = 1;
|
||||||
|
uint32 amount = 2;
|
||||||
|
// DeepEnum is one or zero.
|
||||||
|
enum DeepEnum {
|
||||||
|
// FALSE is false.
|
||||||
|
FALSE = 0;
|
||||||
|
// TRUE is true.
|
||||||
|
TRUE = 1;
|
||||||
|
}
|
||||||
|
DeepEnum ok = 3;
|
||||||
|
}
|
||||||
|
Nested single_nested = 25;
|
||||||
|
|
||||||
|
string uuid = 1;
|
||||||
|
repeated Nested nested = 2;
|
||||||
|
float float_value = 3;
|
||||||
|
double double_value = 4;
|
||||||
|
int64 int64_value = 5;
|
||||||
|
uint64 uint64_value = 6;
|
||||||
|
int32 int32_value = 7;
|
||||||
|
fixed64 fixed64_value = 8;
|
||||||
|
fixed32 fixed32_value = 9;
|
||||||
|
bool bool_value = 10;
|
||||||
|
string string_value = 11;
|
||||||
|
// TODO(yugui) add bytes_value
|
||||||
|
uint32 uint32_value = 13;
|
||||||
|
NumericEnum enum_value = 14;
|
||||||
|
sfixed32 sfixed32_value = 15;
|
||||||
|
sfixed64 sfixed64_value = 16;
|
||||||
|
sint32 sint32_value = 17;
|
||||||
|
sint64 sint64_value = 18;
|
||||||
|
repeated string repeated_string_value = 19;
|
||||||
|
oneof oneof_value {
|
||||||
|
google.protobuf.Empty oneof_empty = 20;
|
||||||
|
string oneof_string = 21;
|
||||||
|
}
|
||||||
|
|
||||||
|
map<string, NumericEnum> map_value = 22;
|
||||||
|
map<string, string> mapped_string_value = 23;
|
||||||
|
map<string, Nested> mapped_nested_value = 24;
|
||||||
|
|
||||||
|
string nonConventionalNameValue = 26;
|
||||||
|
|
||||||
|
google.protobuf.Timestamp timestamp_value = 27;
|
||||||
|
|
||||||
|
// repeated enum value. it is comma-separated in query
|
||||||
|
repeated NumericEnum repeated_enum_value = 28;
|
||||||
|
}
|
||||||
|
|
||||||
|
// NumericEnum is one or zero.
|
||||||
|
enum NumericEnum {
|
||||||
|
// ZERO means 0
|
||||||
|
ZERO = 0;
|
||||||
|
// ONE means 1
|
||||||
|
ONE = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
service ABitOfEverythingService {
|
||||||
|
rpc Create(ABitOfEverything) returns (ABitOfEverything) {
|
||||||
|
// TODO add enum_value
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc CreateBody(ABitOfEverything) returns (ABitOfEverything) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/v1/example/a_bit_of_everything"
|
||||||
|
body: "*"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc Lookup(sub2.IdMessage) returns (ABitOfEverything) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
get: "/v1/example/a_bit_of_everything/{uuid}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc Update(ABitOfEverything) returns (google.protobuf.Empty) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
put: "/v1/example/a_bit_of_everything/{uuid}"
|
||||||
|
body: "*"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc Delete(sub2.IdMessage) returns (google.protobuf.Empty) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
delete: "/v1/example/a_bit_of_everything/{uuid}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc GetQuery(ABitOfEverything) returns (google.protobuf.Empty) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
get: "/v1/example/a_bit_of_everything/query/{uuid}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc Echo(grpc.gateway.examples.sub.StringMessage) returns (grpc.gateway.examples.sub.StringMessage) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
get: "/v1/example/a_bit_of_everything/echo/{value}"
|
||||||
|
additional_bindings {
|
||||||
|
post: "/v2/example/echo"
|
||||||
|
body: "value"
|
||||||
|
}
|
||||||
|
additional_bindings {
|
||||||
|
get: "/v2/example/echo"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc DeepPathEcho(ABitOfEverything) returns (ABitOfEverything) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/v1/example/a_bit_of_everything/{single_nested.name}"
|
||||||
|
body: "*"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
rpc NoBindings(google.protobuf.Duration) returns (google.protobuf.Empty) {}
|
||||||
|
rpc Timeout(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
get: "/v2/example/timeout",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
service AnotherServiceWithNoBindings {
|
||||||
|
rpc NoBindings(google.protobuf.Empty) returns (google.protobuf.Empty) {}
|
||||||
|
}
|
735
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.swagger.json
generated
vendored
Normal file
735
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/a_bit_of_everything.swagger.json
generated
vendored
Normal file
@ -0,0 +1,735 @@
|
|||||||
|
{
|
||||||
|
"swagger": "2.0",
|
||||||
|
"info": {
|
||||||
|
"title": "examples/examplepb/a_bit_of_everything.proto",
|
||||||
|
"version": "version not set"
|
||||||
|
},
|
||||||
|
"schemes": [
|
||||||
|
"http",
|
||||||
|
"https"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"paths": {
|
||||||
|
"/v1/example/a_bit_of_everything": {
|
||||||
|
"post": {
|
||||||
|
"operationId": "CreateBody",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/example/a_bit_of_everything/echo/{value}": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "Echo",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/subStringMessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/example/a_bit_of_everything/query/{uuid}": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "GetQuery",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/protobufEmpty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "uuid",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "single_nested.name",
|
||||||
|
"description": "name is nested field.",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "single_nested.amount",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "single_nested.ok",
|
||||||
|
"description": " - FALSE: FALSE is false.\n - TRUE: TRUE is true.",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"FALSE",
|
||||||
|
"TRUE"
|
||||||
|
],
|
||||||
|
"default": "FALSE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "float_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "number",
|
||||||
|
"format": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "double_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "number",
|
||||||
|
"format": "double"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "int64_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "uint64_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"format": "uint64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "int32_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fixed64_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"format": "uint64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fixed32_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bool_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "boolean",
|
||||||
|
"format": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "string_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "uint32_value",
|
||||||
|
"description": "TODO(yugui) add bytes_value.",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "enum_value",
|
||||||
|
"description": " - ZERO: ZERO means 0\n - ONE: ONE means 1",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"ZERO",
|
||||||
|
"ONE"
|
||||||
|
],
|
||||||
|
"default": "ZERO"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sfixed32_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sfixed64_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sint32_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sint64_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "repeated_string_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "oneof_string",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonConventionalNameValue",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "timestamp_value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "repeated_enum_value",
|
||||||
|
"description": "repeated enum value. it is comma-separated in query.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"ZERO",
|
||||||
|
"ONE"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}": {
|
||||||
|
"post": {
|
||||||
|
"operationId": "Create",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "float_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "number",
|
||||||
|
"format": "float"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "double_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "number",
|
||||||
|
"format": "double"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "int64_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "uint64_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string",
|
||||||
|
"format": "uint64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "int32_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fixed64_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string",
|
||||||
|
"format": "uint64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fixed32_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bool_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "boolean",
|
||||||
|
"format": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "string_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "uint32_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sfixed32_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sfixed64_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sint32_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sint64_value",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nonConventionalNameValue",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/example/a_bit_of_everything/{single_nested.name}": {
|
||||||
|
"post": {
|
||||||
|
"operationId": "DeepPathEcho",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "single_nested.name",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/example/a_bit_of_everything/{uuid}": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "Lookup",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "uuid",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"operationId": "Delete",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/protobufEmpty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "uuid",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"operationId": "Update",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/protobufEmpty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "uuid",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbABitOfEverything"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v2/example/echo": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "Echo",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/subStringMessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "value",
|
||||||
|
"in": "query",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"operationId": "Echo",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/subStringMessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v2/example/timeout": {
|
||||||
|
"get": {
|
||||||
|
"operationId": "Timeout",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/protobufEmpty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
"ABitOfEverythingService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"ABitOfEverythingNested": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "name is nested field."
|
||||||
|
},
|
||||||
|
"amount": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"ok": {
|
||||||
|
"$ref": "#/definitions/NestedDeepEnum"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "Nested is nested type."
|
||||||
|
},
|
||||||
|
"NestedDeepEnum": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"FALSE",
|
||||||
|
"TRUE"
|
||||||
|
],
|
||||||
|
"default": "FALSE",
|
||||||
|
"description": "DeepEnum is one or zero.\n\n - FALSE: FALSE is false.\n - TRUE: TRUE is true."
|
||||||
|
},
|
||||||
|
"examplepbABitOfEverything": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"single_nested": {
|
||||||
|
"$ref": "#/definitions/ABitOfEverythingNested"
|
||||||
|
},
|
||||||
|
"uuid": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"nested": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/ABitOfEverythingNested"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"float_value": {
|
||||||
|
"type": "number",
|
||||||
|
"format": "float"
|
||||||
|
},
|
||||||
|
"double_value": {
|
||||||
|
"type": "number",
|
||||||
|
"format": "double"
|
||||||
|
},
|
||||||
|
"int64_value": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"uint64_value": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uint64"
|
||||||
|
},
|
||||||
|
"int32_value": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
"fixed64_value": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uint64"
|
||||||
|
},
|
||||||
|
"fixed32_value": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"bool_value": {
|
||||||
|
"type": "boolean",
|
||||||
|
"format": "boolean"
|
||||||
|
},
|
||||||
|
"string_value": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"uint32_value": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64",
|
||||||
|
"title": "TODO(yugui) add bytes_value"
|
||||||
|
},
|
||||||
|
"enum_value": {
|
||||||
|
"$ref": "#/definitions/examplepbNumericEnum"
|
||||||
|
},
|
||||||
|
"sfixed32_value": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
"sfixed64_value": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"sint32_value": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
},
|
||||||
|
"sint64_value": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"repeated_string_value": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oneof_empty": {
|
||||||
|
"$ref": "#/definitions/protobufEmpty"
|
||||||
|
},
|
||||||
|
"oneof_string": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"map_value": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"$ref": "#/definitions/examplepbNumericEnum"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mapped_string_value": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mapped_nested_value": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"$ref": "#/definitions/ABitOfEverythingNested"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nonConventionalNameValue": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"timestamp_value": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time"
|
||||||
|
},
|
||||||
|
"repeated_enum_value": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/examplepbNumericEnum"
|
||||||
|
},
|
||||||
|
"title": "repeated enum value. it is comma-separated in query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"title": "Intentionaly complicated message type to cover much features of Protobuf.\nNEXT ID: 27"
|
||||||
|
},
|
||||||
|
"examplepbNumericEnum": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"ZERO",
|
||||||
|
"ONE"
|
||||||
|
],
|
||||||
|
"default": "ZERO",
|
||||||
|
"description": "NumericEnum is one or zero.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1"
|
||||||
|
},
|
||||||
|
"protobufEmpty": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
|
||||||
|
"title": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:"
|
||||||
|
},
|
||||||
|
"subStringMessage": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"value": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
206
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.pb.go
generated
vendored
Normal file
206
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.pb.go
generated
vendored
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: examples/examplepb/echo_service.proto
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package examplepb is a generated protocol buffer package.
|
||||||
|
|
||||||
|
Echo Service
|
||||||
|
|
||||||
|
Echo Service API consists of a single service which returns
|
||||||
|
a message.
|
||||||
|
|
||||||
|
It is generated from these files:
|
||||||
|
examples/examplepb/echo_service.proto
|
||||||
|
examples/examplepb/a_bit_of_everything.proto
|
||||||
|
examples/examplepb/stream.proto
|
||||||
|
examples/examplepb/flow_combination.proto
|
||||||
|
|
||||||
|
It has these top-level messages:
|
||||||
|
SimpleMessage
|
||||||
|
ABitOfEverything
|
||||||
|
EmptyProto
|
||||||
|
NonEmptyProto
|
||||||
|
UnaryProto
|
||||||
|
NestedProto
|
||||||
|
SingleNestedProto
|
||||||
|
*/
|
||||||
|
package examplepb
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
import _ "google.golang.org/genproto/googleapis/api/annotations"
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "golang.org/x/net/context"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
||||||
|
|
||||||
|
// SimpleMessage represents a simple message sent to the Echo service.
|
||||||
|
type SimpleMessage struct {
|
||||||
|
// Id represents the message identifier.
|
||||||
|
Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SimpleMessage) Reset() { *m = SimpleMessage{} }
|
||||||
|
func (m *SimpleMessage) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SimpleMessage) ProtoMessage() {}
|
||||||
|
func (*SimpleMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||||
|
|
||||||
|
func (m *SimpleMessage) GetId() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Id
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*SimpleMessage)(nil), "grpc.gateway.examples.examplepb.SimpleMessage")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ context.Context
|
||||||
|
var _ grpc.ClientConn
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the grpc package it is being compiled against.
|
||||||
|
const _ = grpc.SupportPackageIsVersion4
|
||||||
|
|
||||||
|
// Client API for EchoService service
|
||||||
|
|
||||||
|
type EchoServiceClient interface {
|
||||||
|
// Echo method receives a simple message and returns it.
|
||||||
|
//
|
||||||
|
// The message posted as the id parameter will also be
|
||||||
|
// returned.
|
||||||
|
Echo(ctx context.Context, in *SimpleMessage, opts ...grpc.CallOption) (*SimpleMessage, error)
|
||||||
|
// EchoBody method receives a simple message and returns it.
|
||||||
|
EchoBody(ctx context.Context, in *SimpleMessage, opts ...grpc.CallOption) (*SimpleMessage, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type echoServiceClient struct {
|
||||||
|
cc *grpc.ClientConn
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewEchoServiceClient(cc *grpc.ClientConn) EchoServiceClient {
|
||||||
|
return &echoServiceClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *echoServiceClient) Echo(ctx context.Context, in *SimpleMessage, opts ...grpc.CallOption) (*SimpleMessage, error) {
|
||||||
|
out := new(SimpleMessage)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.EchoService/Echo", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *echoServiceClient) EchoBody(ctx context.Context, in *SimpleMessage, opts ...grpc.CallOption) (*SimpleMessage, error) {
|
||||||
|
out := new(SimpleMessage)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.EchoService/EchoBody", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server API for EchoService service
|
||||||
|
|
||||||
|
type EchoServiceServer interface {
|
||||||
|
// Echo method receives a simple message and returns it.
|
||||||
|
//
|
||||||
|
// The message posted as the id parameter will also be
|
||||||
|
// returned.
|
||||||
|
Echo(context.Context, *SimpleMessage) (*SimpleMessage, error)
|
||||||
|
// EchoBody method receives a simple message and returns it.
|
||||||
|
EchoBody(context.Context, *SimpleMessage) (*SimpleMessage, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterEchoServiceServer(s *grpc.Server, srv EchoServiceServer) {
|
||||||
|
s.RegisterService(&_EchoService_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _EchoService_Echo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(SimpleMessage)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(EchoServiceServer).Echo(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.EchoService/Echo",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(EchoServiceServer).Echo(ctx, req.(*SimpleMessage))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _EchoService_EchoBody_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(SimpleMessage)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(EchoServiceServer).EchoBody(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.EchoService/EchoBody",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(EchoServiceServer).EchoBody(ctx, req.(*SimpleMessage))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _EchoService_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "grpc.gateway.examples.examplepb.EchoService",
|
||||||
|
HandlerType: (*EchoServiceServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "Echo",
|
||||||
|
Handler: _EchoService_Echo_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "EchoBody",
|
||||||
|
Handler: _EchoService_EchoBody_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{},
|
||||||
|
Metadata: "examples/examplepb/echo_service.proto",
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("examples/examplepb/echo_service.proto", fileDescriptor0) }
|
||||||
|
|
||||||
|
var fileDescriptor0 = []byte{
|
||||||
|
// 229 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4d, 0xad, 0x48, 0xcc,
|
||||||
|
0x2d, 0xc8, 0x49, 0x2d, 0xd6, 0x87, 0x32, 0x0a, 0x92, 0xf4, 0x53, 0x93, 0x33, 0xf2, 0xe3, 0x8b,
|
||||||
|
0x53, 0x8b, 0xca, 0x32, 0x93, 0x53, 0xf5, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0xe4, 0xd3, 0x8b,
|
||||||
|
0x0a, 0x92, 0xf5, 0xd2, 0x13, 0x4b, 0x52, 0xcb, 0x13, 0x2b, 0xf5, 0x60, 0x7a, 0xf4, 0xe0, 0x7a,
|
||||||
|
0xa4, 0x64, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x13, 0x0b, 0x32, 0xf5, 0x13, 0xf3, 0xf2,
|
||||||
|
0xf2, 0x4b, 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0x21, 0xda, 0x95, 0xe4, 0xb9, 0x78, 0x83, 0x33,
|
||||||
|
0x41, 0x2a, 0x7d, 0x53, 0x8b, 0x8b, 0x13, 0xd3, 0x53, 0x85, 0xf8, 0xb8, 0x98, 0x32, 0x53, 0x24,
|
||||||
|
0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x98, 0x32, 0x53, 0x8c, 0x96, 0x30, 0x71, 0x71, 0xbb, 0x26,
|
||||||
|
0x67, 0xe4, 0x07, 0x43, 0x6c, 0x15, 0x6a, 0x65, 0xe4, 0x62, 0x01, 0xf1, 0x85, 0xf4, 0xf4, 0x08,
|
||||||
|
0xd8, 0xac, 0x87, 0x62, 0xb0, 0x14, 0x89, 0xea, 0x95, 0x64, 0x9b, 0x2e, 0x3f, 0x99, 0xcc, 0x24,
|
||||||
|
0xae, 0x24, 0xaa, 0x5f, 0x66, 0x08, 0x0b, 0x02, 0x70, 0x00, 0xe8, 0x57, 0x67, 0xa6, 0xd4, 0x0a,
|
||||||
|
0xf5, 0x30, 0x72, 0x71, 0x80, 0xdc, 0xe1, 0x94, 0x9f, 0x52, 0x49, 0x73, 0xb7, 0x28, 0x80, 0xdd,
|
||||||
|
0x22, 0x85, 0xe9, 0x96, 0xf8, 0xa4, 0xfc, 0x94, 0x4a, 0x2b, 0x46, 0x2d, 0x27, 0xee, 0x28, 0x4e,
|
||||||
|
0xb8, 0xe6, 0x24, 0x36, 0x70, 0xd8, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x26, 0x96, 0x37,
|
||||||
|
0xac, 0xc3, 0x01, 0x00, 0x00,
|
||||||
|
}
|
173
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.pb.gw.go
generated
vendored
Normal file
173
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.pb.gw.go
generated
vendored
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
// Code generated by protoc-gen-grpc-gateway
|
||||||
|
// source: examples/examplepb/echo_service.proto
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
/*
|
||||||
|
Package examplepb is a reverse proxy.
|
||||||
|
|
||||||
|
It translates gRPC into RESTful JSON APIs.
|
||||||
|
*/
|
||||||
|
package examplepb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/golang/protobuf/proto"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
||||||
|
"github.com/grpc-ecosystem/grpc-gateway/utilities"
|
||||||
|
"golang.org/x/net/context"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
"google.golang.org/grpc/codes"
|
||||||
|
"google.golang.org/grpc/grpclog"
|
||||||
|
"google.golang.org/grpc/status"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ codes.Code
|
||||||
|
var _ io.Reader
|
||||||
|
var _ status.Status
|
||||||
|
var _ = runtime.String
|
||||||
|
var _ = utilities.NewDoubleArray
|
||||||
|
|
||||||
|
func request_EchoService_Echo_0(ctx context.Context, marshaler runtime.Marshaler, client EchoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq SimpleMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
var (
|
||||||
|
val string
|
||||||
|
ok bool
|
||||||
|
err error
|
||||||
|
_ = err
|
||||||
|
)
|
||||||
|
|
||||||
|
val, ok = pathParams["id"]
|
||||||
|
if !ok {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
|
||||||
|
}
|
||||||
|
|
||||||
|
protoReq.Id, err = runtime.String(val)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.Echo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func request_EchoService_EchoBody_0(ctx context.Context, marshaler runtime.Marshaler, client EchoServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||||
|
var protoReq SimpleMessage
|
||||||
|
var metadata runtime.ServerMetadata
|
||||||
|
|
||||||
|
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
|
||||||
|
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := client.EchoBody(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||||
|
return msg, metadata, err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterEchoServiceHandlerFromEndpoint is same as RegisterEchoServiceHandler but
|
||||||
|
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
|
||||||
|
func RegisterEchoServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
|
||||||
|
conn, err := grpc.Dial(endpoint, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
if cerr := conn.Close(); cerr != nil {
|
||||||
|
grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
<-ctx.Done()
|
||||||
|
if cerr := conn.Close(); cerr != nil {
|
||||||
|
grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}()
|
||||||
|
|
||||||
|
return RegisterEchoServiceHandler(ctx, mux, conn)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterEchoServiceHandler registers the http handlers for service EchoService to "mux".
|
||||||
|
// The handlers forward requests to the grpc endpoint over "conn".
|
||||||
|
func RegisterEchoServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
|
||||||
|
client := NewEchoServiceClient(conn)
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_EchoService_Echo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_EchoService_Echo_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_EchoService_Echo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
mux.Handle("POST", pattern_EchoService_EchoBody_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
defer cancel()
|
||||||
|
if cn, ok := w.(http.CloseNotifier); ok {
|
||||||
|
go func(done <-chan struct{}, closed <-chan bool) {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
case <-closed:
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
}(ctx.Done(), cn.CloseNotify())
|
||||||
|
}
|
||||||
|
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||||
|
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, md, err := request_EchoService_EchoBody_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||||
|
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||||
|
if err != nil {
|
||||||
|
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forward_EchoService_EchoBody_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
pattern_EchoService_Echo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"v1", "example", "echo", "id"}, ""))
|
||||||
|
|
||||||
|
pattern_EchoService_EchoBody_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "example", "echo_body"}, ""))
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
forward_EchoService_Echo_0 = runtime.ForwardResponseMessage
|
||||||
|
|
||||||
|
forward_EchoService_EchoBody_0 = runtime.ForwardResponseMessage
|
||||||
|
)
|
36
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.proto
generated
vendored
Normal file
36
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.proto
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
option go_package = "examplepb";
|
||||||
|
|
||||||
|
// Echo Service
|
||||||
|
//
|
||||||
|
// Echo Service API consists of a single service which returns
|
||||||
|
// a message.
|
||||||
|
package grpc.gateway.examples.examplepb;
|
||||||
|
|
||||||
|
import "google/api/annotations.proto";
|
||||||
|
|
||||||
|
// SimpleMessage represents a simple message sent to the Echo service.
|
||||||
|
message SimpleMessage {
|
||||||
|
// Id represents the message identifier.
|
||||||
|
string id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Echo service responds to incoming echo requests.
|
||||||
|
service EchoService {
|
||||||
|
// Echo method receives a simple message and returns it.
|
||||||
|
//
|
||||||
|
// The message posted as the id parameter will also be
|
||||||
|
// returned.
|
||||||
|
rpc Echo(SimpleMessage) returns (SimpleMessage) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/v1/example/echo/{id}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// EchoBody method receives a simple message and returns it.
|
||||||
|
rpc EchoBody(SimpleMessage) returns (SimpleMessage) {
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/v1/example/echo_body"
|
||||||
|
body: "*"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
85
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.swagger.json
generated
vendored
Normal file
85
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/echo_service.swagger.json
generated
vendored
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
{
|
||||||
|
"swagger": "2.0",
|
||||||
|
"info": {
|
||||||
|
"title": "Echo Service",
|
||||||
|
"description": "Echo Service API consists of a single service which returns\na message.",
|
||||||
|
"version": "version not set"
|
||||||
|
},
|
||||||
|
"schemes": [
|
||||||
|
"http",
|
||||||
|
"https"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"paths": {
|
||||||
|
"/v1/example/echo/{id}": {
|
||||||
|
"post": {
|
||||||
|
"summary": "Echo method receives a simple message and returns it.",
|
||||||
|
"description": "The message posted as the id parameter will also be\nreturned.",
|
||||||
|
"operationId": "Echo",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbSimpleMessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"EchoService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/example/echo_body": {
|
||||||
|
"post": {
|
||||||
|
"summary": "EchoBody method receives a simple message and returns it.",
|
||||||
|
"operationId": "EchoBody",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbSimpleMessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"name": "body",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/examplepbSimpleMessage"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"EchoService"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"examplepbSimpleMessage": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Id represents the message identifier."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "SimpleMessage represents a simple message sent to the Echo service."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
722
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/flow_combination.pb.go
generated
vendored
Normal file
722
vendor/github.com/grpc-ecosystem/grpc-gateway/examples/examplepb/flow_combination.pb.go
generated
vendored
Normal file
@ -0,0 +1,722 @@
|
|||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: examples/examplepb/flow_combination.proto
|
||||||
|
|
||||||
|
package examplepb
|
||||||
|
|
||||||
|
import proto "github.com/golang/protobuf/proto"
|
||||||
|
import fmt "fmt"
|
||||||
|
import math "math"
|
||||||
|
import _ "google.golang.org/genproto/googleapis/api/annotations"
|
||||||
|
|
||||||
|
import (
|
||||||
|
context "golang.org/x/net/context"
|
||||||
|
grpc "google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
type EmptyProto struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *EmptyProto) Reset() { *m = EmptyProto{} }
|
||||||
|
func (m *EmptyProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*EmptyProto) ProtoMessage() {}
|
||||||
|
func (*EmptyProto) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} }
|
||||||
|
|
||||||
|
type NonEmptyProto struct {
|
||||||
|
A string `protobuf:"bytes,1,opt,name=a" json:"a,omitempty"`
|
||||||
|
B string `protobuf:"bytes,2,opt,name=b" json:"b,omitempty"`
|
||||||
|
C string `protobuf:"bytes,3,opt,name=c" json:"c,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonEmptyProto) Reset() { *m = NonEmptyProto{} }
|
||||||
|
func (m *NonEmptyProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*NonEmptyProto) ProtoMessage() {}
|
||||||
|
func (*NonEmptyProto) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} }
|
||||||
|
|
||||||
|
func (m *NonEmptyProto) GetA() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.A
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonEmptyProto) GetB() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.B
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NonEmptyProto) GetC() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.C
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type UnaryProto struct {
|
||||||
|
Str string `protobuf:"bytes,1,opt,name=str" json:"str,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *UnaryProto) Reset() { *m = UnaryProto{} }
|
||||||
|
func (m *UnaryProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*UnaryProto) ProtoMessage() {}
|
||||||
|
func (*UnaryProto) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} }
|
||||||
|
|
||||||
|
func (m *UnaryProto) GetStr() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Str
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type NestedProto struct {
|
||||||
|
A *UnaryProto `protobuf:"bytes,1,opt,name=a" json:"a,omitempty"`
|
||||||
|
B string `protobuf:"bytes,2,opt,name=b" json:"b,omitempty"`
|
||||||
|
C string `protobuf:"bytes,3,opt,name=c" json:"c,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NestedProto) Reset() { *m = NestedProto{} }
|
||||||
|
func (m *NestedProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*NestedProto) ProtoMessage() {}
|
||||||
|
func (*NestedProto) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{3} }
|
||||||
|
|
||||||
|
func (m *NestedProto) GetA() *UnaryProto {
|
||||||
|
if m != nil {
|
||||||
|
return m.A
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NestedProto) GetB() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.B
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *NestedProto) GetC() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.C
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
type SingleNestedProto struct {
|
||||||
|
A *UnaryProto `protobuf:"bytes,1,opt,name=a" json:"a,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *SingleNestedProto) Reset() { *m = SingleNestedProto{} }
|
||||||
|
func (m *SingleNestedProto) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*SingleNestedProto) ProtoMessage() {}
|
||||||
|
func (*SingleNestedProto) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4} }
|
||||||
|
|
||||||
|
func (m *SingleNestedProto) GetA() *UnaryProto {
|
||||||
|
if m != nil {
|
||||||
|
return m.A
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*EmptyProto)(nil), "grpc.gateway.examples.examplepb.EmptyProto")
|
||||||
|
proto.RegisterType((*NonEmptyProto)(nil), "grpc.gateway.examples.examplepb.NonEmptyProto")
|
||||||
|
proto.RegisterType((*UnaryProto)(nil), "grpc.gateway.examples.examplepb.UnaryProto")
|
||||||
|
proto.RegisterType((*NestedProto)(nil), "grpc.gateway.examples.examplepb.NestedProto")
|
||||||
|
proto.RegisterType((*SingleNestedProto)(nil), "grpc.gateway.examples.examplepb.SingleNestedProto")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ context.Context
|
||||||
|
var _ grpc.ClientConn
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the grpc package it is being compiled against.
|
||||||
|
const _ = grpc.SupportPackageIsVersion4
|
||||||
|
|
||||||
|
// Client API for FlowCombination service
|
||||||
|
|
||||||
|
type FlowCombinationClient interface {
|
||||||
|
RpcEmptyRpc(ctx context.Context, in *EmptyProto, opts ...grpc.CallOption) (*EmptyProto, error)
|
||||||
|
RpcEmptyStream(ctx context.Context, in *EmptyProto, opts ...grpc.CallOption) (FlowCombination_RpcEmptyStreamClient, error)
|
||||||
|
StreamEmptyRpc(ctx context.Context, opts ...grpc.CallOption) (FlowCombination_StreamEmptyRpcClient, error)
|
||||||
|
StreamEmptyStream(ctx context.Context, opts ...grpc.CallOption) (FlowCombination_StreamEmptyStreamClient, error)
|
||||||
|
RpcBodyRpc(ctx context.Context, in *NonEmptyProto, opts ...grpc.CallOption) (*EmptyProto, error)
|
||||||
|
RpcPathSingleNestedRpc(ctx context.Context, in *SingleNestedProto, opts ...grpc.CallOption) (*EmptyProto, error)
|
||||||
|
RpcPathNestedRpc(ctx context.Context, in *NestedProto, opts ...grpc.CallOption) (*EmptyProto, error)
|
||||||
|
RpcBodyStream(ctx context.Context, in *NonEmptyProto, opts ...grpc.CallOption) (FlowCombination_RpcBodyStreamClient, error)
|
||||||
|
RpcPathSingleNestedStream(ctx context.Context, in *SingleNestedProto, opts ...grpc.CallOption) (FlowCombination_RpcPathSingleNestedStreamClient, error)
|
||||||
|
RpcPathNestedStream(ctx context.Context, in *NestedProto, opts ...grpc.CallOption) (FlowCombination_RpcPathNestedStreamClient, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationClient struct {
|
||||||
|
cc *grpc.ClientConn
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewFlowCombinationClient(cc *grpc.ClientConn) FlowCombinationClient {
|
||||||
|
return &flowCombinationClient{cc}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcEmptyRpc(ctx context.Context, in *EmptyProto, opts ...grpc.CallOption) (*EmptyProto, error) {
|
||||||
|
out := new(EmptyProto)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.FlowCombination/RpcEmptyRpc", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcEmptyStream(ctx context.Context, in *EmptyProto, opts ...grpc.CallOption) (FlowCombination_RpcEmptyStreamClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_FlowCombination_serviceDesc.Streams[0], c.cc, "/grpc.gateway.examples.examplepb.FlowCombination/RpcEmptyStream", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &flowCombinationRpcEmptyStreamClient{stream}
|
||||||
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcEmptyStreamClient interface {
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcEmptyStreamClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcEmptyStreamClient) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) StreamEmptyRpc(ctx context.Context, opts ...grpc.CallOption) (FlowCombination_StreamEmptyRpcClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_FlowCombination_serviceDesc.Streams[1], c.cc, "/grpc.gateway.examples.examplepb.FlowCombination/StreamEmptyRpc", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &flowCombinationStreamEmptyRpcClient{stream}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_StreamEmptyRpcClient interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
CloseAndRecv() (*EmptyProto, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationStreamEmptyRpcClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyRpcClient) Send(m *EmptyProto) error {
|
||||||
|
return x.ClientStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyRpcClient) CloseAndRecv() (*EmptyProto, error) {
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) StreamEmptyStream(ctx context.Context, opts ...grpc.CallOption) (FlowCombination_StreamEmptyStreamClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_FlowCombination_serviceDesc.Streams[2], c.cc, "/grpc.gateway.examples.examplepb.FlowCombination/StreamEmptyStream", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &flowCombinationStreamEmptyStreamClient{stream}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_StreamEmptyStreamClient interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationStreamEmptyStreamClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyStreamClient) Send(m *EmptyProto) error {
|
||||||
|
return x.ClientStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyStreamClient) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcBodyRpc(ctx context.Context, in *NonEmptyProto, opts ...grpc.CallOption) (*EmptyProto, error) {
|
||||||
|
out := new(EmptyProto)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.FlowCombination/RpcBodyRpc", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcPathSingleNestedRpc(ctx context.Context, in *SingleNestedProto, opts ...grpc.CallOption) (*EmptyProto, error) {
|
||||||
|
out := new(EmptyProto)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.FlowCombination/RpcPathSingleNestedRpc", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcPathNestedRpc(ctx context.Context, in *NestedProto, opts ...grpc.CallOption) (*EmptyProto, error) {
|
||||||
|
out := new(EmptyProto)
|
||||||
|
err := grpc.Invoke(ctx, "/grpc.gateway.examples.examplepb.FlowCombination/RpcPathNestedRpc", in, out, c.cc, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcBodyStream(ctx context.Context, in *NonEmptyProto, opts ...grpc.CallOption) (FlowCombination_RpcBodyStreamClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_FlowCombination_serviceDesc.Streams[3], c.cc, "/grpc.gateway.examples.examplepb.FlowCombination/RpcBodyStream", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &flowCombinationRpcBodyStreamClient{stream}
|
||||||
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcBodyStreamClient interface {
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcBodyStreamClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcBodyStreamClient) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcPathSingleNestedStream(ctx context.Context, in *SingleNestedProto, opts ...grpc.CallOption) (FlowCombination_RpcPathSingleNestedStreamClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_FlowCombination_serviceDesc.Streams[4], c.cc, "/grpc.gateway.examples.examplepb.FlowCombination/RpcPathSingleNestedStream", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &flowCombinationRpcPathSingleNestedStreamClient{stream}
|
||||||
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcPathSingleNestedStreamClient interface {
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcPathSingleNestedStreamClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcPathSingleNestedStreamClient) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *flowCombinationClient) RpcPathNestedStream(ctx context.Context, in *NestedProto, opts ...grpc.CallOption) (FlowCombination_RpcPathNestedStreamClient, error) {
|
||||||
|
stream, err := grpc.NewClientStream(ctx, &_FlowCombination_serviceDesc.Streams[5], c.cc, "/grpc.gateway.examples.examplepb.FlowCombination/RpcPathNestedStream", opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
x := &flowCombinationRpcPathNestedStreamClient{stream}
|
||||||
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return x, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcPathNestedStreamClient interface {
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcPathNestedStreamClient struct {
|
||||||
|
grpc.ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcPathNestedStreamClient) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Server API for FlowCombination service
|
||||||
|
|
||||||
|
type FlowCombinationServer interface {
|
||||||
|
RpcEmptyRpc(context.Context, *EmptyProto) (*EmptyProto, error)
|
||||||
|
RpcEmptyStream(*EmptyProto, FlowCombination_RpcEmptyStreamServer) error
|
||||||
|
StreamEmptyRpc(FlowCombination_StreamEmptyRpcServer) error
|
||||||
|
StreamEmptyStream(FlowCombination_StreamEmptyStreamServer) error
|
||||||
|
RpcBodyRpc(context.Context, *NonEmptyProto) (*EmptyProto, error)
|
||||||
|
RpcPathSingleNestedRpc(context.Context, *SingleNestedProto) (*EmptyProto, error)
|
||||||
|
RpcPathNestedRpc(context.Context, *NestedProto) (*EmptyProto, error)
|
||||||
|
RpcBodyStream(*NonEmptyProto, FlowCombination_RpcBodyStreamServer) error
|
||||||
|
RpcPathSingleNestedStream(*SingleNestedProto, FlowCombination_RpcPathSingleNestedStreamServer) error
|
||||||
|
RpcPathNestedStream(*NestedProto, FlowCombination_RpcPathNestedStreamServer) error
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterFlowCombinationServer(s *grpc.Server, srv FlowCombinationServer) {
|
||||||
|
s.RegisterService(&_FlowCombination_serviceDesc, srv)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcEmptyRpc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(EmptyProto)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(FlowCombinationServer).RpcEmptyRpc(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.FlowCombination/RpcEmptyRpc",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(FlowCombinationServer).RpcEmptyRpc(ctx, req.(*EmptyProto))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcEmptyStream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return srv.(FlowCombinationServer).RpcEmptyStream(m, &flowCombinationRpcEmptyStreamServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcEmptyStreamServer interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcEmptyStreamServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcEmptyStreamServer) Send(m *EmptyProto) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_StreamEmptyRpc_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
return srv.(FlowCombinationServer).StreamEmptyRpc(&flowCombinationStreamEmptyRpcServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_StreamEmptyRpcServer interface {
|
||||||
|
SendAndClose(*EmptyProto) error
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationStreamEmptyRpcServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyRpcServer) SendAndClose(m *EmptyProto) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyRpcServer) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ServerStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_StreamEmptyStream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
return srv.(FlowCombinationServer).StreamEmptyStream(&flowCombinationStreamEmptyStreamServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_StreamEmptyStreamServer interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
Recv() (*EmptyProto, error)
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationStreamEmptyStreamServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyStreamServer) Send(m *EmptyProto) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationStreamEmptyStreamServer) Recv() (*EmptyProto, error) {
|
||||||
|
m := new(EmptyProto)
|
||||||
|
if err := x.ServerStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcBodyRpc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(NonEmptyProto)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(FlowCombinationServer).RpcBodyRpc(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.FlowCombination/RpcBodyRpc",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(FlowCombinationServer).RpcBodyRpc(ctx, req.(*NonEmptyProto))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcPathSingleNestedRpc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(SingleNestedProto)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(FlowCombinationServer).RpcPathSingleNestedRpc(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.FlowCombination/RpcPathSingleNestedRpc",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(FlowCombinationServer).RpcPathSingleNestedRpc(ctx, req.(*SingleNestedProto))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcPathNestedRpc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(NestedProto)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(FlowCombinationServer).RpcPathNestedRpc(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/grpc.gateway.examples.examplepb.FlowCombination/RpcPathNestedRpc",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(FlowCombinationServer).RpcPathNestedRpc(ctx, req.(*NestedProto))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcBodyStream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
m := new(NonEmptyProto)
|
||||||
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return srv.(FlowCombinationServer).RpcBodyStream(m, &flowCombinationRpcBodyStreamServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcBodyStreamServer interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcBodyStreamServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcBodyStreamServer) Send(m *EmptyProto) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcPathSingleNestedStream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
m := new(SingleNestedProto)
|
||||||
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return srv.(FlowCombinationServer).RpcPathSingleNestedStream(m, &flowCombinationRpcPathSingleNestedStreamServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcPathSingleNestedStreamServer interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcPathSingleNestedStreamServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcPathSingleNestedStreamServer) Send(m *EmptyProto) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _FlowCombination_RpcPathNestedStream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
|
m := new(NestedProto)
|
||||||
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return srv.(FlowCombinationServer).RpcPathNestedStream(m, &flowCombinationRpcPathNestedStreamServer{stream})
|
||||||
|
}
|
||||||
|
|
||||||
|
type FlowCombination_RpcPathNestedStreamServer interface {
|
||||||
|
Send(*EmptyProto) error
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
type flowCombinationRpcPathNestedStreamServer struct {
|
||||||
|
grpc.ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *flowCombinationRpcPathNestedStreamServer) Send(m *EmptyProto) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var _FlowCombination_serviceDesc = grpc.ServiceDesc{
|
||||||
|
ServiceName: "grpc.gateway.examples.examplepb.FlowCombination",
|
||||||
|
HandlerType: (*FlowCombinationServer)(nil),
|
||||||
|
Methods: []grpc.MethodDesc{
|
||||||
|
{
|
||||||
|
MethodName: "RpcEmptyRpc",
|
||||||
|
Handler: _FlowCombination_RpcEmptyRpc_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "RpcBodyRpc",
|
||||||
|
Handler: _FlowCombination_RpcBodyRpc_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "RpcPathSingleNestedRpc",
|
||||||
|
Handler: _FlowCombination_RpcPathSingleNestedRpc_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "RpcPathNestedRpc",
|
||||||
|
Handler: _FlowCombination_RpcPathNestedRpc_Handler,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Streams: []grpc.StreamDesc{
|
||||||
|
{
|
||||||
|
StreamName: "RpcEmptyStream",
|
||||||
|
Handler: _FlowCombination_RpcEmptyStream_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
StreamName: "StreamEmptyRpc",
|
||||||
|
Handler: _FlowCombination_StreamEmptyRpc_Handler,
|
||||||
|
ClientStreams: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
StreamName: "StreamEmptyStream",
|
||||||
|
Handler: _FlowCombination_StreamEmptyStream_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
ClientStreams: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
StreamName: "RpcBodyStream",
|
||||||
|
Handler: _FlowCombination_RpcBodyStream_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
StreamName: "RpcPathSingleNestedStream",
|
||||||
|
Handler: _FlowCombination_RpcPathSingleNestedStream_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
StreamName: "RpcPathNestedStream",
|
||||||
|
Handler: _FlowCombination_RpcPathNestedStream_Handler,
|
||||||
|
ServerStreams: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Metadata: "examples/examplepb/flow_combination.proto",
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("examples/examplepb/flow_combination.proto", fileDescriptor3) }
|
||||||
|
|
||||||
|
var fileDescriptor3 = []byte{
|
||||||
|
// 656 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x3f, 0x8f, 0x12, 0x4f,
|
||||||
|
0x18, 0xc7, 0xf3, 0x70, 0xc9, 0x2f, 0xb9, 0xe1, 0xfe, 0x70, 0xcb, 0x2f, 0x08, 0x1c, 0x1e, 0x77,
|
||||||
|
0xe3, 0x25, 0xe2, 0xbf, 0x5d, 0x82, 0xd5, 0x51, 0x9e, 0xd1, 0x92, 0x5c, 0xb8, 0xd8, 0x6c, 0x63,
|
||||||
|
0x66, 0x87, 0x15, 0x48, 0x60, 0x67, 0x6e, 0x77, 0x0d, 0x5e, 0x08, 0x31, 0xb1, 0xb1, 0xb4, 0xf0,
|
||||||
|
0x05, 0x58, 0x5a, 0xf9, 0x06, 0xec, 0xac, 0x6c, 0x4c, 0x2c, 0x4c, 0xec, 0xec, 0xec, 0x7c, 0x13,
|
||||||
|
0x66, 0x67, 0x66, 0x77, 0x58, 0x05, 0x37, 0x18, 0xb1, 0xdb, 0x99, 0x79, 0x9e, 0x67, 0x3e, 0xf3,
|
||||||
|
0x7d, 0xbe, 0x0f, 0x01, 0xdd, 0x70, 0x9f, 0x92, 0x31, 0x1f, 0xb9, 0x81, 0xa5, 0x3e, 0xb8, 0x63,
|
||||||
|
0x3d, 0x1e, 0xb1, 0xc9, 0x23, 0xca, 0xc6, 0xce, 0xd0, 0x23, 0xe1, 0x90, 0x79, 0x26, 0xf7, 0x59,
|
||||||
|
0xc8, 0x8c, 0x7a, 0xdf, 0xe7, 0xd4, 0xec, 0x93, 0xd0, 0x9d, 0x90, 0x4b, 0x33, 0xce, 0x33, 0x93,
|
||||||
|
0xbc, 0x6a, 0xad, 0xcf, 0x58, 0x7f, 0xe4, 0x5a, 0x84, 0x0f, 0x2d, 0xe2, 0x79, 0x2c, 0x14, 0xd9,
|
||||||
|
0x81, 0x4c, 0xc7, 0x5b, 0x08, 0xdd, 0x1f, 0xf3, 0xf0, 0xf2, 0x4c, 0xac, 0x4e, 0xd0, 0x76, 0x87,
|
||||||
|
0x79, 0x7a, 0xc3, 0xd8, 0x42, 0x40, 0xca, 0x70, 0x08, 0x8d, 0xcd, 0x2e, 0x90, 0x68, 0xe5, 0x94,
|
||||||
|
0x73, 0x72, 0xe5, 0x44, 0x2b, 0x5a, 0xde, 0x90, 0x2b, 0x8a, 0x0f, 0x10, 0x7a, 0xe8, 0x11, 0x5f,
|
||||||
|
0xe5, 0x15, 0xd0, 0x46, 0x10, 0xfa, 0x2a, 0x33, 0xfa, 0xc4, 0x3d, 0x94, 0xef, 0xb8, 0x41, 0xe8,
|
||||||
|
0xf6, 0x64, 0xc0, 0x49, 0x5c, 0x38, 0xdf, 0xba, 0x65, 0x66, 0x3c, 0xc1, 0xd4, 0x85, 0xb3, 0x28,
|
||||||
|
0x3a, 0x68, 0xef, 0x7c, 0xe8, 0xf5, 0x47, 0xee, 0xdf, 0xb9, 0xab, 0xf5, 0x71, 0x17, 0xed, 0x3e,
|
||||||
|
0x18, 0xb1, 0xc9, 0x3d, 0xad, 0xbb, 0xf1, 0x0c, 0xe5, 0xbb, 0x9c, 0x0a, 0x91, 0xba, 0x9c, 0x1a,
|
||||||
|
0xd9, 0x25, 0xb5, 0x9e, 0xd5, 0x55, 0x82, 0x71, 0xe9, 0xf9, 0xe7, 0x6f, 0xaf, 0x72, 0x05, 0xbc,
|
||||||
|
0x63, 0xf9, 0x9c, 0x5a, 0x6e, 0x74, 0x10, 0x7d, 0x19, 0x2f, 0x00, 0xed, 0xc4, 0x04, 0xe7, 0xa1,
|
||||||
|
0xef, 0x92, 0xf1, 0x1a, 0x21, 0x2a, 0x02, 0xa2, 0x88, 0xf7, 0xe6, 0x20, 0x02, 0x71, 0x69, 0x13,
|
||||||
|
0x04, 0x89, 0x24, 0xf8, 0x07, 0x72, 0x68, 0x12, 0x79, 0xbf, 0x56, 0xa4, 0x01, 0xc6, 0x4b, 0x40,
|
||||||
|
0x7b, 0x73, 0x24, 0x6b, 0x97, 0xa5, 0x26, 0x60, 0x4a, 0xf8, 0xff, 0x34, 0x8c, 0x5c, 0x34, 0xa0,
|
||||||
|
0x09, 0xc6, 0xdb, 0x1c, 0x42, 0x5d, 0x4e, 0x4f, 0x59, 0x4f, 0xe8, 0x62, 0x66, 0x56, 0x4f, 0x4d,
|
||||||
|
0xde, 0x6a, 0x34, 0xef, 0x41, 0xe0, 0xbc, 0x03, 0xbc, 0x2d, 0xda, 0xe4, 0xb0, 0x9e, 0x10, 0xa6,
|
||||||
|
0x0d, 0x37, 0xed, 0x7d, 0x5c, 0x11, 0x7b, 0x9c, 0x84, 0x03, 0x6b, 0x4a, 0x66, 0xd6, 0xd4, 0x99,
|
||||||
|
0x59, 0x53, 0x3a, 0x8b, 0x36, 0xed, 0xd8, 0x5c, 0x17, 0x4f, 0x5c, 0x5f, 0x64, 0xd8, 0x75, 0x5c,
|
||||||
|
0xd5, 0x25, 0x52, 0x39, 0xa2, 0x1e, 0xb5, 0xcb, 0xb8, 0xa8, 0x03, 0x92, 0xbc, 0xe8, 0xe4, 0x08,
|
||||||
|
0xd7, 0x16, 0xa4, 0xa6, 0x42, 0x2a, 0xf8, 0x4a, 0x1a, 0x26, 0x39, 0x35, 0x5e, 0x03, 0x2a, 0x75,
|
||||||
|
0x39, 0x3d, 0x23, 0xe1, 0x60, 0x7e, 0x84, 0x23, 0xed, 0x5a, 0x99, 0x5a, 0xfc, 0x32, 0xf4, 0xab,
|
||||||
|
0xe9, 0x77, 0x2c, 0xe4, 0x3b, 0x50, 0xfc, 0x11, 0xdc, 0x1d, 0x4f, 0xd4, 0xb2, 0xa6, 0xc4, 0x0c,
|
||||||
|
0x42, 0x5f, 0x3c, 0xde, 0xf8, 0x0a, 0xa8, 0xa0, 0x08, 0x35, 0xdb, 0xed, 0xec, 0xbe, 0xfe, 0x29,
|
||||||
|
0x95, 0x27, 0xa8, 0x06, 0xf8, 0x70, 0x29, 0xd5, 0x5c, 0x5b, 0x32, 0xe0, 0x93, 0xe6, 0x2c, 0x39,
|
||||||
|
0x6f, 0x03, 0x35, 0x3e, 0xe4, 0xd0, 0xb6, 0x72, 0xac, 0x9a, 0x9f, 0xb5, 0x9a, 0xf6, 0x8b, 0x34,
|
||||||
|
0xed, 0x27, 0xc0, 0x05, 0x6d, 0x1b, 0x39, 0x40, 0x91, 0x6f, 0xe7, 0x1f, 0x94, 0xf2, 0xad, 0x0c,
|
||||||
|
0xb1, 0xe3, 0x9f, 0x24, 0xe9, 0x20, 0xb5, 0x89, 0xf1, 0xd5, 0x25, 0xee, 0x8d, 0x0b, 0x53, 0x7b,
|
||||||
|
0x1f, 0x97, 0x7e, 0x36, 0xb0, 0x3e, 0x3c, 0xc6, 0xf5, 0xa5, 0x1e, 0xd6, 0x51, 0x35, 0x35, 0x24,
|
||||||
|
0x0b, 0x03, 0x9a, 0x60, 0xbc, 0x01, 0x54, 0x59, 0xe0, 0x65, 0xa5, 0xea, 0xda, 0xed, 0x7c, 0x5d,
|
||||||
|
0x08, 0x7b, 0xa4, 0x9e, 0xb2, 0xa8, 0xe3, 0x09, 0xe9, 0x77, 0x40, 0xc5, 0x94, 0xa7, 0x15, 0xe3,
|
||||||
|
0x1a, 0x6d, 0x3d, 0x11, 0x74, 0x17, 0xf8, 0xda, 0x6f, 0x6d, 0xad, 0xc5, 0xce, 0x7e, 0x47, 0xd2,
|
||||||
|
0xb5, 0xe5, 0x21, 0x6d, 0xa0, 0x4d, 0x38, 0xcd, 0xdb, 0x9b, 0x09, 0x92, 0xf3, 0x9f, 0xf8, 0x07,
|
||||||
|
0x74, 0xf7, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x85, 0xaf, 0x3c, 0x6d, 0x09, 0x00, 0x00,
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user