aboutsummaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2019-06-07 22:51:18 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-06-07 22:51:18 +0800
commitafb9e6513f953a813d508633d6ff786fbd18b0b3 (patch)
treea1dbeb76b1531012e9a991aa79b711c7e635c6d6 /vendor
parente83c3ccc47b2001b7871b60084d10c5f861c9c93 (diff)
downloadgo-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.tar
go-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.tar.gz
go-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.tar.bz2
go-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.tar.lz
go-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.tar.xz
go-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.tar.zst
go-tangerine-afb9e6513f953a813d508633d6ff786fbd18b0b3.zip
vendor: remove unused dependencies (#19683)
* vendor: remove unused dependencies These were used by swarm code, which has now migrated to its own repository. * travis.yml: remove sudo requirement for test builders These needed sudo to run FUSE tests for swarm.
Diffstat (limited to 'vendor')
-rw-r--r--vendor/bazil.org/fuse/LICENSE93
-rw-r--r--vendor/bazil.org/fuse/README.md23
-rw-r--r--vendor/bazil.org/fuse/buffer.go35
-rw-r--r--vendor/bazil.org/fuse/debug.go21
-rw-r--r--vendor/bazil.org/fuse/error_darwin.go17
-rw-r--r--vendor/bazil.org/fuse/error_freebsd.go15
-rw-r--r--vendor/bazil.org/fuse/error_linux.go17
-rw-r--r--vendor/bazil.org/fuse/error_std.go31
-rw-r--r--vendor/bazil.org/fuse/fs/serve.go1568
-rw-r--r--vendor/bazil.org/fuse/fs/tree.go99
-rw-r--r--vendor/bazil.org/fuse/fuse.go2303
-rw-r--r--vendor/bazil.org/fuse/fuse.iml9
-rw-r--r--vendor/bazil.org/fuse/fuse_darwin.go9
-rw-r--r--vendor/bazil.org/fuse/fuse_freebsd.go6
-rw-r--r--vendor/bazil.org/fuse/fuse_kernel.go774
-rw-r--r--vendor/bazil.org/fuse/fuse_kernel_darwin.go88
-rw-r--r--vendor/bazil.org/fuse/fuse_kernel_freebsd.go62
-rw-r--r--vendor/bazil.org/fuse/fuse_kernel_linux.go70
-rw-r--r--vendor/bazil.org/fuse/fuse_kernel_std.go1
-rw-r--r--vendor/bazil.org/fuse/fuse_linux.go7
-rw-r--r--vendor/bazil.org/fuse/fuseutil/fuseutil.go20
-rw-r--r--vendor/bazil.org/fuse/mount.go38
-rw-r--r--vendor/bazil.org/fuse/mount_darwin.go208
-rw-r--r--vendor/bazil.org/fuse/mount_freebsd.go111
-rw-r--r--vendor/bazil.org/fuse/mount_linux.go150
-rw-r--r--vendor/bazil.org/fuse/options.go310
-rw-r--r--vendor/bazil.org/fuse/options_darwin.go35
-rw-r--r--vendor/bazil.org/fuse/options_freebsd.go28
-rw-r--r--vendor/bazil.org/fuse/options_linux.go25
-rw-r--r--vendor/bazil.org/fuse/protocol.go75
-rw-r--r--vendor/bazil.org/fuse/unmount.go6
-rw-r--r--vendor/bazil.org/fuse/unmount_linux.go21
-rw-r--r--vendor/bazil.org/fuse/unmount_std.go17
-rw-r--r--vendor/github.com/codahale/hdrhistogram/LICENSE21
-rw-r--r--vendor/github.com/codahale/hdrhistogram/README.md15
-rw-r--r--vendor/github.com/codahale/hdrhistogram/hdr.go564
-rw-r--r--vendor/github.com/codahale/hdrhistogram/window.go45
-rw-r--r--vendor/github.com/uber/jaeger-client-go/CHANGELOG.md186
-rw-r--r--vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md170
-rw-r--r--vendor/github.com/uber/jaeger-client-go/DCO37
-rw-r--r--vendor/github.com/uber/jaeger-client-go/Gopkg.lock164
-rw-r--r--vendor/github.com/uber/jaeger-client-go/Gopkg.toml27
-rw-r--r--vendor/github.com/uber/jaeger-client-go/LICENSE201
-rw-r--r--vendor/github.com/uber/jaeger-client-go/Makefile117
-rw-r--r--vendor/github.com/uber/jaeger-client-go/README.md260
-rw-r--r--vendor/github.com/uber/jaeger-client-go/RELEASE.md11
-rw-r--r--vendor/github.com/uber/jaeger-client-go/baggage_setter.go77
-rw-r--r--vendor/github.com/uber/jaeger-client-go/config/config.go373
-rw-r--r--vendor/github.com/uber/jaeger-client-go/config/config_env.go205
-rw-r--r--vendor/github.com/uber/jaeger-client-go/config/options.go148
-rw-r--r--vendor/github.com/uber/jaeger-client-go/constants.go88
-rw-r--r--vendor/github.com/uber/jaeger-client-go/context.go258
-rw-r--r--vendor/github.com/uber/jaeger-client-go/contrib_observer.go56
-rw-r--r--vendor/github.com/uber/jaeger-client-go/doc.go24
-rw-r--r--vendor/github.com/uber/jaeger-client-go/glide.lock89
-rw-r--r--vendor/github.com/uber/jaeger-client-go/glide.yaml22
-rw-r--r--vendor/github.com/uber/jaeger-client-go/header.go64
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go101
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go157
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go71
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go81
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go99
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go216
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go32
-rw-r--r--vendor/github.com/uber/jaeger-client-go/interop.go55
-rw-r--r--vendor/github.com/uber/jaeger-client-go/jaeger_tag.go84
-rw-r--r--vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go179
-rw-r--r--vendor/github.com/uber/jaeger-client-go/log/logger.go90
-rw-r--r--vendor/github.com/uber/jaeger-client-go/logger.go53
-rw-r--r--vendor/github.com/uber/jaeger-client-go/metrics.go107
-rw-r--r--vendor/github.com/uber/jaeger-client-go/observer.go88
-rw-r--r--vendor/github.com/uber/jaeger-client-go/process.go29
-rw-r--r--vendor/github.com/uber/jaeger-client-go/propagation.go300
-rw-r--r--vendor/github.com/uber/jaeger-client-go/reference.go23
-rw-r--r--vendor/github.com/uber/jaeger-client-go/reporter.go289
-rw-r--r--vendor/github.com/uber/jaeger-client-go/reporter_options.go69
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md5
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go16
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go63
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go124
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go101
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go171
-rw-r--r--vendor/github.com/uber/jaeger-client-go/sampler.go556
-rw-r--r--vendor/github.com/uber/jaeger-client-go/sampler_options.go81
-rw-r--r--vendor/github.com/uber/jaeger-client-go/span.go249
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/agent.go411
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/constants.go23
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/ttypes.go21
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go435
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go18
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go154
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/agent.go242
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/constants.go18
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/ttypes.go1838
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go18
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go410
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go873
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/constants.go32
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/ttypes.go1247
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/zipkincollector.go446
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/README.md7
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/application_exception.go142
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/binary_protocol.go514
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/compact_protocol.go815
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/exception.go44
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/memory_buffer.go79
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/messagetype.go31
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/numeric.go164
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/processor.go30
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/protocol.go175
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/protocol_exception.go78
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/protocol_factory.go25
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/rich_transport.go69
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/serializer.go75
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/simple_json_protocol.go1337
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/transport.go68
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/transport_exception.go90
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/transport_factory.go39
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift/type.go69
-rw-r--r--vendor/github.com/uber/jaeger-client-go/tracer.go431
-rw-r--r--vendor/github.com/uber/jaeger-client-go/tracer_options.go159
-rw-r--r--vendor/github.com/uber/jaeger-client-go/transport.go38
-rw-r--r--vendor/github.com/uber/jaeger-client-go/transport_udp.go131
-rw-r--r--vendor/github.com/uber/jaeger-client-go/utils/http_json.go54
-rw-r--r--vendor/github.com/uber/jaeger-client-go/utils/localip.go84
-rw-r--r--vendor/github.com/uber/jaeger-client-go/utils/rand.go46
-rw-r--r--vendor/github.com/uber/jaeger-client-go/utils/rate_limiter.go77
-rw-r--r--vendor/github.com/uber/jaeger-client-go/utils/udp_client.go98
-rw-r--r--vendor/github.com/uber/jaeger-client-go/utils/utils.go87
-rw-r--r--vendor/github.com/uber/jaeger-client-go/zipkin.go76
-rw-r--r--vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go322
-rw-r--r--vendor/github.com/uber/jaeger-lib/LICENSE201
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/counter.go28
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/factory.go35
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/gauge.go28
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/local.go337
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/metrics.go85
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go43
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/timer.go33
-rw-r--r--vendor/vendor.json126
140 files changed, 0 insertions, 25559 deletions
diff --git a/vendor/bazil.org/fuse/LICENSE b/vendor/bazil.org/fuse/LICENSE
deleted file mode 100644
index 4ac7cd838..000000000
--- a/vendor/bazil.org/fuse/LICENSE
+++ /dev/null
@@ -1,93 +0,0 @@
-Copyright (c) 2013-2015 Tommi Virtanen.
-Copyright (c) 2009, 2011, 2012 The Go Authors.
-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 Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-The following included software components have additional copyright
-notices and license terms that may differ from the above.
-
-
-File fuse.go:
-
-// Adapted from Plan 9 from User Space's src/cmd/9pfuse/fuse.c,
-// which carries this notice:
-//
-// The files in this directory are subject to the following license.
-//
-// The author of this software is Russ Cox.
-//
-// Copyright (c) 2006 Russ Cox
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose without fee is hereby granted, provided that this entire notice
-// is included in all copies of any software which is or includes a copy
-// or modification of this software and in all copies of the supporting
-// documentation for such software.
-//
-// THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
-// WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY
-// OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
-// FITNESS FOR ANY PARTICULAR PURPOSE.
-
-
-File fuse_kernel.go:
-
-// Derived from FUSE's fuse_kernel.h
-/*
- This file defines the kernel interface of FUSE
- Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
-
-
- This -- and only this -- header file may also be distributed under
- the terms of the BSD Licence as follows:
-
- Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. 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.
-
- THIS SOFTWARE IS PROVIDED BY AUTHOR 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 AUTHOR 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.
-*/
diff --git a/vendor/bazil.org/fuse/README.md b/vendor/bazil.org/fuse/README.md
deleted file mode 100644
index 8c6d556ee..000000000
--- a/vendor/bazil.org/fuse/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
-bazil.org/fuse -- Filesystems in Go
-===================================
-
-`bazil.org/fuse` is a Go library for writing FUSE userspace
-filesystems.
-
-It is a from-scratch implementation of the kernel-userspace
-communication protocol, and does not use the C library from the
-project called FUSE. `bazil.org/fuse` embraces Go fully for safety and
-ease of programming.
-
-Here’s how to get going:
-
- go get bazil.org/fuse
-
-Website: http://bazil.org/fuse/
-
-Github repository: https://github.com/bazil/fuse
-
-API docs: http://godoc.org/bazil.org/fuse
-
-Our thanks to Russ Cox for his fuse library, which this project is
-based on.
diff --git a/vendor/bazil.org/fuse/buffer.go b/vendor/bazil.org/fuse/buffer.go
deleted file mode 100644
index bb1d2b776..000000000
--- a/vendor/bazil.org/fuse/buffer.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package fuse
-
-import "unsafe"
-
-// buffer provides a mechanism for constructing a message from
-// multiple segments.
-type buffer []byte
-
-// alloc allocates size bytes and returns a pointer to the new
-// segment.
-func (w *buffer) alloc(size uintptr) unsafe.Pointer {
- s := int(size)
- if len(*w)+s > cap(*w) {
- old := *w
- *w = make([]byte, len(*w), 2*cap(*w)+s)
- copy(*w, old)
- }
- l := len(*w)
- *w = (*w)[:l+s]
- return unsafe.Pointer(&(*w)[l])
-}
-
-// reset clears out the contents of the buffer.
-func (w *buffer) reset() {
- for i := range (*w)[:cap(*w)] {
- (*w)[i] = 0
- }
- *w = (*w)[:0]
-}
-
-func newBuffer(extra uintptr) buffer {
- const hdrSize = unsafe.Sizeof(outHeader{})
- buf := make(buffer, hdrSize, hdrSize+extra)
- return buf
-}
diff --git a/vendor/bazil.org/fuse/debug.go b/vendor/bazil.org/fuse/debug.go
deleted file mode 100644
index be9f900d5..000000000
--- a/vendor/bazil.org/fuse/debug.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package fuse
-
-import (
- "runtime"
-)
-
-func stack() string {
- buf := make([]byte, 1024)
- return string(buf[:runtime.Stack(buf, false)])
-}
-
-func nop(msg interface{}) {}
-
-// Debug is called to output debug messages, including protocol
-// traces. The default behavior is to do nothing.
-//
-// The messages have human-friendly string representations and are
-// safe to marshal to JSON.
-//
-// Implementations must not retain msg.
-var Debug func(msg interface{}) = nop
diff --git a/vendor/bazil.org/fuse/error_darwin.go b/vendor/bazil.org/fuse/error_darwin.go
deleted file mode 100644
index a3fb89ca2..000000000
--- a/vendor/bazil.org/fuse/error_darwin.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package fuse
-
-import (
- "syscall"
-)
-
-const (
- ENOATTR = Errno(syscall.ENOATTR)
-)
-
-const (
- errNoXattr = ENOATTR
-)
-
-func init() {
- errnoNames[errNoXattr] = "ENOATTR"
-}
diff --git a/vendor/bazil.org/fuse/error_freebsd.go b/vendor/bazil.org/fuse/error_freebsd.go
deleted file mode 100644
index c6ea6d6e7..000000000
--- a/vendor/bazil.org/fuse/error_freebsd.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package fuse
-
-import "syscall"
-
-const (
- ENOATTR = Errno(syscall.ENOATTR)
-)
-
-const (
- errNoXattr = ENOATTR
-)
-
-func init() {
- errnoNames[errNoXattr] = "ENOATTR"
-}
diff --git a/vendor/bazil.org/fuse/error_linux.go b/vendor/bazil.org/fuse/error_linux.go
deleted file mode 100644
index 6f113e71e..000000000
--- a/vendor/bazil.org/fuse/error_linux.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package fuse
-
-import (
- "syscall"
-)
-
-const (
- ENODATA = Errno(syscall.ENODATA)
-)
-
-const (
- errNoXattr = ENODATA
-)
-
-func init() {
- errnoNames[errNoXattr] = "ENODATA"
-}
diff --git a/vendor/bazil.org/fuse/error_std.go b/vendor/bazil.org/fuse/error_std.go
deleted file mode 100644
index 398f43fbf..000000000
--- a/vendor/bazil.org/fuse/error_std.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package fuse
-
-// There is very little commonality in extended attribute errors
-// across platforms.
-//
-// getxattr return value for "extended attribute does not exist" is
-// ENOATTR on OS X, and ENODATA on Linux and apparently at least
-// NetBSD. There may be a #define ENOATTR on Linux too, but the value
-// is ENODATA in the actual syscalls. FreeBSD and OpenBSD have no
-// ENODATA, only ENOATTR. ENOATTR is not in any of the standards,
-// ENODATA exists but is only used for STREAMs.
-//
-// Each platform will define it a errNoXattr constant, and this file
-// will enforce that it implements the right interfaces and hide the
-// implementation.
-//
-// https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/getxattr.2.html
-// http://mail-index.netbsd.org/tech-kern/2012/04/30/msg013090.html
-// http://mail-index.netbsd.org/tech-kern/2012/04/30/msg013097.html
-// http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
-// http://www.freebsd.org/cgi/man.cgi?query=extattr_get_file&sektion=2
-// http://nixdoc.net/man-pages/openbsd/man2/extattr_get_file.2.html
-
-// ErrNoXattr is a platform-independent error value meaning the
-// extended attribute was not found. It can be used to respond to
-// GetxattrRequest and such.
-const ErrNoXattr = errNoXattr
-
-var _ error = ErrNoXattr
-var _ Errno = ErrNoXattr
-var _ ErrorNumber = ErrNoXattr
diff --git a/vendor/bazil.org/fuse/fs/serve.go b/vendor/bazil.org/fuse/fs/serve.go
deleted file mode 100644
index e9fc56590..000000000
--- a/vendor/bazil.org/fuse/fs/serve.go
+++ /dev/null
@@ -1,1568 +0,0 @@
-// FUSE service loop, for servers that wish to use it.
-
-package fs // import "bazil.org/fuse/fs"
-
-import (
- "encoding/binary"
- "fmt"
- "hash/fnv"
- "io"
- "log"
- "reflect"
- "runtime"
- "strings"
- "sync"
- "time"
-
- "golang.org/x/net/context"
-)
-
-import (
- "bytes"
-
- "bazil.org/fuse"
- "bazil.org/fuse/fuseutil"
-)
-
-const (
- attrValidTime = 1 * time.Minute
- entryValidTime = 1 * time.Minute
-)
-
-// TODO: FINISH DOCS
-
-// An FS is the interface required of a file system.
-//
-// Other FUSE requests can be handled by implementing methods from the
-// FS* interfaces, for example FSStatfser.
-type FS interface {
- // Root is called to obtain the Node for the file system root.
- Root() (Node, error)
-}
-
-type FSStatfser interface {
- // Statfs is called to obtain file system metadata.
- // It should write that data to resp.
- Statfs(ctx context.Context, req *fuse.StatfsRequest, resp *fuse.StatfsResponse) error
-}
-
-type FSDestroyer interface {
- // Destroy is called when the file system is shutting down.
- //
- // Linux only sends this request for block device backed (fuseblk)
- // filesystems, to allow them to flush writes to disk before the
- // unmount completes.
- Destroy()
-}
-
-type FSInodeGenerator interface {
- // GenerateInode is called to pick a dynamic inode number when it
- // would otherwise be 0.
- //
- // Not all filesystems bother tracking inodes, but FUSE requires
- // the inode to be set, and fewer duplicates in general makes UNIX
- // tools work better.
- //
- // Operations where the nodes may return 0 inodes include Getattr,
- // Setattr and ReadDir.
- //
- // If FS does not implement FSInodeGenerator, GenerateDynamicInode
- // is used.
- //
- // Implementing this is useful to e.g. constrain the range of
- // inode values used for dynamic inodes.
- GenerateInode(parentInode uint64, name string) uint64
-}
-
-// A Node is the interface required of a file or directory.
-// See the documentation for type FS for general information
-// pertaining to all methods.
-//
-// A Node must be usable as a map key, that is, it cannot be a
-// function, map or slice.
-//
-// Other FUSE requests can be handled by implementing methods from the
-// Node* interfaces, for example NodeOpener.
-//
-// Methods returning Node should take care to return the same Node
-// when the result is logically the same instance. Without this, each
-// Node will get a new NodeID, causing spurious cache invalidations,
-// extra lookups and aliasing anomalies. This may not matter for a
-// simple, read-only filesystem.
-type Node interface {
- // Attr fills attr with the standard metadata for the node.
- //
- // Fields with reasonable defaults are prepopulated. For example,
- // all times are set to a fixed moment when the program started.
- //
- // If Inode is left as 0, a dynamic inode number is chosen.
- //
- // The result may be cached for the duration set in Valid.
- Attr(ctx context.Context, attr *fuse.Attr) error
-}
-
-type NodeGetattrer interface {
- // Getattr obtains the standard metadata for the receiver.
- // It should store that metadata in resp.
- //
- // If this method is not implemented, the attributes will be
- // generated based on Attr(), with zero values filled in.
- Getattr(ctx context.Context, req *fuse.GetattrRequest, resp *fuse.GetattrResponse) error
-}
-
-type NodeSetattrer interface {
- // Setattr sets the standard metadata for the receiver.
- //
- // Note, this is also used to communicate changes in the size of
- // the file, outside of Writes.
- //
- // req.Valid is a bitmask of what fields are actually being set.
- // For example, the method should not change the mode of the file
- // unless req.Valid.Mode() is true.
- Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error
-}
-
-type NodeSymlinker interface {
- // Symlink creates a new symbolic link in the receiver, which must be a directory.
- //
- // TODO is the above true about directories?
- Symlink(ctx context.Context, req *fuse.SymlinkRequest) (Node, error)
-}
-
-// This optional request will be called only for symbolic link nodes.
-type NodeReadlinker interface {
- // Readlink reads a symbolic link.
- Readlink(ctx context.Context, req *fuse.ReadlinkRequest) (string, error)
-}
-
-type NodeLinker interface {
- // Link creates a new directory entry in the receiver based on an
- // existing Node. Receiver must be a directory.
- Link(ctx context.Context, req *fuse.LinkRequest, old Node) (Node, error)
-}
-
-type NodeRemover interface {
- // Remove removes the entry with the given name from
- // the receiver, which must be a directory. The entry to be removed
- // may correspond to a file (unlink) or to a directory (rmdir).
- Remove(ctx context.Context, req *fuse.RemoveRequest) error
-}
-
-type NodeAccesser interface {
- // Access checks whether the calling context has permission for
- // the given operations on the receiver. If so, Access should
- // return nil. If not, Access should return EPERM.
- //
- // Note that this call affects the result of the access(2) system
- // call but not the open(2) system call. If Access is not
- // implemented, the Node behaves as if it always returns nil
- // (permission granted), relying on checks in Open instead.
- Access(ctx context.Context, req *fuse.AccessRequest) error
-}
-
-type NodeStringLookuper interface {
- // Lookup looks up a specific entry in the receiver,
- // which must be a directory. Lookup should return a Node
- // corresponding to the entry. If the name does not exist in
- // the directory, Lookup should return ENOENT.
- //
- // Lookup need not to handle the names "." and "..".
- Lookup(ctx context.Context, name string) (Node, error)
-}
-
-type NodeRequestLookuper interface {
- // Lookup looks up a specific entry in the receiver.
- // See NodeStringLookuper for more.
- Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (Node, error)
-}
-
-type NodeMkdirer interface {
- Mkdir(ctx context.Context, req *fuse.MkdirRequest) (Node, error)
-}
-
-type NodeOpener interface {
- // Open opens the receiver. After a successful open, a client
- // process has a file descriptor referring to this Handle.
- //
- // Open can also be also called on non-files. For example,
- // directories are Opened for ReadDir or fchdir(2).
- //
- // If this method is not implemented, the open will always
- // succeed, and the Node itself will be used as the Handle.
- //
- // XXX note about access. XXX OpenFlags.
- Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (Handle, error)
-}
-
-type NodeCreater interface {
- // Create creates a new directory entry in the receiver, which
- // must be a directory.
- Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (Node, Handle, error)
-}
-
-type NodeForgetter interface {
- // Forget about this node. This node will not receive further
- // method calls.
- //
- // Forget is not necessarily seen on unmount, as all nodes are
- // implicitly forgotten as part part of the unmount.
- Forget()
-}
-
-type NodeRenamer interface {
- Rename(ctx context.Context, req *fuse.RenameRequest, newDir Node) error
-}
-
-type NodeMknoder interface {
- Mknod(ctx context.Context, req *fuse.MknodRequest) (Node, error)
-}
-
-// TODO this should be on Handle not Node
-type NodeFsyncer interface {
- Fsync(ctx context.Context, req *fuse.FsyncRequest) error
-}
-
-type NodeGetxattrer interface {
- // Getxattr gets an extended attribute by the given name from the
- // node.
- //
- // If there is no xattr by that name, returns fuse.ErrNoXattr.
- Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error
-}
-
-type NodeListxattrer interface {
- // Listxattr lists the extended attributes recorded for the node.
- Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error
-}
-
-type NodeSetxattrer interface {
- // Setxattr sets an extended attribute with the given name and
- // value for the node.
- Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error
-}
-
-type NodeRemovexattrer interface {
- // Removexattr removes an extended attribute for the name.
- //
- // If there is no xattr by that name, returns fuse.ErrNoXattr.
- Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error
-}
-
-var startTime = time.Now()
-
-func nodeAttr(ctx context.Context, n Node, attr *fuse.Attr) error {
- attr.Valid = attrValidTime
- attr.Nlink = 1
- attr.Atime = startTime
- attr.Mtime = startTime
- attr.Ctime = startTime
- attr.Crtime = startTime
- if err := n.Attr(ctx, attr); err != nil {
- return err
- }
- return nil
-}
-
-// A Handle is the interface required of an opened file or directory.
-// See the documentation for type FS for general information
-// pertaining to all methods.
-//
-// Other FUSE requests can be handled by implementing methods from the
-// Handle* interfaces. The most common to implement are HandleReader,
-// HandleReadDirer, and HandleWriter.
-//
-// TODO implement methods: Getlk, Setlk, Setlkw
-type Handle interface {
-}
-
-type HandleFlusher interface {
- // Flush is called each time the file or directory is closed.
- // Because there can be multiple file descriptors referring to a
- // single opened file, Flush can be called multiple times.
- Flush(ctx context.Context, req *fuse.FlushRequest) error
-}
-
-type HandleReadAller interface {
- ReadAll(ctx context.Context) ([]byte, error)
-}
-
-type HandleReadDirAller interface {
- ReadDirAll(ctx context.Context) ([]fuse.Dirent, error)
-}
-
-type HandleReader interface {
- // Read requests to read data from the handle.
- //
- // There is a page cache in the kernel that normally submits only
- // page-aligned reads spanning one or more pages. However, you
- // should not rely on this. To see individual requests as
- // submitted by the file system clients, set OpenDirectIO.
- //
- // Note that reads beyond the size of the file as reported by Attr
- // are not even attempted (except in OpenDirectIO mode).
- Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error
-}
-
-type HandleWriter interface {
- // Write requests to write data into the handle at the given offset.
- // Store the amount of data written in resp.Size.
- //
- // There is a writeback page cache in the kernel that normally submits
- // only page-aligned writes spanning one or more pages. However,
- // you should not rely on this. To see individual requests as
- // submitted by the file system clients, set OpenDirectIO.
- //
- // Writes that grow the file are expected to update the file size
- // (as seen through Attr). Note that file size changes are
- // communicated also through Setattr.
- Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error
-}
-
-type HandleReleaser interface {
- Release(ctx context.Context, req *fuse.ReleaseRequest) error
-}
-
-type Config struct {
- // Function to send debug log messages to. If nil, use fuse.Debug.
- // Note that changing this or fuse.Debug may not affect existing
- // calls to Serve.
- //
- // See fuse.Debug for the rules that log functions must follow.
- Debug func(msg interface{})
-
- // Function to put things into context for processing the request.
- // The returned context must have ctx as its parent.
- //
- // Note that changing this may not affect existing calls to Serve.
- //
- // Must not retain req.
- WithContext func(ctx context.Context, req fuse.Request) context.Context
-}
-
-// New returns a new FUSE server ready to serve this kernel FUSE
-// connection.
-//
-// Config may be nil.
-func New(conn *fuse.Conn, config *Config) *Server {
- s := &Server{
- conn: conn,
- req: map[fuse.RequestID]*serveRequest{},
- nodeRef: map[Node]fuse.NodeID{},
- dynamicInode: GenerateDynamicInode,
- }
- if config != nil {
- s.debug = config.Debug
- s.context = config.WithContext
- }
- if s.debug == nil {
- s.debug = fuse.Debug
- }
- return s
-}
-
-type Server struct {
- // set in New
- conn *fuse.Conn
- debug func(msg interface{})
- context func(ctx context.Context, req fuse.Request) context.Context
-
- // set once at Serve time
- fs FS
- dynamicInode func(parent uint64, name string) uint64
-
- // state, protected by meta
- meta sync.Mutex
- req map[fuse.RequestID]*serveRequest
- node []*serveNode
- nodeRef map[Node]fuse.NodeID
- handle []*serveHandle
- freeNode []fuse.NodeID
- freeHandle []fuse.HandleID
- nodeGen uint64
-
- // Used to ensure worker goroutines finish before Serve returns
- wg sync.WaitGroup
-}
-
-// Serve serves the FUSE connection by making calls to the methods
-// of fs and the Nodes and Handles it makes available. It returns only
-// when the connection has been closed or an unexpected error occurs.
-func (s *Server) Serve(fs FS) error {
- defer s.wg.Wait() // Wait for worker goroutines to complete before return
-
- s.fs = fs
- if dyn, ok := fs.(FSInodeGenerator); ok {
- s.dynamicInode = dyn.GenerateInode
- }
-
- root, err := fs.Root()
- if err != nil {
- return fmt.Errorf("cannot obtain root node: %v", err)
- }
- // Recognize the root node if it's ever returned from Lookup,
- // passed to Invalidate, etc.
- s.nodeRef[root] = 1
- s.node = append(s.node, nil, &serveNode{
- inode: 1,
- generation: s.nodeGen,
- node: root,
- refs: 1,
- })
- s.handle = append(s.handle, nil)
-
- for {
- req, err := s.conn.ReadRequest()
- if err != nil {
- if err == io.EOF {
- break
- }
- return err
- }
-
- s.wg.Add(1)
- go func() {
- defer s.wg.Done()
- s.serve(req)
- }()
- }
- return nil
-}
-
-// Serve serves a FUSE connection with the default settings. See
-// Server.Serve.
-func Serve(c *fuse.Conn, fs FS) error {
- server := New(c, nil)
- return server.Serve(fs)
-}
-
-type nothing struct{}
-
-type serveRequest struct {
- Request fuse.Request
- cancel func()
-}
-
-type serveNode struct {
- inode uint64
- generation uint64
- node Node
- refs uint64
-
- // Delay freeing the NodeID until waitgroup is done. This allows
- // using the NodeID for short periods of time without holding the
- // Server.meta lock.
- //
- // Rules:
- //
- // - hold Server.meta while calling wg.Add, then unlock
- // - do NOT try to reacquire Server.meta
- wg sync.WaitGroup
-}
-
-func (sn *serveNode) attr(ctx context.Context, attr *fuse.Attr) error {
- err := nodeAttr(ctx, sn.node, attr)
- if attr.Inode == 0 {
- attr.Inode = sn.inode
- }
- return err
-}
-
-type serveHandle struct {
- handle Handle
- readData []byte
- nodeID fuse.NodeID
-}
-
-// NodeRef is deprecated. It remains here to decrease code churn on
-// FUSE library users. You may remove it from your program now;
-// returning the same Node values are now recognized automatically,
-// without needing NodeRef.
-type NodeRef struct{}
-
-func (c *Server) saveNode(inode uint64, node Node) (id fuse.NodeID, gen uint64) {
- c.meta.Lock()
- defer c.meta.Unlock()
-
- if id, ok := c.nodeRef[node]; ok {
- sn := c.node[id]
- sn.refs++
- return id, sn.generation
- }
-
- sn := &serveNode{inode: inode, node: node, refs: 1}
- if n := len(c.freeNode); n > 0 {
- id = c.freeNode[n-1]
- c.freeNode = c.freeNode[:n-1]
- c.node[id] = sn
- c.nodeGen++
- } else {
- id = fuse.NodeID(len(c.node))
- c.node = append(c.node, sn)
- }
- sn.generation = c.nodeGen
- c.nodeRef[node] = id
- return id, sn.generation
-}
-
-func (c *Server) saveHandle(handle Handle, nodeID fuse.NodeID) (id fuse.HandleID) {
- c.meta.Lock()
- shandle := &serveHandle{handle: handle, nodeID: nodeID}
- if n := len(c.freeHandle); n > 0 {
- id = c.freeHandle[n-1]
- c.freeHandle = c.freeHandle[:n-1]
- c.handle[id] = shandle
- } else {
- id = fuse.HandleID(len(c.handle))
- c.handle = append(c.handle, shandle)
- }
- c.meta.Unlock()
- return
-}
-
-type nodeRefcountDropBug struct {
- N uint64
- Refs uint64
- Node fuse.NodeID
-}
-
-func (n *nodeRefcountDropBug) String() string {
- return fmt.Sprintf("bug: trying to drop %d of %d references to %v", n.N, n.Refs, n.Node)
-}
-
-func (c *Server) dropNode(id fuse.NodeID, n uint64) (forget bool) {
- c.meta.Lock()
- defer c.meta.Unlock()
- snode := c.node[id]
-
- if snode == nil {
- // this should only happen if refcounts kernel<->us disagree
- // *and* two ForgetRequests for the same node race each other;
- // this indicates a bug somewhere
- c.debug(nodeRefcountDropBug{N: n, Node: id})
-
- // we may end up triggering Forget twice, but that's better
- // than not even once, and that's the best we can do
- return true
- }
-
- if n > snode.refs {
- c.debug(nodeRefcountDropBug{N: n, Refs: snode.refs, Node: id})
- n = snode.refs
- }
-
- snode.refs -= n
- if snode.refs == 0 {
- snode.wg.Wait()
- c.node[id] = nil
- delete(c.nodeRef, snode.node)
- c.freeNode = append(c.freeNode, id)
- return true
- }
- return false
-}
-
-func (c *Server) dropHandle(id fuse.HandleID) {
- c.meta.Lock()
- c.handle[id] = nil
- c.freeHandle = append(c.freeHandle, id)
- c.meta.Unlock()
-}
-
-type missingHandle struct {
- Handle fuse.HandleID
- MaxHandle fuse.HandleID
-}
-
-func (m missingHandle) String() string {
- return fmt.Sprint("missing handle: ", m.Handle, m.MaxHandle)
-}
-
-// Returns nil for invalid handles.
-func (c *Server) getHandle(id fuse.HandleID) (shandle *serveHandle) {
- c.meta.Lock()
- defer c.meta.Unlock()
- if id < fuse.HandleID(len(c.handle)) {
- shandle = c.handle[uint(id)]
- }
- if shandle == nil {
- c.debug(missingHandle{
- Handle: id,
- MaxHandle: fuse.HandleID(len(c.handle)),
- })
- }
- return
-}
-
-type request struct {
- Op string
- Request *fuse.Header
- In interface{} `json:",omitempty"`
-}
-
-func (r request) String() string {
- return fmt.Sprintf("<- %s", r.In)
-}
-
-type logResponseHeader struct {
- ID fuse.RequestID
-}
-
-func (m logResponseHeader) String() string {
- return fmt.Sprintf("ID=%v", m.ID)
-}
-
-type response struct {
- Op string
- Request logResponseHeader
- Out interface{} `json:",omitempty"`
- // Errno contains the errno value as a string, for example "EPERM".
- Errno string `json:",omitempty"`
- // Error may contain a free form error message.
- Error string `json:",omitempty"`
-}
-
-func (r response) errstr() string {
- s := r.Errno
- if r.Error != "" {
- // prefix the errno constant to the long form message
- s = s + ": " + r.Error
- }
- return s
-}
-
-func (r response) String() string {
- switch {
- case r.Errno != "" && r.Out != nil:
- return fmt.Sprintf("-> [%v] %v error=%s", r.Request, r.Out, r.errstr())
- case r.Errno != "":
- return fmt.Sprintf("-> [%v] %s error=%s", r.Request, r.Op, r.errstr())
- case r.Out != nil:
- // make sure (seemingly) empty values are readable
- switch r.Out.(type) {
- case string:
- return fmt.Sprintf("-> [%v] %s %q", r.Request, r.Op, r.Out)
- case []byte:
- return fmt.Sprintf("-> [%v] %s [% x]", r.Request, r.Op, r.Out)
- default:
- return fmt.Sprintf("-> [%v] %v", r.Request, r.Out)
- }
- default:
- return fmt.Sprintf("-> [%v] %s", r.Request, r.Op)
- }
-}
-
-type notification struct {
- Op string
- Node fuse.NodeID
- Out interface{} `json:",omitempty"`
- Err string `json:",omitempty"`
-}
-
-func (n notification) String() string {
- var buf bytes.Buffer
- fmt.Fprintf(&buf, "=> %s %v", n.Op, n.Node)
- if n.Out != nil {
- // make sure (seemingly) empty values are readable
- switch n.Out.(type) {
- case string:
- fmt.Fprintf(&buf, " %q", n.Out)
- case []byte:
- fmt.Fprintf(&buf, " [% x]", n.Out)
- default:
- fmt.Fprintf(&buf, " %s", n.Out)
- }
- }
- if n.Err != "" {
- fmt.Fprintf(&buf, " Err:%v", n.Err)
- }
- return buf.String()
-}
-
-type logMissingNode struct {
- MaxNode fuse.NodeID
-}
-
-func opName(req fuse.Request) string {
- t := reflect.Indirect(reflect.ValueOf(req)).Type()
- s := t.Name()
- s = strings.TrimSuffix(s, "Request")
- return s
-}
-
-type logLinkRequestOldNodeNotFound struct {
- Request *fuse.Header
- In *fuse.LinkRequest
-}
-
-func (m *logLinkRequestOldNodeNotFound) String() string {
- return fmt.Sprintf("In LinkRequest (request %v), node %d not found", m.Request.Hdr().ID, m.In.OldNode)
-}
-
-type renameNewDirNodeNotFound struct {
- Request *fuse.Header
- In *fuse.RenameRequest
-}
-
-func (m *renameNewDirNodeNotFound) String() string {
- return fmt.Sprintf("In RenameRequest (request %v), node %d not found", m.Request.Hdr().ID, m.In.NewDir)
-}
-
-type handlerPanickedError struct {
- Request interface{}
- Err interface{}
-}
-
-var _ error = handlerPanickedError{}
-
-func (h handlerPanickedError) Error() string {
- return fmt.Sprintf("handler panicked: %v", h.Err)
-}
-
-var _ fuse.ErrorNumber = handlerPanickedError{}
-
-func (h handlerPanickedError) Errno() fuse.Errno {
- if err, ok := h.Err.(fuse.ErrorNumber); ok {
- return err.Errno()
- }
- return fuse.DefaultErrno
-}
-
-// handlerTerminatedError happens when a handler terminates itself
-// with runtime.Goexit. This is most commonly because of incorrect use
-// of testing.TB.FailNow, typically via t.Fatal.
-type handlerTerminatedError struct {
- Request interface{}
-}
-
-var _ error = handlerTerminatedError{}
-
-func (h handlerTerminatedError) Error() string {
- return fmt.Sprintf("handler terminated (called runtime.Goexit)")
-}
-
-var _ fuse.ErrorNumber = handlerTerminatedError{}
-
-func (h handlerTerminatedError) Errno() fuse.Errno {
- return fuse.DefaultErrno
-}
-
-type handleNotReaderError struct {
- handle Handle
-}
-
-var _ error = handleNotReaderError{}
-
-func (e handleNotReaderError) Error() string {
- return fmt.Sprintf("handle has no Read: %T", e.handle)
-}
-
-var _ fuse.ErrorNumber = handleNotReaderError{}
-
-func (e handleNotReaderError) Errno() fuse.Errno {
- return fuse.ENOTSUP
-}
-
-func initLookupResponse(s *fuse.LookupResponse) {
- s.EntryValid = entryValidTime
-}
-
-func (c *Server) serve(r fuse.Request) {
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- parentCtx := ctx
- if c.context != nil {
- ctx = c.context(ctx, r)
- }
-
- req := &serveRequest{Request: r, cancel: cancel}
-
- c.debug(request{
- Op: opName(r),
- Request: r.Hdr(),
- In: r,
- })
- var node Node
- var snode *serveNode
- c.meta.Lock()
- hdr := r.Hdr()
- if id := hdr.Node; id != 0 {
- if id < fuse.NodeID(len(c.node)) {
- snode = c.node[uint(id)]
- }
- if snode == nil {
- c.meta.Unlock()
- c.debug(response{
- Op: opName(r),
- Request: logResponseHeader{ID: hdr.ID},
- Error: fuse.ESTALE.ErrnoName(),
- // this is the only place that sets both Error and
- // Out; not sure if i want to do that; might get rid
- // of len(c.node) things altogether
- Out: logMissingNode{
- MaxNode: fuse.NodeID(len(c.node)),
- },
- })
- r.RespondError(fuse.ESTALE)
- return
- }
- node = snode.node
- }
- if c.req[hdr.ID] != nil {
- // This happens with OSXFUSE. Assume it's okay and
- // that we'll never see an interrupt for this one.
- // Otherwise everything wedges. TODO: Report to OSXFUSE?
- //
- // TODO this might have been because of missing done() calls
- } else {
- c.req[hdr.ID] = req
- }
- c.meta.Unlock()
-
- // Call this before responding.
- // After responding is too late: we might get another request
- // with the same ID and be very confused.
- done := func(resp interface{}) {
- msg := response{
- Op: opName(r),
- Request: logResponseHeader{ID: hdr.ID},
- }
- if err, ok := resp.(error); ok {
- msg.Error = err.Error()
- if ferr, ok := err.(fuse.ErrorNumber); ok {
- errno := ferr.Errno()
- msg.Errno = errno.ErrnoName()
- if errno == err {
- // it's just a fuse.Errno with no extra detail;
- // skip the textual message for log readability
- msg.Error = ""
- }
- } else {
- msg.Errno = fuse.DefaultErrno.ErrnoName()
- }
- } else {
- msg.Out = resp
- }
- c.debug(msg)
-
- c.meta.Lock()
- delete(c.req, hdr.ID)
- c.meta.Unlock()
- }
-
- var responded bool
- defer func() {
- if rec := recover(); rec != nil {
- const size = 1 << 16
- buf := make([]byte, size)
- n := runtime.Stack(buf, false)
- buf = buf[:n]
- log.Printf("fuse: panic in handler for %v: %v\n%s", r, rec, buf)
- err := handlerPanickedError{
- Request: r,
- Err: rec,
- }
- done(err)
- r.RespondError(err)
- return
- }
-
- if !responded {
- err := handlerTerminatedError{
- Request: r,
- }
- done(err)
- r.RespondError(err)
- }
- }()
-
- if err := c.handleRequest(ctx, node, snode, r, done); err != nil {
- if err == context.Canceled {
- select {
- case <-parentCtx.Done():
- // We canceled the parent context because of an
- // incoming interrupt request, so return EINTR
- // to trigger the right behavior in the client app.
- //
- // Only do this when it's the parent context that was
- // canceled, not a context controlled by the program
- // using this library, so we don't return EINTR too
- // eagerly -- it might cause busy loops.
- //
- // Decent write-up on role of EINTR:
- // http://250bpm.com/blog:12
- err = fuse.EINTR
- default:
- // nothing
- }
- }
- done(err)
- r.RespondError(err)
- }
-
- // disarm runtime.Goexit protection
- responded = true
-}
-
-// handleRequest will either a) call done(s) and r.Respond(s) OR b) return an error.
-func (c *Server) handleRequest(ctx context.Context, node Node, snode *serveNode, r fuse.Request, done func(resp interface{})) error {
- switch r := r.(type) {
- default:
- // Note: To FUSE, ENOSYS means "this server never implements this request."
- // It would be inappropriate to return ENOSYS for other operations in this
- // switch that might only be unavailable in some contexts, not all.
- return fuse.ENOSYS
-
- case *fuse.StatfsRequest:
- s := &fuse.StatfsResponse{}
- if fs, ok := c.fs.(FSStatfser); ok {
- if err := fs.Statfs(ctx, r, s); err != nil {
- return err
- }
- }
- done(s)
- r.Respond(s)
- return nil
-
- // Node operations.
- case *fuse.GetattrRequest:
- s := &fuse.GetattrResponse{}
- if n, ok := node.(NodeGetattrer); ok {
- if err := n.Getattr(ctx, r, s); err != nil {
- return err
- }
- } else {
- if err := snode.attr(ctx, &s.Attr); err != nil {
- return err
- }
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.SetattrRequest:
- s := &fuse.SetattrResponse{}
- if n, ok := node.(NodeSetattrer); ok {
- if err := n.Setattr(ctx, r, s); err != nil {
- return err
- }
- }
-
- if err := snode.attr(ctx, &s.Attr); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.SymlinkRequest:
- s := &fuse.SymlinkResponse{}
- initLookupResponse(&s.LookupResponse)
- n, ok := node.(NodeSymlinker)
- if !ok {
- return fuse.EIO // XXX or EPERM like Mkdir?
- }
- n2, err := n.Symlink(ctx, r)
- if err != nil {
- return err
- }
- if err := c.saveLookup(ctx, &s.LookupResponse, snode, r.NewName, n2); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.ReadlinkRequest:
- n, ok := node.(NodeReadlinker)
- if !ok {
- return fuse.EIO /// XXX or EPERM?
- }
- target, err := n.Readlink(ctx, r)
- if err != nil {
- return err
- }
- done(target)
- r.Respond(target)
- return nil
-
- case *fuse.LinkRequest:
- n, ok := node.(NodeLinker)
- if !ok {
- return fuse.EIO /// XXX or EPERM?
- }
- c.meta.Lock()
- var oldNode *serveNode
- if int(r.OldNode) < len(c.node) {
- oldNode = c.node[r.OldNode]
- }
- c.meta.Unlock()
- if oldNode == nil {
- c.debug(logLinkRequestOldNodeNotFound{
- Request: r.Hdr(),
- In: r,
- })
- return fuse.EIO
- }
- n2, err := n.Link(ctx, r, oldNode.node)
- if err != nil {
- return err
- }
- s := &fuse.LookupResponse{}
- initLookupResponse(s)
- if err := c.saveLookup(ctx, s, snode, r.NewName, n2); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.RemoveRequest:
- n, ok := node.(NodeRemover)
- if !ok {
- return fuse.EIO /// XXX or EPERM?
- }
- err := n.Remove(ctx, r)
- if err != nil {
- return err
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.AccessRequest:
- if n, ok := node.(NodeAccesser); ok {
- if err := n.Access(ctx, r); err != nil {
- return err
- }
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.LookupRequest:
- var n2 Node
- var err error
- s := &fuse.LookupResponse{}
- initLookupResponse(s)
- if n, ok := node.(NodeStringLookuper); ok {
- n2, err = n.Lookup(ctx, r.Name)
- } else if n, ok := node.(NodeRequestLookuper); ok {
- n2, err = n.Lookup(ctx, r, s)
- } else {
- return fuse.ENOENT
- }
- if err != nil {
- return err
- }
- if err := c.saveLookup(ctx, s, snode, r.Name, n2); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.MkdirRequest:
- s := &fuse.MkdirResponse{}
- initLookupResponse(&s.LookupResponse)
- n, ok := node.(NodeMkdirer)
- if !ok {
- return fuse.EPERM
- }
- n2, err := n.Mkdir(ctx, r)
- if err != nil {
- return err
- }
- if err := c.saveLookup(ctx, &s.LookupResponse, snode, r.Name, n2); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.OpenRequest:
- s := &fuse.OpenResponse{}
- var h2 Handle
- if n, ok := node.(NodeOpener); ok {
- hh, err := n.Open(ctx, r, s)
- if err != nil {
- return err
- }
- h2 = hh
- } else {
- h2 = node
- }
- s.Handle = c.saveHandle(h2, r.Hdr().Node)
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.CreateRequest:
- n, ok := node.(NodeCreater)
- if !ok {
- // If we send back ENOSYS, FUSE will try mknod+open.
- return fuse.EPERM
- }
- s := &fuse.CreateResponse{OpenResponse: fuse.OpenResponse{}}
- initLookupResponse(&s.LookupResponse)
- n2, h2, err := n.Create(ctx, r, s)
- if err != nil {
- return err
- }
- if err := c.saveLookup(ctx, &s.LookupResponse, snode, r.Name, n2); err != nil {
- return err
- }
- s.Handle = c.saveHandle(h2, r.Hdr().Node)
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.GetxattrRequest:
- n, ok := node.(NodeGetxattrer)
- if !ok {
- return fuse.ENOTSUP
- }
- s := &fuse.GetxattrResponse{}
- err := n.Getxattr(ctx, r, s)
- if err != nil {
- return err
- }
- if r.Size != 0 && uint64(len(s.Xattr)) > uint64(r.Size) {
- return fuse.ERANGE
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.ListxattrRequest:
- n, ok := node.(NodeListxattrer)
- if !ok {
- return fuse.ENOTSUP
- }
- s := &fuse.ListxattrResponse{}
- err := n.Listxattr(ctx, r, s)
- if err != nil {
- return err
- }
- if r.Size != 0 && uint64(len(s.Xattr)) > uint64(r.Size) {
- return fuse.ERANGE
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.SetxattrRequest:
- n, ok := node.(NodeSetxattrer)
- if !ok {
- return fuse.ENOTSUP
- }
- err := n.Setxattr(ctx, r)
- if err != nil {
- return err
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.RemovexattrRequest:
- n, ok := node.(NodeRemovexattrer)
- if !ok {
- return fuse.ENOTSUP
- }
- err := n.Removexattr(ctx, r)
- if err != nil {
- return err
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.ForgetRequest:
- forget := c.dropNode(r.Hdr().Node, r.N)
- if forget {
- n, ok := node.(NodeForgetter)
- if ok {
- n.Forget()
- }
- }
- done(nil)
- r.Respond()
- return nil
-
- // Handle operations.
- case *fuse.ReadRequest:
- shandle := c.getHandle(r.Handle)
- if shandle == nil {
- return fuse.ESTALE
- }
- handle := shandle.handle
-
- s := &fuse.ReadResponse{Data: make([]byte, 0, r.Size)}
- if r.Dir {
- if h, ok := handle.(HandleReadDirAller); ok {
- // detect rewinddir(3) or similar seek and refresh
- // contents
- if r.Offset == 0 {
- shandle.readData = nil
- }
-
- if shandle.readData == nil {
- dirs, err := h.ReadDirAll(ctx)
- if err != nil {
- return err
- }
- var data []byte
- for _, dir := range dirs {
- if dir.Inode == 0 {
- dir.Inode = c.dynamicInode(snode.inode, dir.Name)
- }
- data = fuse.AppendDirent(data, dir)
- }
- shandle.readData = data
- }
- fuseutil.HandleRead(r, s, shandle.readData)
- done(s)
- r.Respond(s)
- return nil
- }
- } else {
- if h, ok := handle.(HandleReadAller); ok {
- if shandle.readData == nil {
- data, err := h.ReadAll(ctx)
- if err != nil {
- return err
- }
- if data == nil {
- data = []byte{}
- }
- shandle.readData = data
- }
- fuseutil.HandleRead(r, s, shandle.readData)
- done(s)
- r.Respond(s)
- return nil
- }
- h, ok := handle.(HandleReader)
- if !ok {
- err := handleNotReaderError{handle: handle}
- return err
- }
- if err := h.Read(ctx, r, s); err != nil {
- return err
- }
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.WriteRequest:
- shandle := c.getHandle(r.Handle)
- if shandle == nil {
- return fuse.ESTALE
- }
-
- s := &fuse.WriteResponse{}
- if h, ok := shandle.handle.(HandleWriter); ok {
- if err := h.Write(ctx, r, s); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
- }
- return fuse.EIO
-
- case *fuse.FlushRequest:
- shandle := c.getHandle(r.Handle)
- if shandle == nil {
- return fuse.ESTALE
- }
- handle := shandle.handle
-
- if h, ok := handle.(HandleFlusher); ok {
- if err := h.Flush(ctx, r); err != nil {
- return err
- }
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.ReleaseRequest:
- shandle := c.getHandle(r.Handle)
- if shandle == nil {
- return fuse.ESTALE
- }
- handle := shandle.handle
-
- // No matter what, release the handle.
- c.dropHandle(r.Handle)
-
- if h, ok := handle.(HandleReleaser); ok {
- if err := h.Release(ctx, r); err != nil {
- return err
- }
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.DestroyRequest:
- if fs, ok := c.fs.(FSDestroyer); ok {
- fs.Destroy()
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.RenameRequest:
- c.meta.Lock()
- var newDirNode *serveNode
- if int(r.NewDir) < len(c.node) {
- newDirNode = c.node[r.NewDir]
- }
- c.meta.Unlock()
- if newDirNode == nil {
- c.debug(renameNewDirNodeNotFound{
- Request: r.Hdr(),
- In: r,
- })
- return fuse.EIO
- }
- n, ok := node.(NodeRenamer)
- if !ok {
- return fuse.EIO // XXX or EPERM like Mkdir?
- }
- err := n.Rename(ctx, r, newDirNode.node)
- if err != nil {
- return err
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.MknodRequest:
- n, ok := node.(NodeMknoder)
- if !ok {
- return fuse.EIO
- }
- n2, err := n.Mknod(ctx, r)
- if err != nil {
- return err
- }
- s := &fuse.LookupResponse{}
- initLookupResponse(s)
- if err := c.saveLookup(ctx, s, snode, r.Name, n2); err != nil {
- return err
- }
- done(s)
- r.Respond(s)
- return nil
-
- case *fuse.FsyncRequest:
- n, ok := node.(NodeFsyncer)
- if !ok {
- return fuse.EIO
- }
- err := n.Fsync(ctx, r)
- if err != nil {
- return err
- }
- done(nil)
- r.Respond()
- return nil
-
- case *fuse.InterruptRequest:
- c.meta.Lock()
- ireq := c.req[r.IntrID]
- if ireq != nil && ireq.cancel != nil {
- ireq.cancel()
- ireq.cancel = nil
- }
- c.meta.Unlock()
- done(nil)
- r.Respond()
- return nil
-
- /* case *FsyncdirRequest:
- return ENOSYS
-
- case *GetlkRequest, *SetlkRequest, *SetlkwRequest:
- return ENOSYS
-
- case *BmapRequest:
- return ENOSYS
-
- case *SetvolnameRequest, *GetxtimesRequest, *ExchangeRequest:
- return ENOSYS
- */
- }
-
- panic("not reached")
-}
-
-func (c *Server) saveLookup(ctx context.Context, s *fuse.LookupResponse, snode *serveNode, elem string, n2 Node) error {
- if err := nodeAttr(ctx, n2, &s.Attr); err != nil {
- return err
- }
- if s.Attr.Inode == 0 {
- s.Attr.Inode = c.dynamicInode(snode.inode, elem)
- }
-
- s.Node, s.Generation = c.saveNode(s.Attr.Inode, n2)
- return nil
-}
-
-type invalidateNodeDetail struct {
- Off int64
- Size int64
-}
-
-func (i invalidateNodeDetail) String() string {
- return fmt.Sprintf("Off:%d Size:%d", i.Off, i.Size)
-}
-
-func errstr(err error) string {
- if err == nil {
- return ""
- }
- return err.Error()
-}
-
-func (s *Server) invalidateNode(node Node, off int64, size int64) error {
- s.meta.Lock()
- id, ok := s.nodeRef[node]
- if ok {
- snode := s.node[id]
- snode.wg.Add(1)
- defer snode.wg.Done()
- }
- s.meta.Unlock()
- if !ok {
- // This is what the kernel would have said, if we had been
- // able to send this message; it's not cached.
- return fuse.ErrNotCached
- }
- // Delay logging until after we can record the error too. We
- // consider a /dev/fuse write to be instantaneous enough to not
- // need separate before and after messages.
- err := s.conn.InvalidateNode(id, off, size)
- s.debug(notification{
- Op: "InvalidateNode",
- Node: id,
- Out: invalidateNodeDetail{
- Off: off,
- Size: size,
- },
- Err: errstr(err),
- })
- return err
-}
-
-// InvalidateNodeAttr invalidates the kernel cache of the attributes
-// of node.
-//
-// Returns fuse.ErrNotCached if the kernel is not currently caching
-// the node.
-func (s *Server) InvalidateNodeAttr(node Node) error {
- return s.invalidateNode(node, 0, 0)
-}
-
-// InvalidateNodeData invalidates the kernel cache of the attributes
-// and data of node.
-//
-// Returns fuse.ErrNotCached if the kernel is not currently caching
-// the node.
-func (s *Server) InvalidateNodeData(node Node) error {
- return s.invalidateNode(node, 0, -1)
-}
-
-// InvalidateNodeDataRange invalidates the kernel cache of the
-// attributes and a range of the data of node.
-//
-// Returns fuse.ErrNotCached if the kernel is not currently caching
-// the node.
-func (s *Server) InvalidateNodeDataRange(node Node, off int64, size int64) error {
- return s.invalidateNode(node, off, size)
-}
-
-type invalidateEntryDetail struct {
- Name string
-}
-
-func (i invalidateEntryDetail) String() string {
- return fmt.Sprintf("%q", i.Name)
-}
-
-// InvalidateEntry invalidates the kernel cache of the directory entry
-// identified by parent node and entry basename.
-//
-// Kernel may or may not cache directory listings. To invalidate
-// those, use InvalidateNode to invalidate all of the data for a
-// directory. (As of 2015-06, Linux FUSE does not cache directory
-// listings.)
-//
-// Returns ErrNotCached if the kernel is not currently caching the
-// node.
-func (s *Server) InvalidateEntry(parent Node, name string) error {
- s.meta.Lock()
- id, ok := s.nodeRef[parent]
- if ok {
- snode := s.node[id]
- snode.wg.Add(1)
- defer snode.wg.Done()
- }
- s.meta.Unlock()
- if !ok {
- // This is what the kernel would have said, if we had been
- // able to send this message; it's not cached.
- return fuse.ErrNotCached
- }
- err := s.conn.InvalidateEntry(id, name)
- s.debug(notification{
- Op: "InvalidateEntry",
- Node: id,
- Out: invalidateEntryDetail{
- Name: name,
- },
- Err: errstr(err),
- })
- return err
-}
-
-// DataHandle returns a read-only Handle that satisfies reads
-// using the given data.
-func DataHandle(data []byte) Handle {
- return &dataHandle{data}
-}
-
-type dataHandle struct {
- data []byte
-}
-
-func (d *dataHandle) ReadAll(ctx context.Context) ([]byte, error) {
- return d.data, nil
-}
-
-// GenerateDynamicInode returns a dynamic inode.
-//
-// The parent inode and current entry name are used as the criteria
-// for choosing a pseudorandom inode. This makes it likely the same
-// entry will get the same inode on multiple runs.
-func GenerateDynamicInode(parent uint64, name string) uint64 {
- h := fnv.New64a()
- var buf [8]byte
- binary.LittleEndian.PutUint64(buf[:], parent)
- _, _ = h.Write(buf[:])
- _, _ = h.Write([]byte(name))
- var inode uint64
- for {
- inode = h.Sum64()
- if inode != 0 {
- break
- }
- // there's a tiny probability that result is zero; change the
- // input a little and try again
- _, _ = h.Write([]byte{'x'})
- }
- return inode
-}
diff --git a/vendor/bazil.org/fuse/fs/tree.go b/vendor/bazil.org/fuse/fs/tree.go
deleted file mode 100644
index 7e078045a..000000000
--- a/vendor/bazil.org/fuse/fs/tree.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// FUSE directory tree, for servers that wish to use it with the service loop.
-
-package fs
-
-import (
- "os"
- pathpkg "path"
- "strings"
-
- "golang.org/x/net/context"
-)
-
-import (
- "bazil.org/fuse"
-)
-
-// A Tree implements a basic read-only directory tree for FUSE.
-// The Nodes contained in it may still be writable.
-type Tree struct {
- tree
-}
-
-func (t *Tree) Root() (Node, error) {
- return &t.tree, nil
-}
-
-// Add adds the path to the tree, resolving to the given node.
-// If path or a prefix of path has already been added to the tree,
-// Add panics.
-//
-// Add is only safe to call before starting to serve requests.
-func (t *Tree) Add(path string, node Node) {
- path = pathpkg.Clean("/" + path)[1:]
- elems := strings.Split(path, "/")
- dir := Node(&t.tree)
- for i, elem := range elems {
- dt, ok := dir.(*tree)
- if !ok {
- panic("fuse: Tree.Add for " + strings.Join(elems[:i], "/") + " and " + path)
- }
- n := dt.lookup(elem)
- if n != nil {
- if i+1 == len(elems) {
- panic("fuse: Tree.Add for " + path + " conflicts with " + elem)
- }
- dir = n
- } else {
- if i+1 == len(elems) {
- dt.add(elem, node)
- } else {
- dir = &tree{}
- dt.add(elem, dir)
- }
- }
- }
-}
-
-type treeDir struct {
- name string
- node Node
-}
-
-type tree struct {
- dir []treeDir
-}
-
-func (t *tree) lookup(name string) Node {
- for _, d := range t.dir {
- if d.name == name {
- return d.node
- }
- }
- return nil
-}
-
-func (t *tree) add(name string, n Node) {
- t.dir = append(t.dir, treeDir{name, n})
-}
-
-func (t *tree) Attr(ctx context.Context, a *fuse.Attr) error {
- a.Mode = os.ModeDir | 0555
- return nil
-}
-
-func (t *tree) Lookup(ctx context.Context, name string) (Node, error) {
- n := t.lookup(name)
- if n != nil {
- return n, nil
- }
- return nil, fuse.ENOENT
-}
-
-func (t *tree) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) {
- var out []fuse.Dirent
- for _, d := range t.dir {
- out = append(out, fuse.Dirent{Name: d.name})
- }
- return out, nil
-}
diff --git a/vendor/bazil.org/fuse/fuse.go b/vendor/bazil.org/fuse/fuse.go
deleted file mode 100644
index 6db0ef293..000000000
--- a/vendor/bazil.org/fuse/fuse.go
+++ /dev/null
@@ -1,2303 +0,0 @@
-// See the file LICENSE for copyright and licensing information.
-
-// Adapted from Plan 9 from User Space's src/cmd/9pfuse/fuse.c,
-// which carries this notice:
-//
-// The files in this directory are subject to the following license.
-//
-// The author of this software is Russ Cox.
-//
-// Copyright (c) 2006 Russ Cox
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose without fee is hereby granted, provided that this entire notice
-// is included in all copies of any software which is or includes a copy
-// or modification of this software and in all copies of the supporting
-// documentation for such software.
-//
-// THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
-// WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION OR WARRANTY
-// OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS
-// FITNESS FOR ANY PARTICULAR PURPOSE.
-
-// Package fuse enables writing FUSE file systems on Linux, OS X, and FreeBSD.
-//
-// On OS X, it requires OSXFUSE (http://osxfuse.github.com/).
-//
-// There are two approaches to writing a FUSE file system. The first is to speak
-// the low-level message protocol, reading from a Conn using ReadRequest and
-// writing using the various Respond methods. This approach is closest to
-// the actual interaction with the kernel and can be the simplest one in contexts
-// such as protocol translators.
-//
-// Servers of synthesized file systems tend to share common
-// bookkeeping abstracted away by the second approach, which is to
-// call fs.Serve to serve the FUSE protocol using an implementation of
-// the service methods in the interfaces FS* (file system), Node* (file
-// or directory), and Handle* (opened file or directory).
-// There are a daunting number of such methods that can be written,
-// but few are required.
-// The specific methods are described in the documentation for those interfaces.
-//
-// The hellofs subdirectory contains a simple illustration of the fs.Serve approach.
-//
-// Service Methods
-//
-// The required and optional methods for the FS, Node, and Handle interfaces
-// have the general form
-//
-// Op(ctx context.Context, req *OpRequest, resp *OpResponse) error
-//
-// where Op is the name of a FUSE operation. Op reads request
-// parameters from req and writes results to resp. An operation whose
-// only result is the error result omits the resp parameter.
-//
-// Multiple goroutines may call service methods simultaneously; the
-// methods being called are responsible for appropriate
-// synchronization.
-//
-// The operation must not hold on to the request or response,
-// including any []byte fields such as WriteRequest.Data or
-// SetxattrRequest.Xattr.
-//
-// Errors
-//
-// Operations can return errors. The FUSE interface can only
-// communicate POSIX errno error numbers to file system clients, the
-// message is not visible to file system clients. The returned error
-// can implement ErrorNumber to control the errno returned. Without
-// ErrorNumber, a generic errno (EIO) is returned.
-//
-// Error messages will be visible in the debug log as part of the
-// response.
-//
-// Interrupted Operations
-//
-// In some file systems, some operations
-// may take an undetermined amount of time. For example, a Read waiting for
-// a network message or a matching Write might wait indefinitely. If the request
-// is cancelled and no longer needed, the context will be cancelled.
-// Blocking operations should select on a receive from ctx.Done() and attempt to
-// abort the operation early if the receive succeeds (meaning the channel is closed).
-// To indicate that the operation failed because it was aborted, return fuse.EINTR.
-//
-// If an operation does not block for an indefinite amount of time, supporting
-// cancellation is not necessary.
-//
-// Authentication
-//
-// All requests types embed a Header, meaning that the method can
-// inspect req.Pid, req.Uid, and req.Gid as necessary to implement
-// permission checking. The kernel FUSE layer normally prevents other
-// users from accessing the FUSE file system (to change this, see
-// AllowOther, AllowRoot), but does not enforce access modes (to
-// change this, see DefaultPermissions).
-//
-// Mount Options
-//
-// Behavior and metadata of the mounted file system can be changed by
-// passing MountOption values to Mount.
-//
-package fuse // import "bazil.org/fuse"
-
-import (
- "bytes"
- "encoding/json"
- "errors"
- "fmt"
- "io"
- "os"
- "sync"
- "syscall"
- "time"
- "unsafe"
-)
-
-// A Conn represents a connection to a mounted FUSE file system.
-type Conn struct {
- // Ready is closed when the mount is complete or has failed.
- Ready <-chan struct{}
-
- // MountError stores any error from the mount process. Only valid
- // after Ready is closed.
- MountError error
-
- // File handle for kernel communication. Only safe to access if
- // rio or wio is held.
- dev *os.File
- wio sync.RWMutex
- rio sync.RWMutex
-
- // Protocol version negotiated with InitRequest/InitResponse.
- proto Protocol
-}
-
-// MountpointDoesNotExistError is an error returned when the
-// mountpoint does not exist.
-type MountpointDoesNotExistError struct {
- Path string
-}
-
-var _ error = (*MountpointDoesNotExistError)(nil)
-
-func (e *MountpointDoesNotExistError) Error() string {
- return fmt.Sprintf("mountpoint does not exist: %v", e.Path)
-}
-
-// Mount mounts a new FUSE connection on the named directory
-// and returns a connection for reading and writing FUSE messages.
-//
-// After a successful return, caller must call Close to free
-// resources.
-//
-// Even on successful return, the new mount is not guaranteed to be
-// visible until after Conn.Ready is closed. See Conn.MountError for
-// possible errors. Incoming requests on Conn must be served to make
-// progress.
-func Mount(dir string, options ...MountOption) (*Conn, error) {
- conf := mountConfig{
- options: make(map[string]string),
- }
- for _, option := range options {
- if err := option(&conf); err != nil {
- return nil, err
- }
- }
-
- ready := make(chan struct{}, 1)
- c := &Conn{
- Ready: ready,
- }
- f, err := mount(dir, &conf, ready, &c.MountError)
- if err != nil {
- return nil, err
- }
- c.dev = f
-
- if err := initMount(c, &conf); err != nil {
- c.Close()
- if err == ErrClosedWithoutInit {
- // see if we can provide a better error
- <-c.Ready
- if err := c.MountError; err != nil {
- return nil, err
- }
- }
- return nil, err
- }
-
- return c, nil
-}
-
-type OldVersionError struct {
- Kernel Protocol
- LibraryMin Protocol
-}
-
-func (e *OldVersionError) Error() string {
- return fmt.Sprintf("kernel FUSE version is too old: %v < %v", e.Kernel, e.LibraryMin)
-}
-
-var (
- ErrClosedWithoutInit = errors.New("fuse connection closed without init")
-)
-
-func initMount(c *Conn, conf *mountConfig) error {
- req, err := c.ReadRequest()
- if err != nil {
- if err == io.EOF {
- return ErrClosedWithoutInit
- }
- return err
- }
- r, ok := req.(*InitRequest)
- if !ok {
- return fmt.Errorf("missing init, got: %T", req)
- }
-
- min := Protocol{protoVersionMinMajor, protoVersionMinMinor}
- if r.Kernel.LT(min) {
- req.RespondError(Errno(syscall.EPROTO))
- c.Close()
- return &OldVersionError{
- Kernel: r.Kernel,
- LibraryMin: min,
- }
- }
-
- proto := Protocol{protoVersionMaxMajor, protoVersionMaxMinor}
- if r.Kernel.LT(proto) {
- // Kernel doesn't support the latest version we have.
- proto = r.Kernel
- }
- c.proto = proto
-
- s := &InitResponse{
- Library: proto,
- MaxReadahead: conf.maxReadahead,
- MaxWrite: maxWrite,
- Flags: InitBigWrites | conf.initFlags,
- }
- r.Respond(s)
- return nil
-}
-
-// A Request represents a single FUSE request received from the kernel.
-// Use a type switch to determine the specific kind.
-// A request of unrecognized type will have concrete type *Header.
-type Request interface {
- // Hdr returns the Header associated with this request.
- Hdr() *Header
-
- // RespondError responds to the request with the given error.
- RespondError(error)
-
- String() string
-}
-
-// A RequestID identifies an active FUSE request.
-type RequestID uint64
-
-func (r RequestID) String() string {
- return fmt.Sprintf("%#x", uint64(r))
-}
-
-// A NodeID is a number identifying a directory or file.
-// It must be unique among IDs returned in LookupResponses
-// that have not yet been forgotten by ForgetRequests.
-type NodeID uint64
-
-func (n NodeID) String() string {
- return fmt.Sprintf("%#x", uint64(n))
-}
-
-// A HandleID is a number identifying an open directory or file.
-// It only needs to be unique while the directory or file is open.
-type HandleID uint64
-
-func (h HandleID) String() string {
- return fmt.Sprintf("%#x", uint64(h))
-}
-
-// The RootID identifies the root directory of a FUSE file system.
-const RootID NodeID = rootID
-
-// A Header describes the basic information sent in every request.
-type Header struct {
- Conn *Conn `json:"-"` // connection this request was received on
- ID RequestID // unique ID for request
- Node NodeID // file or directory the request is about
- Uid uint32 // user ID of process making request
- Gid uint32 // group ID of process making request
- Pid uint32 // process ID of process making request
-
- // for returning to reqPool
- msg *message
-}
-
-func (h *Header) String() string {
- return fmt.Sprintf("ID=%v Node=%v Uid=%d Gid=%d Pid=%d", h.ID, h.Node, h.Uid, h.Gid, h.Pid)
-}
-
-func (h *Header) Hdr() *Header {
- return h
-}
-
-func (h *Header) noResponse() {
- putMessage(h.msg)
-}
-
-func (h *Header) respond(msg []byte) {
- out := (*outHeader)(unsafe.Pointer(&msg[0]))
- out.Unique = uint64(h.ID)
- h.Conn.respond(msg)
- putMessage(h.msg)
-}
-
-// An ErrorNumber is an error with a specific error number.
-//
-// Operations may return an error value that implements ErrorNumber to
-// control what specific error number (errno) to return.
-type ErrorNumber interface {
- // Errno returns the the error number (errno) for this error.
- Errno() Errno
-}
-
-const (
- // ENOSYS indicates that the call is not supported.
- ENOSYS = Errno(syscall.ENOSYS)
-
- // ESTALE is used by Serve to respond to violations of the FUSE protocol.
- ESTALE = Errno(syscall.ESTALE)
-
- ENOENT = Errno(syscall.ENOENT)
- EIO = Errno(syscall.EIO)
- EPERM = Errno(syscall.EPERM)
-
- // EINTR indicates request was interrupted by an InterruptRequest.
- // See also fs.Intr.
- EINTR = Errno(syscall.EINTR)
-
- ERANGE = Errno(syscall.ERANGE)
- ENOTSUP = Errno(syscall.ENOTSUP)
- EEXIST = Errno(syscall.EEXIST)
-)
-
-// DefaultErrno is the errno used when error returned does not
-// implement ErrorNumber.
-const DefaultErrno = EIO
-
-var errnoNames = map[Errno]string{
- ENOSYS: "ENOSYS",
- ESTALE: "ESTALE",
- ENOENT: "ENOENT",
- EIO: "EIO",
- EPERM: "EPERM",
- EINTR: "EINTR",
- EEXIST: "EEXIST",
-}
-
-// Errno implements Error and ErrorNumber using a syscall.Errno.
-type Errno syscall.Errno
-
-var _ = ErrorNumber(Errno(0))
-var _ = error(Errno(0))
-
-func (e Errno) Errno() Errno {
- return e
-}
-
-func (e Errno) String() string {
- return syscall.Errno(e).Error()
-}
-
-func (e Errno) Error() string {
- return syscall.Errno(e).Error()
-}
-
-// ErrnoName returns the short non-numeric identifier for this errno.
-// For example, "EIO".
-func (e Errno) ErrnoName() string {
- s := errnoNames[e]
- if s == "" {
- s = fmt.Sprint(e.Errno())
- }
- return s
-}
-
-func (e Errno) MarshalText() ([]byte, error) {
- s := e.ErrnoName()
- return []byte(s), nil
-}
-
-func (h *Header) RespondError(err error) {
- errno := DefaultErrno
- if ferr, ok := err.(ErrorNumber); ok {
- errno = ferr.Errno()
- }
- // FUSE uses negative errors!
- // TODO: File bug report against OSXFUSE: positive error causes kernel panic.
- buf := newBuffer(0)
- hOut := (*outHeader)(unsafe.Pointer(&buf[0]))
- hOut.Error = -int32(errno)
- h.respond(buf)
-}
-
-// All requests read from the kernel, without data, are shorter than
-// this.
-var maxRequestSize = syscall.Getpagesize()
-var bufSize = maxRequestSize + maxWrite
-
-// reqPool is a pool of messages.
-//
-// Lifetime of a logical message is from getMessage to putMessage.
-// getMessage is called by ReadRequest. putMessage is called by
-// Conn.ReadRequest, Request.Respond, or Request.RespondError.
-//
-// Messages in the pool are guaranteed to have conn and off zeroed,
-// buf allocated and len==bufSize, and hdr set.
-var reqPool = sync.Pool{
- New: allocMessage,
-}
-
-func allocMessage() interface{} {
- m := &message{buf: make([]byte, bufSize)}
- m.hdr = (*inHeader)(unsafe.Pointer(&m.buf[0]))
- return m
-}
-
-func getMessage(c *Conn) *message {
- m := reqPool.Get().(*message)
- m.conn = c
- return m
-}
-
-func putMessage(m *message) {
- m.buf = m.buf[:bufSize]
- m.conn = nil
- m.off = 0
- reqPool.Put(m)
-}
-
-// a message represents the bytes of a single FUSE message
-type message struct {
- conn *Conn
- buf []byte // all bytes
- hdr *inHeader // header
- off int // offset for reading additional fields
-}
-
-func (m *message) len() uintptr {
- return uintptr(len(m.buf) - m.off)
-}
-
-func (m *message) data() unsafe.Pointer {
- var p unsafe.Pointer
- if m.off < len(m.buf) {
- p = unsafe.Pointer(&m.buf[m.off])
- }
- return p
-}
-
-func (m *message) bytes() []byte {
- return m.buf[m.off:]
-}
-
-func (m *message) Header() Header {
- h := m.hdr
- return Header{
- Conn: m.conn,
- ID: RequestID(h.Unique),
- Node: NodeID(h.Nodeid),
- Uid: h.Uid,
- Gid: h.Gid,
- Pid: h.Pid,
-
- msg: m,
- }
-}
-
-// fileMode returns a Go os.FileMode from a Unix mode.
-func fileMode(unixMode uint32) os.FileMode {
- mode := os.FileMode(unixMode & 0777)
- switch unixMode & syscall.S_IFMT {
- case syscall.S_IFREG:
- // nothing
- case syscall.S_IFDIR:
- mode |= os.ModeDir
- case syscall.S_IFCHR:
- mode |= os.ModeCharDevice | os.ModeDevice
- case syscall.S_IFBLK:
- mode |= os.ModeDevice
- case syscall.S_IFIFO:
- mode |= os.ModeNamedPipe
- case syscall.S_IFLNK:
- mode |= os.ModeSymlink
- case syscall.S_IFSOCK:
- mode |= os.ModeSocket
- default:
- // no idea
- mode |= os.ModeDevice
- }
- if unixMode&syscall.S_ISUID != 0 {
- mode |= os.ModeSetuid
- }
- if unixMode&syscall.S_ISGID != 0 {
- mode |= os.ModeSetgid
- }
- return mode
-}
-
-type noOpcode struct {
- Opcode uint32
-}
-
-func (m noOpcode) String() string {
- return fmt.Sprintf("No opcode %v", m.Opcode)
-}
-
-type malformedMessage struct {
-}
-
-func (malformedMessage) String() string {
- return "malformed message"
-}
-
-// Close closes the FUSE connection.
-func (c *Conn) Close() error {
- c.wio.Lock()
- defer c.wio.Unlock()
- c.rio.Lock()
- defer c.rio.Unlock()
- return c.dev.Close()
-}
-
-// caller must hold wio or rio
-func (c *Conn) fd() int {
- return int(c.dev.Fd())
-}
-
-func (c *Conn) Protocol() Protocol {
- return c.proto
-}
-
-// ReadRequest returns the next FUSE request from the kernel.
-//
-// Caller must call either Request.Respond or Request.RespondError in
-// a reasonable time. Caller must not retain Request after that call.
-func (c *Conn) ReadRequest() (Request, error) {
- m := getMessage(c)
-loop:
- c.rio.RLock()
- n, err := syscall.Read(c.fd(), m.buf)
- c.rio.RUnlock()
- if err == syscall.EINTR {
- // OSXFUSE sends EINTR to userspace when a request interrupt
- // completed before it got sent to userspace?
- goto loop
- }
- if err != nil && err != syscall.ENODEV {
- putMessage(m)
- return nil, err
- }
- if n <= 0 {
- putMessage(m)
- return nil, io.EOF
- }
- m.buf = m.buf[:n]
-
- if n < inHeaderSize {
- putMessage(m)
- return nil, errors.New("fuse: message too short")
- }
-
- // FreeBSD FUSE sends a short length in the header
- // for FUSE_INIT even though the actual read length is correct.
- if n == inHeaderSize+initInSize && m.hdr.Opcode == opInit && m.hdr.Len < uint32(n) {
- m.hdr.Len = uint32(n)
- }
-
- // OSXFUSE sometimes sends the wrong m.hdr.Len in a FUSE_WRITE message.
- if m.hdr.Len < uint32(n) && m.hdr.Len >= uint32(unsafe.Sizeof(writeIn{})) && m.hdr.Opcode == opWrite {
- m.hdr.Len = uint32(n)
- }
-
- if m.hdr.Len != uint32(n) {
- // prepare error message before returning m to pool
- err := fmt.Errorf("fuse: read %d opcode %d but expected %d", n, m.hdr.Opcode, m.hdr.Len)
- putMessage(m)
- return nil, err
- }
-
- m.off = inHeaderSize
-
- // Convert to data structures.
- // Do not trust kernel to hand us well-formed data.
- var req Request
- switch m.hdr.Opcode {
- default:
- Debug(noOpcode{Opcode: m.hdr.Opcode})
- goto unrecognized
-
- case opLookup:
- buf := m.bytes()
- n := len(buf)
- if n == 0 || buf[n-1] != '\x00' {
- goto corrupt
- }
- req = &LookupRequest{
- Header: m.Header(),
- Name: string(buf[:n-1]),
- }
-
- case opForget:
- in := (*forgetIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &ForgetRequest{
- Header: m.Header(),
- N: in.Nlookup,
- }
-
- case opGetattr:
- switch {
- case c.proto.LT(Protocol{7, 9}):
- req = &GetattrRequest{
- Header: m.Header(),
- }
-
- default:
- in := (*getattrIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &GetattrRequest{
- Header: m.Header(),
- Flags: GetattrFlags(in.GetattrFlags),
- Handle: HandleID(in.Fh),
- }
- }
-
- case opSetattr:
- in := (*setattrIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &SetattrRequest{
- Header: m.Header(),
- Valid: SetattrValid(in.Valid),
- Handle: HandleID(in.Fh),
- Size: in.Size,
- Atime: time.Unix(int64(in.Atime), int64(in.AtimeNsec)),
- Mtime: time.Unix(int64(in.Mtime), int64(in.MtimeNsec)),
- Mode: fileMode(in.Mode),
- Uid: in.Uid,
- Gid: in.Gid,
- Bkuptime: in.BkupTime(),
- Chgtime: in.Chgtime(),
- Flags: in.Flags(),
- }
-
- case opReadlink:
- if len(m.bytes()) > 0 {
- goto corrupt
- }
- req = &ReadlinkRequest{
- Header: m.Header(),
- }
-
- case opSymlink:
- // m.bytes() is "newName\0target\0"
- names := m.bytes()
- if len(names) == 0 || names[len(names)-1] != 0 {
- goto corrupt
- }
- i := bytes.IndexByte(names, '\x00')
- if i < 0 {
- goto corrupt
- }
- newName, target := names[0:i], names[i+1:len(names)-1]
- req = &SymlinkRequest{
- Header: m.Header(),
- NewName: string(newName),
- Target: string(target),
- }
-
- case opLink:
- in := (*linkIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- newName := m.bytes()[unsafe.Sizeof(*in):]
- if len(newName) < 2 || newName[len(newName)-1] != 0 {
- goto corrupt
- }
- newName = newName[:len(newName)-1]
- req = &LinkRequest{
- Header: m.Header(),
- OldNode: NodeID(in.Oldnodeid),
- NewName: string(newName),
- }
-
- case opMknod:
- size := mknodInSize(c.proto)
- if m.len() < size {
- goto corrupt
- }
- in := (*mknodIn)(m.data())
- name := m.bytes()[size:]
- if len(name) < 2 || name[len(name)-1] != '\x00' {
- goto corrupt
- }
- name = name[:len(name)-1]
- r := &MknodRequest{
- Header: m.Header(),
- Mode: fileMode(in.Mode),
- Rdev: in.Rdev,
- Name: string(name),
- }
- if c.proto.GE(Protocol{7, 12}) {
- r.Umask = fileMode(in.Umask) & os.ModePerm
- }
- req = r
-
- case opMkdir:
- size := mkdirInSize(c.proto)
- if m.len() < size {
- goto corrupt
- }
- in := (*mkdirIn)(m.data())
- name := m.bytes()[size:]
- i := bytes.IndexByte(name, '\x00')
- if i < 0 {
- goto corrupt
- }
- r := &MkdirRequest{
- Header: m.Header(),
- Name: string(name[:i]),
- // observed on Linux: mkdirIn.Mode & syscall.S_IFMT == 0,
- // and this causes fileMode to go into it's "no idea"
- // code branch; enforce type to directory
- Mode: fileMode((in.Mode &^ syscall.S_IFMT) | syscall.S_IFDIR),
- }
- if c.proto.GE(Protocol{7, 12}) {
- r.Umask = fileMode(in.Umask) & os.ModePerm
- }
- req = r
-
- case opUnlink, opRmdir:
- buf := m.bytes()
- n := len(buf)
- if n == 0 || buf[n-1] != '\x00' {
- goto corrupt
- }
- req = &RemoveRequest{
- Header: m.Header(),
- Name: string(buf[:n-1]),
- Dir: m.hdr.Opcode == opRmdir,
- }
-
- case opRename:
- in := (*renameIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- newDirNodeID := NodeID(in.Newdir)
- oldNew := m.bytes()[unsafe.Sizeof(*in):]
- // oldNew should be "old\x00new\x00"
- if len(oldNew) < 4 {
- goto corrupt
- }
- if oldNew[len(oldNew)-1] != '\x00' {
- goto corrupt
- }
- i := bytes.IndexByte(oldNew, '\x00')
- if i < 0 {
- goto corrupt
- }
- oldName, newName := string(oldNew[:i]), string(oldNew[i+1:len(oldNew)-1])
- req = &RenameRequest{
- Header: m.Header(),
- NewDir: newDirNodeID,
- OldName: oldName,
- NewName: newName,
- }
-
- case opOpendir, opOpen:
- in := (*openIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &OpenRequest{
- Header: m.Header(),
- Dir: m.hdr.Opcode == opOpendir,
- Flags: openFlags(in.Flags),
- }
-
- case opRead, opReaddir:
- in := (*readIn)(m.data())
- if m.len() < readInSize(c.proto) {
- goto corrupt
- }
- r := &ReadRequest{
- Header: m.Header(),
- Dir: m.hdr.Opcode == opReaddir,
- Handle: HandleID(in.Fh),
- Offset: int64(in.Offset),
- Size: int(in.Size),
- }
- if c.proto.GE(Protocol{7, 9}) {
- r.Flags = ReadFlags(in.ReadFlags)
- r.LockOwner = in.LockOwner
- r.FileFlags = openFlags(in.Flags)
- }
- req = r
-
- case opWrite:
- in := (*writeIn)(m.data())
- if m.len() < writeInSize(c.proto) {
- goto corrupt
- }
- r := &WriteRequest{
- Header: m.Header(),
- Handle: HandleID(in.Fh),
- Offset: int64(in.Offset),
- Flags: WriteFlags(in.WriteFlags),
- }
- if c.proto.GE(Protocol{7, 9}) {
- r.LockOwner = in.LockOwner
- r.FileFlags = openFlags(in.Flags)
- }
- buf := m.bytes()[writeInSize(c.proto):]
- if uint32(len(buf)) < in.Size {
- goto corrupt
- }
- r.Data = buf
- req = r
-
- case opStatfs:
- req = &StatfsRequest{
- Header: m.Header(),
- }
-
- case opRelease, opReleasedir:
- in := (*releaseIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &ReleaseRequest{
- Header: m.Header(),
- Dir: m.hdr.Opcode == opReleasedir,
- Handle: HandleID(in.Fh),
- Flags: openFlags(in.Flags),
- ReleaseFlags: ReleaseFlags(in.ReleaseFlags),
- LockOwner: in.LockOwner,
- }
-
- case opFsync, opFsyncdir:
- in := (*fsyncIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &FsyncRequest{
- Dir: m.hdr.Opcode == opFsyncdir,
- Header: m.Header(),
- Handle: HandleID(in.Fh),
- Flags: in.FsyncFlags,
- }
-
- case opSetxattr:
- in := (*setxattrIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- m.off += int(unsafe.Sizeof(*in))
- name := m.bytes()
- i := bytes.IndexByte(name, '\x00')
- if i < 0 {
- goto corrupt
- }
- xattr := name[i+1:]
- if uint32(len(xattr)) < in.Size {
- goto corrupt
- }
- xattr = xattr[:in.Size]
- req = &SetxattrRequest{
- Header: m.Header(),
- Flags: in.Flags,
- Position: in.position(),
- Name: string(name[:i]),
- Xattr: xattr,
- }
-
- case opGetxattr:
- in := (*getxattrIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- name := m.bytes()[unsafe.Sizeof(*in):]
- i := bytes.IndexByte(name, '\x00')
- if i < 0 {
- goto corrupt
- }
- req = &GetxattrRequest{
- Header: m.Header(),
- Name: string(name[:i]),
- Size: in.Size,
- Position: in.position(),
- }
-
- case opListxattr:
- in := (*getxattrIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &ListxattrRequest{
- Header: m.Header(),
- Size: in.Size,
- Position: in.position(),
- }
-
- case opRemovexattr:
- buf := m.bytes()
- n := len(buf)
- if n == 0 || buf[n-1] != '\x00' {
- goto corrupt
- }
- req = &RemovexattrRequest{
- Header: m.Header(),
- Name: string(buf[:n-1]),
- }
-
- case opFlush:
- in := (*flushIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &FlushRequest{
- Header: m.Header(),
- Handle: HandleID(in.Fh),
- Flags: in.FlushFlags,
- LockOwner: in.LockOwner,
- }
-
- case opInit:
- in := (*initIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &InitRequest{
- Header: m.Header(),
- Kernel: Protocol{in.Major, in.Minor},
- MaxReadahead: in.MaxReadahead,
- Flags: InitFlags(in.Flags),
- }
-
- case opGetlk:
- panic("opGetlk")
- case opSetlk:
- panic("opSetlk")
- case opSetlkw:
- panic("opSetlkw")
-
- case opAccess:
- in := (*accessIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &AccessRequest{
- Header: m.Header(),
- Mask: in.Mask,
- }
-
- case opCreate:
- size := createInSize(c.proto)
- if m.len() < size {
- goto corrupt
- }
- in := (*createIn)(m.data())
- name := m.bytes()[size:]
- i := bytes.IndexByte(name, '\x00')
- if i < 0 {
- goto corrupt
- }
- r := &CreateRequest{
- Header: m.Header(),
- Flags: openFlags(in.Flags),
- Mode: fileMode(in.Mode),
- Name: string(name[:i]),
- }
- if c.proto.GE(Protocol{7, 12}) {
- r.Umask = fileMode(in.Umask) & os.ModePerm
- }
- req = r
-
- case opInterrupt:
- in := (*interruptIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- req = &InterruptRequest{
- Header: m.Header(),
- IntrID: RequestID(in.Unique),
- }
-
- case opBmap:
- panic("opBmap")
-
- case opDestroy:
- req = &DestroyRequest{
- Header: m.Header(),
- }
-
- // OS X
- case opSetvolname:
- panic("opSetvolname")
- case opGetxtimes:
- panic("opGetxtimes")
- case opExchange:
- in := (*exchangeIn)(m.data())
- if m.len() < unsafe.Sizeof(*in) {
- goto corrupt
- }
- oldDirNodeID := NodeID(in.Olddir)
- newDirNodeID := NodeID(in.Newdir)
- oldNew := m.bytes()[unsafe.Sizeof(*in):]
- // oldNew should be "oldname\x00newname\x00"
- if len(oldNew) < 4 {
- goto corrupt
- }
- if oldNew[len(oldNew)-1] != '\x00' {
- goto corrupt
- }
- i := bytes.IndexByte(oldNew, '\x00')
- if i < 0 {
- goto corrupt
- }
- oldName, newName := string(oldNew[:i]), string(oldNew[i+1:len(oldNew)-1])
- req = &ExchangeDataRequest{
- Header: m.Header(),
- OldDir: oldDirNodeID,
- NewDir: newDirNodeID,
- OldName: oldName,
- NewName: newName,
- // TODO options
- }
- }
-
- return req, nil
-
-corrupt:
- Debug(malformedMessage{})
- putMessage(m)
- return nil, fmt.Errorf("fuse: malformed message")
-
-unrecognized:
- // Unrecognized message.
- // Assume higher-level code will send a "no idea what you mean" error.
- h := m.Header()
- return &h, nil
-}
-
-type bugShortKernelWrite struct {
- Written int64
- Length int64
- Error string
- Stack string
-}
-
-func (b bugShortKernelWrite) String() string {
- return fmt.Sprintf("short kernel write: written=%d/%d error=%q stack=\n%s", b.Written, b.Length, b.Error, b.Stack)
-}
-
-type bugKernelWriteError struct {
- Error string
- Stack string
-}
-
-func (b bugKernelWriteError) String() string {
- return fmt.Sprintf("kernel write error: error=%q stack=\n%s", b.Error, b.Stack)
-}
-
-// safe to call even with nil error
-func errorString(err error) string {
- if err == nil {
- return ""
- }
- return err.Error()
-}
-
-func (c *Conn) writeToKernel(msg []byte) error {
- out := (*outHeader)(unsafe.Pointer(&msg[0]))
- out.Len = uint32(len(msg))
-
- c.wio.RLock()
- defer c.wio.RUnlock()
- nn, err := syscall.Write(c.fd(), msg)
- if err == nil && nn != len(msg) {
- Debug(bugShortKernelWrite{
- Written: int64(nn),
- Length: int64(len(msg)),
- Error: errorString(err),
- Stack: stack(),
- })
- }
- return err
-}
-
-func (c *Conn) respond(msg []byte) {
- if err := c.writeToKernel(msg); err != nil {
- Debug(bugKernelWriteError{
- Error: errorString(err),
- Stack: stack(),
- })
- }
-}
-
-type notCachedError struct{}
-
-func (notCachedError) Error() string {
- return "node not cached"
-}
-
-var _ ErrorNumber = notCachedError{}
-
-func (notCachedError) Errno() Errno {
- // Behave just like if the original syscall.ENOENT had been passed
- // straight through.
- return ENOENT
-}
-
-var (
- ErrNotCached = notCachedError{}
-)
-
-// sendInvalidate sends an invalidate notification to kernel.
-//
-// A returned ENOENT is translated to a friendlier error.
-func (c *Conn) sendInvalidate(msg []byte) error {
- switch err := c.writeToKernel(msg); err {
- case syscall.ENOENT:
- return ErrNotCached
- default:
- return err
- }
-}
-
-// InvalidateNode invalidates the kernel cache of the attributes and a
-// range of the data of a node.
-//
-// Giving offset 0 and size -1 means all data. To invalidate just the
-// attributes, give offset 0 and size 0.
-//
-// Returns ErrNotCached if the kernel is not currently caching the
-// node.
-func (c *Conn) InvalidateNode(nodeID NodeID, off int64, size int64) error {
- buf := newBuffer(unsafe.Sizeof(notifyInvalInodeOut{}))
- h := (*outHeader)(unsafe.Pointer(&buf[0]))
- // h.Unique is 0
- h.Error = notifyCodeInvalInode
- out := (*notifyInvalInodeOut)(buf.alloc(unsafe.Sizeof(notifyInvalInodeOut{})))
- out.Ino = uint64(nodeID)
- out.Off = off
- out.Len = size
- return c.sendInvalidate(buf)
-}
-
-// InvalidateEntry invalidates the kernel cache of the directory entry
-// identified by parent directory node ID and entry basename.
-//
-// Kernel may or may not cache directory listings. To invalidate
-// those, use InvalidateNode to invalidate all of the data for a
-// directory. (As of 2015-06, Linux FUSE does not cache directory
-// listings.)
-//
-// Returns ErrNotCached if the kernel is not currently caching the
-// node.
-func (c *Conn) InvalidateEntry(parent NodeID, name string) error {
- const maxUint32 = ^uint32(0)
- if uint64(len(name)) > uint64(maxUint32) {
- // very unlikely, but we don't want to silently truncate
- return syscall.ENAMETOOLONG
- }
- buf := newBuffer(unsafe.Sizeof(notifyInvalEntryOut{}) + uintptr(len(name)) + 1)
- h := (*outHeader)(unsafe.Pointer(&buf[0]))
- // h.Unique is 0
- h.Error = notifyCodeInvalEntry
- out := (*notifyInvalEntryOut)(buf.alloc(unsafe.Sizeof(notifyInvalEntryOut{})))
- out.Parent = uint64(parent)
- out.Namelen = uint32(len(name))
- buf = append(buf, name...)
- buf = append(buf, '\x00')
- return c.sendInvalidate(buf)
-}
-
-// An InitRequest is the first request sent on a FUSE file system.
-type InitRequest struct {
- Header `json:"-"`
- Kernel Protocol
- // Maximum readahead in bytes that the kernel plans to use.
- MaxReadahead uint32
- Flags InitFlags
-}
-
-var _ = Request(&InitRequest{})
-
-func (r *InitRequest) String() string {
- return fmt.Sprintf("Init [%v] %v ra=%d fl=%v", &r.Header, r.Kernel, r.MaxReadahead, r.Flags)
-}
-
-// An InitResponse is the response to an InitRequest.
-type InitResponse struct {
- Library Protocol
- // Maximum readahead in bytes that the kernel can use. Ignored if
- // greater than InitRequest.MaxReadahead.
- MaxReadahead uint32
- Flags InitFlags
- // Maximum size of a single write operation.
- // Linux enforces a minimum of 4 KiB.
- MaxWrite uint32
-}
-
-func (r *InitResponse) String() string {
- return fmt.Sprintf("Init %v ra=%d fl=%v w=%d", r.Library, r.MaxReadahead, r.Flags, r.MaxWrite)
-}
-
-// Respond replies to the request with the given response.
-func (r *InitRequest) Respond(resp *InitResponse) {
- buf := newBuffer(unsafe.Sizeof(initOut{}))
- out := (*initOut)(buf.alloc(unsafe.Sizeof(initOut{})))
- out.Major = resp.Library.Major
- out.Minor = resp.Library.Minor
- out.MaxReadahead = resp.MaxReadahead
- out.Flags = uint32(resp.Flags)
- out.MaxWrite = resp.MaxWrite
-
- // MaxWrite larger than our receive buffer would just lead to
- // errors on large writes.
- if out.MaxWrite > maxWrite {
- out.MaxWrite = maxWrite
- }
- r.respond(buf)
-}
-
-// A StatfsRequest requests information about the mounted file system.
-type StatfsRequest struct {
- Header `json:"-"`
-}
-
-var _ = Request(&StatfsRequest{})
-
-func (r *StatfsRequest) String() string {
- return fmt.Sprintf("Statfs [%s]", &r.Header)
-}
-
-// Respond replies to the request with the given response.
-func (r *StatfsRequest) Respond(resp *StatfsResponse) {
- buf := newBuffer(unsafe.Sizeof(statfsOut{}))
- out := (*statfsOut)(buf.alloc(unsafe.Sizeof(statfsOut{})))
- out.St = kstatfs{
- Blocks: resp.Blocks,
- Bfree: resp.Bfree,
- Bavail: resp.Bavail,
- Files: resp.Files,
- Bsize: resp.Bsize,
- Namelen: resp.Namelen,
- Frsize: resp.Frsize,
- }
- r.respond(buf)
-}
-
-// A StatfsResponse is the response to a StatfsRequest.
-type StatfsResponse struct {
- Blocks uint64 // Total data blocks in file system.
- Bfree uint64 // Free blocks in file system.
- Bavail uint64 // Free blocks in file system if you're not root.
- Files uint64 // Total files in file system.
- Ffree uint64 // Free files in file system.
- Bsize uint32 // Block size
- Namelen uint32 // Maximum file name length?
- Frsize uint32 // Fragment size, smallest addressable data size in the file system.
-}
-
-func (r *StatfsResponse) String() string {
- return fmt.Sprintf("Statfs blocks=%d/%d/%d files=%d/%d bsize=%d frsize=%d namelen=%d",
- r.Bavail, r.Bfree, r.Blocks,
- r.Ffree, r.Files,
- r.Bsize,
- r.Frsize,
- r.Namelen,
- )
-}
-
-// An AccessRequest asks whether the file can be accessed
-// for the purpose specified by the mask.
-type AccessRequest struct {
- Header `json:"-"`
- Mask uint32
-}
-
-var _ = Request(&AccessRequest{})
-
-func (r *AccessRequest) String() string {
- return fmt.Sprintf("Access [%s] mask=%#x", &r.Header, r.Mask)
-}
-
-// Respond replies to the request indicating that access is allowed.
-// To deny access, use RespondError.
-func (r *AccessRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// An Attr is the metadata for a single file or directory.
-type Attr struct {
- Valid time.Duration // how long Attr can be cached
-
- Inode uint64 // inode number
- Size uint64 // size in bytes
- Blocks uint64 // size in 512-byte units
- Atime time.Time // time of last access
- Mtime time.Time // time of last modification
- Ctime time.Time // time of last inode change
- Crtime time.Time // time of creation (OS X only)
- Mode os.FileMode // file mode
- Nlink uint32 // number of links (usually 1)
- Uid uint32 // owner uid
- Gid uint32 // group gid
- Rdev uint32 // device numbers
- Flags uint32 // chflags(2) flags (OS X only)
- BlockSize uint32 // preferred blocksize for filesystem I/O
-}
-
-func (a Attr) String() string {
- return fmt.Sprintf("valid=%v ino=%v size=%d mode=%v", a.Valid, a.Inode, a.Size, a.Mode)
-}
-
-func unix(t time.Time) (sec uint64, nsec uint32) {
- nano := t.UnixNano()
- sec = uint64(nano / 1e9)
- nsec = uint32(nano % 1e9)
- return
-}
-
-func (a *Attr) attr(out *attr, proto Protocol) {
- out.Ino = a.Inode
- out.Size = a.Size
- out.Blocks = a.Blocks
- out.Atime, out.AtimeNsec = unix(a.Atime)
- out.Mtime, out.MtimeNsec = unix(a.Mtime)
- out.Ctime, out.CtimeNsec = unix(a.Ctime)
- out.SetCrtime(unix(a.Crtime))
- out.Mode = uint32(a.Mode) & 0777
- switch {
- default:
- out.Mode |= syscall.S_IFREG
- case a.Mode&os.ModeDir != 0:
- out.Mode |= syscall.S_IFDIR
- case a.Mode&os.ModeDevice != 0:
- if a.Mode&os.ModeCharDevice != 0 {
- out.Mode |= syscall.S_IFCHR
- } else {
- out.Mode |= syscall.S_IFBLK
- }
- case a.Mode&os.ModeNamedPipe != 0:
- out.Mode |= syscall.S_IFIFO
- case a.Mode&os.ModeSymlink != 0:
- out.Mode |= syscall.S_IFLNK
- case a.Mode&os.ModeSocket != 0:
- out.Mode |= syscall.S_IFSOCK
- }
- if a.Mode&os.ModeSetuid != 0 {
- out.Mode |= syscall.S_ISUID
- }
- if a.Mode&os.ModeSetgid != 0 {
- out.Mode |= syscall.S_ISGID
- }
- out.Nlink = a.Nlink
- out.Uid = a.Uid
- out.Gid = a.Gid
- out.Rdev = a.Rdev
- out.SetFlags(a.Flags)
- if proto.GE(Protocol{7, 9}) {
- out.Blksize = a.BlockSize
- }
-
- return
-}
-
-// A GetattrRequest asks for the metadata for the file denoted by r.Node.
-type GetattrRequest struct {
- Header `json:"-"`
- Flags GetattrFlags
- Handle HandleID
-}
-
-var _ = Request(&GetattrRequest{})
-
-func (r *GetattrRequest) String() string {
- return fmt.Sprintf("Getattr [%s] %v fl=%v", &r.Header, r.Handle, r.Flags)
-}
-
-// Respond replies to the request with the given response.
-func (r *GetattrRequest) Respond(resp *GetattrResponse) {
- size := attrOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*attrOut)(buf.alloc(size))
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-// A GetattrResponse is the response to a GetattrRequest.
-type GetattrResponse struct {
- Attr Attr // file attributes
-}
-
-func (r *GetattrResponse) String() string {
- return fmt.Sprintf("Getattr %v", r.Attr)
-}
-
-// A GetxattrRequest asks for the extended attributes associated with r.Node.
-type GetxattrRequest struct {
- Header `json:"-"`
-
- // Maximum size to return.
- Size uint32
-
- // Name of the attribute requested.
- Name string
-
- // Offset within extended attributes.
- //
- // Only valid for OS X, and then only with the resource fork
- // attribute.
- Position uint32
-}
-
-var _ = Request(&GetxattrRequest{})
-
-func (r *GetxattrRequest) String() string {
- return fmt.Sprintf("Getxattr [%s] %q %d @%d", &r.Header, r.Name, r.Size, r.Position)
-}
-
-// Respond replies to the request with the given response.
-func (r *GetxattrRequest) Respond(resp *GetxattrResponse) {
- if r.Size == 0 {
- buf := newBuffer(unsafe.Sizeof(getxattrOut{}))
- out := (*getxattrOut)(buf.alloc(unsafe.Sizeof(getxattrOut{})))
- out.Size = uint32(len(resp.Xattr))
- r.respond(buf)
- } else {
- buf := newBuffer(uintptr(len(resp.Xattr)))
- buf = append(buf, resp.Xattr...)
- r.respond(buf)
- }
-}
-
-// A GetxattrResponse is the response to a GetxattrRequest.
-type GetxattrResponse struct {
- Xattr []byte
-}
-
-func (r *GetxattrResponse) String() string {
- return fmt.Sprintf("Getxattr %x", r.Xattr)
-}
-
-// A ListxattrRequest asks to list the extended attributes associated with r.Node.
-type ListxattrRequest struct {
- Header `json:"-"`
- Size uint32 // maximum size to return
- Position uint32 // offset within attribute list
-}
-
-var _ = Request(&ListxattrRequest{})
-
-func (r *ListxattrRequest) String() string {
- return fmt.Sprintf("Listxattr [%s] %d @%d", &r.Header, r.Size, r.Position)
-}
-
-// Respond replies to the request with the given response.
-func (r *ListxattrRequest) Respond(resp *ListxattrResponse) {
- if r.Size == 0 {
- buf := newBuffer(unsafe.Sizeof(getxattrOut{}))
- out := (*getxattrOut)(buf.alloc(unsafe.Sizeof(getxattrOut{})))
- out.Size = uint32(len(resp.Xattr))
- r.respond(buf)
- } else {
- buf := newBuffer(uintptr(len(resp.Xattr)))
- buf = append(buf, resp.Xattr...)
- r.respond(buf)
- }
-}
-
-// A ListxattrResponse is the response to a ListxattrRequest.
-type ListxattrResponse struct {
- Xattr []byte
-}
-
-func (r *ListxattrResponse) String() string {
- return fmt.Sprintf("Listxattr %x", r.Xattr)
-}
-
-// Append adds an extended attribute name to the response.
-func (r *ListxattrResponse) Append(names ...string) {
- for _, name := range names {
- r.Xattr = append(r.Xattr, name...)
- r.Xattr = append(r.Xattr, '\x00')
- }
-}
-
-// A RemovexattrRequest asks to remove an extended attribute associated with r.Node.
-type RemovexattrRequest struct {
- Header `json:"-"`
- Name string // name of extended attribute
-}
-
-var _ = Request(&RemovexattrRequest{})
-
-func (r *RemovexattrRequest) String() string {
- return fmt.Sprintf("Removexattr [%s] %q", &r.Header, r.Name)
-}
-
-// Respond replies to the request, indicating that the attribute was removed.
-func (r *RemovexattrRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// A SetxattrRequest asks to set an extended attribute associated with a file.
-type SetxattrRequest struct {
- Header `json:"-"`
-
- // Flags can make the request fail if attribute does/not already
- // exist. Unfortunately, the constants are platform-specific and
- // not exposed by Go1.2. Look for XATTR_CREATE, XATTR_REPLACE.
- //
- // TODO improve this later
- //
- // TODO XATTR_CREATE and exist -> EEXIST
- //
- // TODO XATTR_REPLACE and not exist -> ENODATA
- Flags uint32
-
- // Offset within extended attributes.
- //
- // Only valid for OS X, and then only with the resource fork
- // attribute.
- Position uint32
-
- Name string
- Xattr []byte
-}
-
-var _ = Request(&SetxattrRequest{})
-
-func trunc(b []byte, max int) ([]byte, string) {
- if len(b) > max {
- return b[:max], "..."
- }
- return b, ""
-}
-
-func (r *SetxattrRequest) String() string {
- xattr, tail := trunc(r.Xattr, 16)
- return fmt.Sprintf("Setxattr [%s] %q %x%s fl=%v @%#x", &r.Header, r.Name, xattr, tail, r.Flags, r.Position)
-}
-
-// Respond replies to the request, indicating that the extended attribute was set.
-func (r *SetxattrRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// A LookupRequest asks to look up the given name in the directory named by r.Node.
-type LookupRequest struct {
- Header `json:"-"`
- Name string
-}
-
-var _ = Request(&LookupRequest{})
-
-func (r *LookupRequest) String() string {
- return fmt.Sprintf("Lookup [%s] %q", &r.Header, r.Name)
-}
-
-// Respond replies to the request with the given response.
-func (r *LookupRequest) Respond(resp *LookupResponse) {
- size := entryOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*entryOut)(buf.alloc(size))
- out.Nodeid = uint64(resp.Node)
- out.Generation = resp.Generation
- out.EntryValid = uint64(resp.EntryValid / time.Second)
- out.EntryValidNsec = uint32(resp.EntryValid % time.Second / time.Nanosecond)
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-// A LookupResponse is the response to a LookupRequest.
-type LookupResponse struct {
- Node NodeID
- Generation uint64
- EntryValid time.Duration
- Attr Attr
-}
-
-func (r *LookupResponse) string() string {
- return fmt.Sprintf("%v gen=%d valid=%v attr={%v}", r.Node, r.Generation, r.EntryValid, r.Attr)
-}
-
-func (r *LookupResponse) String() string {
- return fmt.Sprintf("Lookup %s", r.string())
-}
-
-// An OpenRequest asks to open a file or directory
-type OpenRequest struct {
- Header `json:"-"`
- Dir bool // is this Opendir?
- Flags OpenFlags
-}
-
-var _ = Request(&OpenRequest{})
-
-func (r *OpenRequest) String() string {
- return fmt.Sprintf("Open [%s] dir=%v fl=%v", &r.Header, r.Dir, r.Flags)
-}
-
-// Respond replies to the request with the given response.
-func (r *OpenRequest) Respond(resp *OpenResponse) {
- buf := newBuffer(unsafe.Sizeof(openOut{}))
- out := (*openOut)(buf.alloc(unsafe.Sizeof(openOut{})))
- out.Fh = uint64(resp.Handle)
- out.OpenFlags = uint32(resp.Flags)
- r.respond(buf)
-}
-
-// A OpenResponse is the response to a OpenRequest.
-type OpenResponse struct {
- Handle HandleID
- Flags OpenResponseFlags
-}
-
-func (r *OpenResponse) string() string {
- return fmt.Sprintf("%v fl=%v", r.Handle, r.Flags)
-}
-
-func (r *OpenResponse) String() string {
- return fmt.Sprintf("Open %s", r.string())
-}
-
-// A CreateRequest asks to create and open a file (not a directory).
-type CreateRequest struct {
- Header `json:"-"`
- Name string
- Flags OpenFlags
- Mode os.FileMode
- // Umask of the request. Not supported on OS X.
- Umask os.FileMode
-}
-
-var _ = Request(&CreateRequest{})
-
-func (r *CreateRequest) String() string {
- return fmt.Sprintf("Create [%s] %q fl=%v mode=%v umask=%v", &r.Header, r.Name, r.Flags, r.Mode, r.Umask)
-}
-
-// Respond replies to the request with the given response.
-func (r *CreateRequest) Respond(resp *CreateResponse) {
- eSize := entryOutSize(r.Header.Conn.proto)
- buf := newBuffer(eSize + unsafe.Sizeof(openOut{}))
-
- e := (*entryOut)(buf.alloc(eSize))
- e.Nodeid = uint64(resp.Node)
- e.Generation = resp.Generation
- e.EntryValid = uint64(resp.EntryValid / time.Second)
- e.EntryValidNsec = uint32(resp.EntryValid % time.Second / time.Nanosecond)
- e.AttrValid = uint64(resp.Attr.Valid / time.Second)
- e.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&e.Attr, r.Header.Conn.proto)
-
- o := (*openOut)(buf.alloc(unsafe.Sizeof(openOut{})))
- o.Fh = uint64(resp.Handle)
- o.OpenFlags = uint32(resp.Flags)
-
- r.respond(buf)
-}
-
-// A CreateResponse is the response to a CreateRequest.
-// It describes the created node and opened handle.
-type CreateResponse struct {
- LookupResponse
- OpenResponse
-}
-
-func (r *CreateResponse) String() string {
- return fmt.Sprintf("Create {%s} {%s}", r.LookupResponse.string(), r.OpenResponse.string())
-}
-
-// A MkdirRequest asks to create (but not open) a directory.
-type MkdirRequest struct {
- Header `json:"-"`
- Name string
- Mode os.FileMode
- // Umask of the request. Not supported on OS X.
- Umask os.FileMode
-}
-
-var _ = Request(&MkdirRequest{})
-
-func (r *MkdirRequest) String() string {
- return fmt.Sprintf("Mkdir [%s] %q mode=%v umask=%v", &r.Header, r.Name, r.Mode, r.Umask)
-}
-
-// Respond replies to the request with the given response.
-func (r *MkdirRequest) Respond(resp *MkdirResponse) {
- size := entryOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*entryOut)(buf.alloc(size))
- out.Nodeid = uint64(resp.Node)
- out.Generation = resp.Generation
- out.EntryValid = uint64(resp.EntryValid / time.Second)
- out.EntryValidNsec = uint32(resp.EntryValid % time.Second / time.Nanosecond)
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-// A MkdirResponse is the response to a MkdirRequest.
-type MkdirResponse struct {
- LookupResponse
-}
-
-func (r *MkdirResponse) String() string {
- return fmt.Sprintf("Mkdir %v", r.LookupResponse.string())
-}
-
-// A ReadRequest asks to read from an open file.
-type ReadRequest struct {
- Header `json:"-"`
- Dir bool // is this Readdir?
- Handle HandleID
- Offset int64
- Size int
- Flags ReadFlags
- LockOwner uint64
- FileFlags OpenFlags
-}
-
-var _ = Request(&ReadRequest{})
-
-func (r *ReadRequest) String() string {
- return fmt.Sprintf("Read [%s] %v %d @%#x dir=%v fl=%v lock=%d ffl=%v", &r.Header, r.Handle, r.Size, r.Offset, r.Dir, r.Flags, r.LockOwner, r.FileFlags)
-}
-
-// Respond replies to the request with the given response.
-func (r *ReadRequest) Respond(resp *ReadResponse) {
- buf := newBuffer(uintptr(len(resp.Data)))
- buf = append(buf, resp.Data...)
- r.respond(buf)
-}
-
-// A ReadResponse is the response to a ReadRequest.
-type ReadResponse struct {
- Data []byte
-}
-
-func (r *ReadResponse) String() string {
- return fmt.Sprintf("Read %d", len(r.Data))
-}
-
-type jsonReadResponse struct {
- Len uint64
-}
-
-func (r *ReadResponse) MarshalJSON() ([]byte, error) {
- j := jsonReadResponse{
- Len: uint64(len(r.Data)),
- }
- return json.Marshal(j)
-}
-
-// A ReleaseRequest asks to release (close) an open file handle.
-type ReleaseRequest struct {
- Header `json:"-"`
- Dir bool // is this Releasedir?
- Handle HandleID
- Flags OpenFlags // flags from OpenRequest
- ReleaseFlags ReleaseFlags
- LockOwner uint32
-}
-
-var _ = Request(&ReleaseRequest{})
-
-func (r *ReleaseRequest) String() string {
- return fmt.Sprintf("Release [%s] %v fl=%v rfl=%v owner=%#x", &r.Header, r.Handle, r.Flags, r.ReleaseFlags, r.LockOwner)
-}
-
-// Respond replies to the request, indicating that the handle has been released.
-func (r *ReleaseRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// A DestroyRequest is sent by the kernel when unmounting the file system.
-// No more requests will be received after this one, but it should still be
-// responded to.
-type DestroyRequest struct {
- Header `json:"-"`
-}
-
-var _ = Request(&DestroyRequest{})
-
-func (r *DestroyRequest) String() string {
- return fmt.Sprintf("Destroy [%s]", &r.Header)
-}
-
-// Respond replies to the request.
-func (r *DestroyRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// A ForgetRequest is sent by the kernel when forgetting about r.Node
-// as returned by r.N lookup requests.
-type ForgetRequest struct {
- Header `json:"-"`
- N uint64
-}
-
-var _ = Request(&ForgetRequest{})
-
-func (r *ForgetRequest) String() string {
- return fmt.Sprintf("Forget [%s] %d", &r.Header, r.N)
-}
-
-// Respond replies to the request, indicating that the forgetfulness has been recorded.
-func (r *ForgetRequest) Respond() {
- // Don't reply to forget messages.
- r.noResponse()
-}
-
-// A Dirent represents a single directory entry.
-type Dirent struct {
- // Inode this entry names.
- Inode uint64
-
- // Type of the entry, for example DT_File.
- //
- // Setting this is optional. The zero value (DT_Unknown) means
- // callers will just need to do a Getattr when the type is
- // needed. Providing a type can speed up operations
- // significantly.
- Type DirentType
-
- // Name of the entry
- Name string
-}
-
-// Type of an entry in a directory listing.
-type DirentType uint32
-
-const (
- // These don't quite match os.FileMode; especially there's an
- // explicit unknown, instead of zero value meaning file. They
- // are also not quite syscall.DT_*; nothing says the FUSE
- // protocol follows those, and even if they were, we don't
- // want each fs to fiddle with syscall.
-
- // The shift by 12 is hardcoded in the FUSE userspace
- // low-level C library, so it's safe here.
-
- DT_Unknown DirentType = 0
- DT_Socket DirentType = syscall.S_IFSOCK >> 12
- DT_Link DirentType = syscall.S_IFLNK >> 12
- DT_File DirentType = syscall.S_IFREG >> 12
- DT_Block DirentType = syscall.S_IFBLK >> 12
- DT_Dir DirentType = syscall.S_IFDIR >> 12
- DT_Char DirentType = syscall.S_IFCHR >> 12
- DT_FIFO DirentType = syscall.S_IFIFO >> 12
-)
-
-func (t DirentType) String() string {
- switch t {
- case DT_Unknown:
- return "unknown"
- case DT_Socket:
- return "socket"
- case DT_Link:
- return "link"
- case DT_File:
- return "file"
- case DT_Block:
- return "block"
- case DT_Dir:
- return "dir"
- case DT_Char:
- return "char"
- case DT_FIFO:
- return "fifo"
- }
- return "invalid"
-}
-
-// AppendDirent appends the encoded form of a directory entry to data
-// and returns the resulting slice.
-func AppendDirent(data []byte, dir Dirent) []byte {
- de := dirent{
- Ino: dir.Inode,
- Namelen: uint32(len(dir.Name)),
- Type: uint32(dir.Type),
- }
- de.Off = uint64(len(data) + direntSize + (len(dir.Name)+7)&^7)
- data = append(data, (*[direntSize]byte)(unsafe.Pointer(&de))[:]...)
- data = append(data, dir.Name...)
- n := direntSize + uintptr(len(dir.Name))
- if n%8 != 0 {
- var pad [8]byte
- data = append(data, pad[:8-n%8]...)
- }
- return data
-}
-
-// A WriteRequest asks to write to an open file.
-type WriteRequest struct {
- Header
- Handle HandleID
- Offset int64
- Data []byte
- Flags WriteFlags
- LockOwner uint64
- FileFlags OpenFlags
-}
-
-var _ = Request(&WriteRequest{})
-
-func (r *WriteRequest) String() string {
- return fmt.Sprintf("Write [%s] %v %d @%d fl=%v lock=%d ffl=%v", &r.Header, r.Handle, len(r.Data), r.Offset, r.Flags, r.LockOwner, r.FileFlags)
-}
-
-type jsonWriteRequest struct {
- Handle HandleID
- Offset int64
- Len uint64
- Flags WriteFlags
-}
-
-func (r *WriteRequest) MarshalJSON() ([]byte, error) {
- j := jsonWriteRequest{
- Handle: r.Handle,
- Offset: r.Offset,
- Len: uint64(len(r.Data)),
- Flags: r.Flags,
- }
- return json.Marshal(j)
-}
-
-// Respond replies to the request with the given response.
-func (r *WriteRequest) Respond(resp *WriteResponse) {
- buf := newBuffer(unsafe.Sizeof(writeOut{}))
- out := (*writeOut)(buf.alloc(unsafe.Sizeof(writeOut{})))
- out.Size = uint32(resp.Size)
- r.respond(buf)
-}
-
-// A WriteResponse replies to a write indicating how many bytes were written.
-type WriteResponse struct {
- Size int
-}
-
-func (r *WriteResponse) String() string {
- return fmt.Sprintf("Write %d", r.Size)
-}
-
-// A SetattrRequest asks to change one or more attributes associated with a file,
-// as indicated by Valid.
-type SetattrRequest struct {
- Header `json:"-"`
- Valid SetattrValid
- Handle HandleID
- Size uint64
- Atime time.Time
- Mtime time.Time
- Mode os.FileMode
- Uid uint32
- Gid uint32
-
- // OS X only
- Bkuptime time.Time
- Chgtime time.Time
- Crtime time.Time
- Flags uint32 // see chflags(2)
-}
-
-var _ = Request(&SetattrRequest{})
-
-func (r *SetattrRequest) String() string {
- var buf bytes.Buffer
- fmt.Fprintf(&buf, "Setattr [%s]", &r.Header)
- if r.Valid.Mode() {
- fmt.Fprintf(&buf, " mode=%v", r.Mode)
- }
- if r.Valid.Uid() {
- fmt.Fprintf(&buf, " uid=%d", r.Uid)
- }
- if r.Valid.Gid() {
- fmt.Fprintf(&buf, " gid=%d", r.Gid)
- }
- if r.Valid.Size() {
- fmt.Fprintf(&buf, " size=%d", r.Size)
- }
- if r.Valid.Atime() {
- fmt.Fprintf(&buf, " atime=%v", r.Atime)
- }
- if r.Valid.AtimeNow() {
- fmt.Fprintf(&buf, " atime=now")
- }
- if r.Valid.Mtime() {
- fmt.Fprintf(&buf, " mtime=%v", r.Mtime)
- }
- if r.Valid.MtimeNow() {
- fmt.Fprintf(&buf, " mtime=now")
- }
- if r.Valid.Handle() {
- fmt.Fprintf(&buf, " handle=%v", r.Handle)
- } else {
- fmt.Fprintf(&buf, " handle=INVALID-%v", r.Handle)
- }
- if r.Valid.LockOwner() {
- fmt.Fprintf(&buf, " lockowner")
- }
- if r.Valid.Crtime() {
- fmt.Fprintf(&buf, " crtime=%v", r.Crtime)
- }
- if r.Valid.Chgtime() {
- fmt.Fprintf(&buf, " chgtime=%v", r.Chgtime)
- }
- if r.Valid.Bkuptime() {
- fmt.Fprintf(&buf, " bkuptime=%v", r.Bkuptime)
- }
- if r.Valid.Flags() {
- fmt.Fprintf(&buf, " flags=%v", r.Flags)
- }
- return buf.String()
-}
-
-// Respond replies to the request with the given response,
-// giving the updated attributes.
-func (r *SetattrRequest) Respond(resp *SetattrResponse) {
- size := attrOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*attrOut)(buf.alloc(size))
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-// A SetattrResponse is the response to a SetattrRequest.
-type SetattrResponse struct {
- Attr Attr // file attributes
-}
-
-func (r *SetattrResponse) String() string {
- return fmt.Sprintf("Setattr %v", r.Attr)
-}
-
-// A FlushRequest asks for the current state of an open file to be flushed
-// to storage, as when a file descriptor is being closed. A single opened Handle
-// may receive multiple FlushRequests over its lifetime.
-type FlushRequest struct {
- Header `json:"-"`
- Handle HandleID
- Flags uint32
- LockOwner uint64
-}
-
-var _ = Request(&FlushRequest{})
-
-func (r *FlushRequest) String() string {
- return fmt.Sprintf("Flush [%s] %v fl=%#x lk=%#x", &r.Header, r.Handle, r.Flags, r.LockOwner)
-}
-
-// Respond replies to the request, indicating that the flush succeeded.
-func (r *FlushRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// A RemoveRequest asks to remove a file or directory from the
-// directory r.Node.
-type RemoveRequest struct {
- Header `json:"-"`
- Name string // name of the entry to remove
- Dir bool // is this rmdir?
-}
-
-var _ = Request(&RemoveRequest{})
-
-func (r *RemoveRequest) String() string {
- return fmt.Sprintf("Remove [%s] %q dir=%v", &r.Header, r.Name, r.Dir)
-}
-
-// Respond replies to the request, indicating that the file was removed.
-func (r *RemoveRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// A SymlinkRequest is a request to create a symlink making NewName point to Target.
-type SymlinkRequest struct {
- Header `json:"-"`
- NewName, Target string
-}
-
-var _ = Request(&SymlinkRequest{})
-
-func (r *SymlinkRequest) String() string {
- return fmt.Sprintf("Symlink [%s] from %q to target %q", &r.Header, r.NewName, r.Target)
-}
-
-// Respond replies to the request, indicating that the symlink was created.
-func (r *SymlinkRequest) Respond(resp *SymlinkResponse) {
- size := entryOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*entryOut)(buf.alloc(size))
- out.Nodeid = uint64(resp.Node)
- out.Generation = resp.Generation
- out.EntryValid = uint64(resp.EntryValid / time.Second)
- out.EntryValidNsec = uint32(resp.EntryValid % time.Second / time.Nanosecond)
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-// A SymlinkResponse is the response to a SymlinkRequest.
-type SymlinkResponse struct {
- LookupResponse
-}
-
-func (r *SymlinkResponse) String() string {
- return fmt.Sprintf("Symlink %v", r.LookupResponse.string())
-}
-
-// A ReadlinkRequest is a request to read a symlink's target.
-type ReadlinkRequest struct {
- Header `json:"-"`
-}
-
-var _ = Request(&ReadlinkRequest{})
-
-func (r *ReadlinkRequest) String() string {
- return fmt.Sprintf("Readlink [%s]", &r.Header)
-}
-
-func (r *ReadlinkRequest) Respond(target string) {
- buf := newBuffer(uintptr(len(target)))
- buf = append(buf, target...)
- r.respond(buf)
-}
-
-// A LinkRequest is a request to create a hard link.
-type LinkRequest struct {
- Header `json:"-"`
- OldNode NodeID
- NewName string
-}
-
-var _ = Request(&LinkRequest{})
-
-func (r *LinkRequest) String() string {
- return fmt.Sprintf("Link [%s] node %d to %q", &r.Header, r.OldNode, r.NewName)
-}
-
-func (r *LinkRequest) Respond(resp *LookupResponse) {
- size := entryOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*entryOut)(buf.alloc(size))
- out.Nodeid = uint64(resp.Node)
- out.Generation = resp.Generation
- out.EntryValid = uint64(resp.EntryValid / time.Second)
- out.EntryValidNsec = uint32(resp.EntryValid % time.Second / time.Nanosecond)
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-// A RenameRequest is a request to rename a file.
-type RenameRequest struct {
- Header `json:"-"`
- NewDir NodeID
- OldName, NewName string
-}
-
-var _ = Request(&RenameRequest{})
-
-func (r *RenameRequest) String() string {
- return fmt.Sprintf("Rename [%s] from %q to dirnode %v %q", &r.Header, r.OldName, r.NewDir, r.NewName)
-}
-
-func (r *RenameRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-type MknodRequest struct {
- Header `json:"-"`
- Name string
- Mode os.FileMode
- Rdev uint32
- // Umask of the request. Not supported on OS X.
- Umask os.FileMode
-}
-
-var _ = Request(&MknodRequest{})
-
-func (r *MknodRequest) String() string {
- return fmt.Sprintf("Mknod [%s] Name %q mode=%v umask=%v rdev=%d", &r.Header, r.Name, r.Mode, r.Umask, r.Rdev)
-}
-
-func (r *MknodRequest) Respond(resp *LookupResponse) {
- size := entryOutSize(r.Header.Conn.proto)
- buf := newBuffer(size)
- out := (*entryOut)(buf.alloc(size))
- out.Nodeid = uint64(resp.Node)
- out.Generation = resp.Generation
- out.EntryValid = uint64(resp.EntryValid / time.Second)
- out.EntryValidNsec = uint32(resp.EntryValid % time.Second / time.Nanosecond)
- out.AttrValid = uint64(resp.Attr.Valid / time.Second)
- out.AttrValidNsec = uint32(resp.Attr.Valid % time.Second / time.Nanosecond)
- resp.Attr.attr(&out.Attr, r.Header.Conn.proto)
- r.respond(buf)
-}
-
-type FsyncRequest struct {
- Header `json:"-"`
- Handle HandleID
- // TODO bit 1 is datasync, not well documented upstream
- Flags uint32
- Dir bool
-}
-
-var _ = Request(&FsyncRequest{})
-
-func (r *FsyncRequest) String() string {
- return fmt.Sprintf("Fsync [%s] Handle %v Flags %v", &r.Header, r.Handle, r.Flags)
-}
-
-func (r *FsyncRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
-
-// An InterruptRequest is a request to interrupt another pending request. The
-// response to that request should return an error status of EINTR.
-type InterruptRequest struct {
- Header `json:"-"`
- IntrID RequestID // ID of the request to be interrupt.
-}
-
-var _ = Request(&InterruptRequest{})
-
-func (r *InterruptRequest) Respond() {
- // nothing to do here
- r.noResponse()
-}
-
-func (r *InterruptRequest) String() string {
- return fmt.Sprintf("Interrupt [%s] ID %v", &r.Header, r.IntrID)
-}
-
-// An ExchangeDataRequest is a request to exchange the contents of two
-// files, while leaving most metadata untouched.
-//
-// This request comes from OS X exchangedata(2) and represents its
-// specific semantics. Crucially, it is very different from Linux
-// renameat(2) RENAME_EXCHANGE.
-//
-// https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/exchangedata.2.html
-type ExchangeDataRequest struct {
- Header `json:"-"`
- OldDir, NewDir NodeID
- OldName, NewName string
- // TODO options
-}
-
-var _ = Request(&ExchangeDataRequest{})
-
-func (r *ExchangeDataRequest) String() string {
- // TODO options
- return fmt.Sprintf("ExchangeData [%s] %v %q and %v %q", &r.Header, r.OldDir, r.OldName, r.NewDir, r.NewName)
-}
-
-func (r *ExchangeDataRequest) Respond() {
- buf := newBuffer(0)
- r.respond(buf)
-}
diff --git a/vendor/bazil.org/fuse/fuse.iml b/vendor/bazil.org/fuse/fuse.iml
deleted file mode 100644
index 792ad4c30..000000000
--- a/vendor/bazil.org/fuse/fuse.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="GO_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="true">
- <exclude-output />
- <content url="file://$MODULE_DIR$" />
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module> \ No newline at end of file
diff --git a/vendor/bazil.org/fuse/fuse_darwin.go b/vendor/bazil.org/fuse/fuse_darwin.go
deleted file mode 100644
index b58dca97d..000000000
--- a/vendor/bazil.org/fuse/fuse_darwin.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package fuse
-
-// Maximum file write size we are prepared to receive from the kernel.
-//
-// This value has to be >=16MB or OSXFUSE (3.4.0 observed) will
-// forcibly close the /dev/fuse file descriptor on a Setxattr with a
-// 16MB value. See TestSetxattr16MB and
-// https://github.com/bazil/fuse/issues/42
-const maxWrite = 16 * 1024 * 1024
diff --git a/vendor/bazil.org/fuse/fuse_freebsd.go b/vendor/bazil.org/fuse/fuse_freebsd.go
deleted file mode 100644
index 4aa83a0d4..000000000
--- a/vendor/bazil.org/fuse/fuse_freebsd.go
+++ /dev/null
@@ -1,6 +0,0 @@
-package fuse
-
-// Maximum file write size we are prepared to receive from the kernel.
-//
-// This number is just a guess.
-const maxWrite = 128 * 1024
diff --git a/vendor/bazil.org/fuse/fuse_kernel.go b/vendor/bazil.org/fuse/fuse_kernel.go
deleted file mode 100644
index 87c5ca1dc..000000000
--- a/vendor/bazil.org/fuse/fuse_kernel.go
+++ /dev/null
@@ -1,774 +0,0 @@
-// See the file LICENSE for copyright and licensing information.
-
-// Derived from FUSE's fuse_kernel.h, which carries this notice:
-/*
- This file defines the kernel interface of FUSE
- Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu>
-
-
- This -- and only this -- header file may also be distributed under
- the terms of the BSD Licence as follows:
-
- Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. 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.
-
- THIS SOFTWARE IS PROVIDED BY AUTHOR 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 AUTHOR 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.
-*/
-
-package fuse
-
-import (
- "fmt"
- "syscall"
- "unsafe"
-)
-
-// The FUSE version implemented by the package.
-const (
- protoVersionMinMajor = 7
- protoVersionMinMinor = 8
- protoVersionMaxMajor = 7
- protoVersionMaxMinor = 12
-)
-
-const (
- rootID = 1
-)
-
-type kstatfs struct {
- Blocks uint64
- Bfree uint64
- Bavail uint64
- Files uint64
- Ffree uint64
- Bsize uint32
- Namelen uint32
- Frsize uint32
- _ uint32
- Spare [6]uint32
-}
-
-type fileLock struct {
- Start uint64
- End uint64
- Type uint32
- Pid uint32
-}
-
-// GetattrFlags are bit flags that can be seen in GetattrRequest.
-type GetattrFlags uint32
-
-const (
- // Indicates the handle is valid.
- GetattrFh GetattrFlags = 1 << 0
-)
-
-var getattrFlagsNames = []flagName{
- {uint32(GetattrFh), "GetattrFh"},
-}
-
-func (fl GetattrFlags) String() string {
- return flagString(uint32(fl), getattrFlagsNames)
-}
-
-// The SetattrValid are bit flags describing which fields in the SetattrRequest
-// are included in the change.
-type SetattrValid uint32
-
-const (
- SetattrMode SetattrValid = 1 << 0
- SetattrUid SetattrValid = 1 << 1
- SetattrGid SetattrValid = 1 << 2
- SetattrSize SetattrValid = 1 << 3
- SetattrAtime SetattrValid = 1 << 4
- SetattrMtime SetattrValid = 1 << 5
- SetattrHandle SetattrValid = 1 << 6
-
- // Linux only(?)
- SetattrAtimeNow SetattrValid = 1 << 7
- SetattrMtimeNow SetattrValid = 1 << 8
- SetattrLockOwner SetattrValid = 1 << 9 // http://www.mail-archive.com/git-commits-head@vger.kernel.org/msg27852.html
-
- // OS X only
- SetattrCrtime SetattrValid = 1 << 28
- SetattrChgtime SetattrValid = 1 << 29
- SetattrBkuptime SetattrValid = 1 << 30
- SetattrFlags SetattrValid = 1 << 31
-)
-
-func (fl SetattrValid) Mode() bool { return fl&SetattrMode != 0 }
-func (fl SetattrValid) Uid() bool { return fl&SetattrUid != 0 }
-func (fl SetattrValid) Gid() bool { return fl&SetattrGid != 0 }
-func (fl SetattrValid) Size() bool { return fl&SetattrSize != 0 }
-func (fl SetattrValid) Atime() bool { return fl&SetattrAtime != 0 }
-func (fl SetattrValid) Mtime() bool { return fl&SetattrMtime != 0 }
-func (fl SetattrValid) Handle() bool { return fl&SetattrHandle != 0 }
-func (fl SetattrValid) AtimeNow() bool { return fl&SetattrAtimeNow != 0 }
-func (fl SetattrValid) MtimeNow() bool { return fl&SetattrMtimeNow != 0 }
-func (fl SetattrValid) LockOwner() bool { return fl&SetattrLockOwner != 0 }
-func (fl SetattrValid) Crtime() bool { return fl&SetattrCrtime != 0 }
-func (fl SetattrValid) Chgtime() bool { return fl&SetattrChgtime != 0 }
-func (fl SetattrValid) Bkuptime() bool { return fl&SetattrBkuptime != 0 }
-func (fl SetattrValid) Flags() bool { return fl&SetattrFlags != 0 }
-
-func (fl SetattrValid) String() string {
- return flagString(uint32(fl), setattrValidNames)
-}
-
-var setattrValidNames = []flagName{
- {uint32(SetattrMode), "SetattrMode"},
- {uint32(SetattrUid), "SetattrUid"},
- {uint32(SetattrGid), "SetattrGid"},
- {uint32(SetattrSize), "SetattrSize"},
- {uint32(SetattrAtime), "SetattrAtime"},
- {uint32(SetattrMtime), "SetattrMtime"},
- {uint32(SetattrHandle), "SetattrHandle"},
- {uint32(SetattrAtimeNow), "SetattrAtimeNow"},
- {uint32(SetattrMtimeNow), "SetattrMtimeNow"},
- {uint32(SetattrLockOwner), "SetattrLockOwner"},
- {uint32(SetattrCrtime), "SetattrCrtime"},
- {uint32(SetattrChgtime), "SetattrChgtime"},
- {uint32(SetattrBkuptime), "SetattrBkuptime"},
- {uint32(SetattrFlags), "SetattrFlags"},
-}
-
-// Flags that can be seen in OpenRequest.Flags.
-const (
- // Access modes. These are not 1-bit flags, but alternatives where
- // only one can be chosen. See the IsReadOnly etc convenience
- // methods.
- OpenReadOnly OpenFlags = syscall.O_RDONLY
- OpenWriteOnly OpenFlags = syscall.O_WRONLY
- OpenReadWrite OpenFlags = syscall.O_RDWR
-
- // File was opened in append-only mode, all writes will go to end
- // of file. OS X does not provide this information.
- OpenAppend OpenFlags = syscall.O_APPEND
- OpenCreate OpenFlags = syscall.O_CREAT
- OpenDirectory OpenFlags = syscall.O_DIRECTORY
- OpenExclusive OpenFlags = syscall.O_EXCL
- OpenNonblock OpenFlags = syscall.O_NONBLOCK
- OpenSync OpenFlags = syscall.O_SYNC
- OpenTruncate OpenFlags = syscall.O_TRUNC
-)
-
-// OpenAccessModeMask is a bitmask that separates the access mode
-// from the other flags in OpenFlags.
-const OpenAccessModeMask OpenFlags = syscall.O_ACCMODE
-
-// OpenFlags are the O_FOO flags passed to open/create/etc calls. For
-// example, os.O_WRONLY | os.O_APPEND.
-type OpenFlags uint32
-
-func (fl OpenFlags) String() string {
- // O_RDONLY, O_RWONLY, O_RDWR are not flags
- s := accModeName(fl & OpenAccessModeMask)
- flags := uint32(fl &^ OpenAccessModeMask)
- if flags != 0 {
- s = s + "+" + flagString(flags, openFlagNames)
- }
- return s
-}
-
-// Return true if OpenReadOnly is set.
-func (fl OpenFlags) IsReadOnly() bool {
- return fl&OpenAccessModeMask == OpenReadOnly
-}
-
-// Return true if OpenWriteOnly is set.
-func (fl OpenFlags) IsWriteOnly() bool {
- return fl&OpenAccessModeMask == OpenWriteOnly
-}
-
-// Return true if OpenReadWrite is set.
-func (fl OpenFlags) IsReadWrite() bool {
- return fl&OpenAccessModeMask == OpenReadWrite
-}
-
-func accModeName(flags OpenFlags) string {
- switch flags {
- case OpenReadOnly:
- return "OpenReadOnly"
- case OpenWriteOnly:
- return "OpenWriteOnly"
- case OpenReadWrite:
- return "OpenReadWrite"
- default:
- return ""
- }
-}
-
-var openFlagNames = []flagName{
- {uint32(OpenAppend), "OpenAppend"},
- {uint32(OpenCreate), "OpenCreate"},
- {uint32(OpenDirectory), "OpenDirectory"},
- {uint32(OpenExclusive), "OpenExclusive"},
- {uint32(OpenNonblock), "OpenNonblock"},
- {uint32(OpenSync), "OpenSync"},
- {uint32(OpenTruncate), "OpenTruncate"},
-}
-
-// The OpenResponseFlags are returned in the OpenResponse.
-type OpenResponseFlags uint32
-
-const (
- OpenDirectIO OpenResponseFlags = 1 << 0 // bypass page cache for this open file
- OpenKeepCache OpenResponseFlags = 1 << 1 // don't invalidate the data cache on open
- OpenNonSeekable OpenResponseFlags = 1 << 2 // mark the file as non-seekable (not supported on OS X)
-
- OpenPurgeAttr OpenResponseFlags = 1 << 30 // OS X
- OpenPurgeUBC OpenResponseFlags = 1 << 31 // OS X
-)
-
-func (fl OpenResponseFlags) String() string {
- return flagString(uint32(fl), openResponseFlagNames)
-}
-
-var openResponseFlagNames = []flagName{
- {uint32(OpenDirectIO), "OpenDirectIO"},
- {uint32(OpenKeepCache), "OpenKeepCache"},
- {uint32(OpenNonSeekable), "OpenNonSeekable"},
- {uint32(OpenPurgeAttr), "OpenPurgeAttr"},
- {uint32(OpenPurgeUBC), "OpenPurgeUBC"},
-}
-
-// The InitFlags are used in the Init exchange.
-type InitFlags uint32
-
-const (
- InitAsyncRead InitFlags = 1 << 0
- InitPosixLocks InitFlags = 1 << 1
- InitFileOps InitFlags = 1 << 2
- InitAtomicTrunc InitFlags = 1 << 3
- InitExportSupport InitFlags = 1 << 4
- InitBigWrites InitFlags = 1 << 5
- // Do not mask file access modes with umask. Not supported on OS X.
- InitDontMask InitFlags = 1 << 6
- InitSpliceWrite InitFlags = 1 << 7
- InitSpliceMove InitFlags = 1 << 8
- InitSpliceRead InitFlags = 1 << 9
- InitFlockLocks InitFlags = 1 << 10
- InitHasIoctlDir InitFlags = 1 << 11
- InitAutoInvalData InitFlags = 1 << 12
- InitDoReaddirplus InitFlags = 1 << 13
- InitReaddirplusAuto InitFlags = 1 << 14
- InitAsyncDIO InitFlags = 1 << 15
- InitWritebackCache InitFlags = 1 << 16
- InitNoOpenSupport InitFlags = 1 << 17
-
- InitCaseSensitive InitFlags = 1 << 29 // OS X only
- InitVolRename InitFlags = 1 << 30 // OS X only
- InitXtimes InitFlags = 1 << 31 // OS X only
-)
-
-type flagName struct {
- bit uint32
- name string
-}
-
-var initFlagNames = []flagName{
- {uint32(InitAsyncRead), "InitAsyncRead"},
- {uint32(InitPosixLocks), "InitPosixLocks"},
- {uint32(InitFileOps), "InitFileOps"},
- {uint32(InitAtomicTrunc), "InitAtomicTrunc"},
- {uint32(InitExportSupport), "InitExportSupport"},
- {uint32(InitBigWrites), "InitBigWrites"},
- {uint32(InitDontMask), "InitDontMask"},
- {uint32(InitSpliceWrite), "InitSpliceWrite"},
- {uint32(InitSpliceMove), "InitSpliceMove"},
- {uint32(InitSpliceRead), "InitSpliceRead"},
- {uint32(InitFlockLocks), "InitFlockLocks"},
- {uint32(InitHasIoctlDir), "InitHasIoctlDir"},
- {uint32(InitAutoInvalData), "InitAutoInvalData"},
- {uint32(InitDoReaddirplus), "InitDoReaddirplus"},
- {uint32(InitReaddirplusAuto), "InitReaddirplusAuto"},
- {uint32(InitAsyncDIO), "InitAsyncDIO"},
- {uint32(InitWritebackCache), "InitWritebackCache"},
- {uint32(InitNoOpenSupport), "InitNoOpenSupport"},
-
- {uint32(InitCaseSensitive), "InitCaseSensitive"},
- {uint32(InitVolRename), "InitVolRename"},
- {uint32(InitXtimes), "InitXtimes"},
-}
-
-func (fl InitFlags) String() string {
- return flagString(uint32(fl), initFlagNames)
-}
-
-func flagString(f uint32, names []flagName) string {
- var s string
-
- if f == 0 {
- return "0"
- }
-
- for _, n := range names {
- if f&n.bit != 0 {
- s += "+" + n.name
- f &^= n.bit
- }
- }
- if f != 0 {
- s += fmt.Sprintf("%+#x", f)
- }
- return s[1:]
-}
-
-// The ReleaseFlags are used in the Release exchange.
-type ReleaseFlags uint32
-
-const (
- ReleaseFlush ReleaseFlags = 1 << 0
-)
-
-func (fl ReleaseFlags) String() string {
- return flagString(uint32(fl), releaseFlagNames)
-}
-
-var releaseFlagNames = []flagName{
- {uint32(ReleaseFlush), "ReleaseFlush"},
-}
-
-// Opcodes
-const (
- opLookup = 1
- opForget = 2 // no reply
- opGetattr = 3
- opSetattr = 4
- opReadlink = 5
- opSymlink = 6
- opMknod = 8
- opMkdir = 9
- opUnlink = 10
- opRmdir = 11
- opRename = 12
- opLink = 13
- opOpen = 14
- opRead = 15
- opWrite = 16
- opStatfs = 17
- opRelease = 18
- opFsync = 20
- opSetxattr = 21
- opGetxattr = 22
- opListxattr = 23
- opRemovexattr = 24
- opFlush = 25
- opInit = 26
- opOpendir = 27
- opReaddir = 28
- opReleasedir = 29
- opFsyncdir = 30
- opGetlk = 31
- opSetlk = 32
- opSetlkw = 33
- opAccess = 34
- opCreate = 35
- opInterrupt = 36
- opBmap = 37
- opDestroy = 38
- opIoctl = 39 // Linux?
- opPoll = 40 // Linux?
-
- // OS X
- opSetvolname = 61
- opGetxtimes = 62
- opExchange = 63
-)
-
-type entryOut struct {
- Nodeid uint64 // Inode ID
- Generation uint64 // Inode generation
- EntryValid uint64 // Cache timeout for the name
- AttrValid uint64 // Cache timeout for the attributes
- EntryValidNsec uint32
- AttrValidNsec uint32
- Attr attr
-}
-
-func entryOutSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 9}):
- return unsafe.Offsetof(entryOut{}.Attr) + unsafe.Offsetof(entryOut{}.Attr.Blksize)
- default:
- return unsafe.Sizeof(entryOut{})
- }
-}
-
-type forgetIn struct {
- Nlookup uint64
-}
-
-type getattrIn struct {
- GetattrFlags uint32
- _ uint32
- Fh uint64
-}
-
-type attrOut struct {
- AttrValid uint64 // Cache timeout for the attributes
- AttrValidNsec uint32
- _ uint32
- Attr attr
-}
-
-func attrOutSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 9}):
- return unsafe.Offsetof(attrOut{}.Attr) + unsafe.Offsetof(attrOut{}.Attr.Blksize)
- default:
- return unsafe.Sizeof(attrOut{})
- }
-}
-
-// OS X
-type getxtimesOut struct {
- Bkuptime uint64
- Crtime uint64
- BkuptimeNsec uint32
- CrtimeNsec uint32
-}
-
-type mknodIn struct {
- Mode uint32
- Rdev uint32
- Umask uint32
- _ uint32
- // "filename\x00" follows.
-}
-
-func mknodInSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 12}):
- return unsafe.Offsetof(mknodIn{}.Umask)
- default:
- return unsafe.Sizeof(mknodIn{})
- }
-}
-
-type mkdirIn struct {
- Mode uint32
- Umask uint32
- // filename follows
-}
-
-func mkdirInSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 12}):
- return unsafe.Offsetof(mkdirIn{}.Umask) + 4
- default:
- return unsafe.Sizeof(mkdirIn{})
- }
-}
-
-type renameIn struct {
- Newdir uint64
- // "oldname\x00newname\x00" follows
-}
-
-// OS X
-type exchangeIn struct {
- Olddir uint64
- Newdir uint64
- Options uint64
- // "oldname\x00newname\x00" follows
-}
-
-type linkIn struct {
- Oldnodeid uint64
-}
-
-type setattrInCommon struct {
- Valid uint32
- _ uint32
- Fh uint64
- Size uint64
- LockOwner uint64 // unused on OS X?
- Atime uint64
- Mtime uint64
- Unused2 uint64
- AtimeNsec uint32
- MtimeNsec uint32
- Unused3 uint32
- Mode uint32
- Unused4 uint32
- Uid uint32
- Gid uint32
- Unused5 uint32
-}
-
-type openIn struct {
- Flags uint32
- Unused uint32
-}
-
-type openOut struct {
- Fh uint64
- OpenFlags uint32
- _ uint32
-}
-
-type createIn struct {
- Flags uint32
- Mode uint32
- Umask uint32
- _ uint32
-}
-
-func createInSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 12}):
- return unsafe.Offsetof(createIn{}.Umask)
- default:
- return unsafe.Sizeof(createIn{})
- }
-}
-
-type releaseIn struct {
- Fh uint64
- Flags uint32
- ReleaseFlags uint32
- LockOwner uint32
-}
-
-type flushIn struct {
- Fh uint64
- FlushFlags uint32
- _ uint32
- LockOwner uint64
-}
-
-type readIn struct {
- Fh uint64
- Offset uint64
- Size uint32
- ReadFlags uint32
- LockOwner uint64
- Flags uint32
- _ uint32
-}
-
-func readInSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 9}):
- return unsafe.Offsetof(readIn{}.ReadFlags) + 4
- default:
- return unsafe.Sizeof(readIn{})
- }
-}
-
-// The ReadFlags are passed in ReadRequest.
-type ReadFlags uint32
-
-const (
- // LockOwner field is valid.
- ReadLockOwner ReadFlags = 1 << 1
-)
-
-var readFlagNames = []flagName{
- {uint32(ReadLockOwner), "ReadLockOwner"},
-}
-
-func (fl ReadFlags) String() string {
- return flagString(uint32(fl), readFlagNames)
-}
-
-type writeIn struct {
- Fh uint64
- Offset uint64
- Size uint32
- WriteFlags uint32
- LockOwner uint64
- Flags uint32
- _ uint32
-}
-
-func writeInSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 9}):
- return unsafe.Offsetof(writeIn{}.LockOwner)
- default:
- return unsafe.Sizeof(writeIn{})
- }
-}
-
-type writeOut struct {
- Size uint32
- _ uint32
-}
-
-// The WriteFlags are passed in WriteRequest.
-type WriteFlags uint32
-
-const (
- WriteCache WriteFlags = 1 << 0
- // LockOwner field is valid.
- WriteLockOwner WriteFlags = 1 << 1
-)
-
-var writeFlagNames = []flagName{
- {uint32(WriteCache), "WriteCache"},
- {uint32(WriteLockOwner), "WriteLockOwner"},
-}
-
-func (fl WriteFlags) String() string {
- return flagString(uint32(fl), writeFlagNames)
-}
-
-const compatStatfsSize = 48
-
-type statfsOut struct {
- St kstatfs
-}
-
-type fsyncIn struct {
- Fh uint64
- FsyncFlags uint32
- _ uint32
-}
-
-type setxattrInCommon struct {
- Size uint32
- Flags uint32
-}
-
-func (setxattrInCommon) position() uint32 {
- return 0
-}
-
-type getxattrInCommon struct {
- Size uint32
- _ uint32
-}
-
-func (getxattrInCommon) position() uint32 {
- return 0
-}
-
-type getxattrOut struct {
- Size uint32
- _ uint32
-}
-
-type lkIn struct {
- Fh uint64
- Owner uint64
- Lk fileLock
- LkFlags uint32
- _ uint32
-}
-
-func lkInSize(p Protocol) uintptr {
- switch {
- case p.LT(Protocol{7, 9}):
- return unsafe.Offsetof(lkIn{}.LkFlags)
- default:
- return unsafe.Sizeof(lkIn{})
- }
-}
-
-type lkOut struct {
- Lk fileLock
-}
-
-type accessIn struct {
- Mask uint32
- _ uint32
-}
-
-type initIn struct {
- Major uint32
- Minor uint32
- MaxReadahead uint32
- Flags uint32
-}
-
-const initInSize = int(unsafe.Sizeof(initIn{}))
-
-type initOut struct {
- Major uint32
- Minor uint32
- MaxReadahead uint32
- Flags uint32
- Unused uint32
- MaxWrite uint32
-}
-
-type interruptIn struct {
- Unique uint64
-}
-
-type bmapIn struct {
- Block uint64
- BlockSize uint32
- _ uint32
-}
-
-type bmapOut struct {
- Block uint64
-}
-
-type inHeader struct {
- Len uint32
- Opcode uint32
- Unique uint64
- Nodeid uint64
- Uid uint32
- Gid uint32
- Pid uint32
- _ uint32
-}
-
-const inHeaderSize = int(unsafe.Sizeof(inHeader{}))
-
-type outHeader struct {
- Len uint32
- Error int32
- Unique uint64
-}
-
-type dirent struct {
- Ino uint64
- Off uint64
- Namelen uint32
- Type uint32
- Name [0]byte
-}
-
-const direntSize = 8 + 8 + 4 + 4
-
-const (
- notifyCodePoll int32 = 1
- notifyCodeInvalInode int32 = 2
- notifyCodeInvalEntry int32 = 3
-)
-
-type notifyInvalInodeOut struct {
- Ino uint64
- Off int64
- Len int64
-}
-
-type notifyInvalEntryOut struct {
- Parent uint64
- Namelen uint32
- _ uint32
-}
diff --git a/vendor/bazil.org/fuse/fuse_kernel_darwin.go b/vendor/bazil.org/fuse/fuse_kernel_darwin.go
deleted file mode 100644
index b9873fdf3..000000000
--- a/vendor/bazil.org/fuse/fuse_kernel_darwin.go
+++ /dev/null
@@ -1,88 +0,0 @@
-package fuse
-
-import (
- "time"
-)
-
-type attr struct {
- Ino uint64
- Size uint64
- Blocks uint64
- Atime uint64
- Mtime uint64
- Ctime uint64
- Crtime_ uint64 // OS X only
- AtimeNsec uint32
- MtimeNsec uint32
- CtimeNsec uint32
- CrtimeNsec uint32 // OS X only
- Mode uint32
- Nlink uint32
- Uid uint32
- Gid uint32
- Rdev uint32
- Flags_ uint32 // OS X only; see chflags(2)
- Blksize uint32
- padding uint32
-}
-
-func (a *attr) SetCrtime(s uint64, ns uint32) {
- a.Crtime_, a.CrtimeNsec = s, ns
-}
-
-func (a *attr) SetFlags(f uint32) {
- a.Flags_ = f
-}
-
-type setattrIn struct {
- setattrInCommon
-
- // OS X only
- Bkuptime_ uint64
- Chgtime_ uint64
- Crtime uint64
- BkuptimeNsec uint32
- ChgtimeNsec uint32
- CrtimeNsec uint32
- Flags_ uint32 // see chflags(2)
-}
-
-func (in *setattrIn) BkupTime() time.Time {
- return time.Unix(int64(in.Bkuptime_), int64(in.BkuptimeNsec))
-}
-
-func (in *setattrIn) Chgtime() time.Time {
- return time.Unix(int64(in.Chgtime_), int64(in.ChgtimeNsec))
-}
-
-func (in *setattrIn) Flags() uint32 {
- return in.Flags_
-}
-
-func openFlags(flags uint32) OpenFlags {
- return OpenFlags(flags)
-}
-
-type getxattrIn struct {
- getxattrInCommon
-
- // OS X only
- Position uint32
- Padding uint32
-}
-
-func (g *getxattrIn) position() uint32 {
- return g.Position
-}
-
-type setxattrIn struct {
- setxattrInCommon
-
- // OS X only
- Position uint32
- Padding uint32
-}
-
-func (s *setxattrIn) position() uint32 {
- return s.Position
-}
diff --git a/vendor/bazil.org/fuse/fuse_kernel_freebsd.go b/vendor/bazil.org/fuse/fuse_kernel_freebsd.go
deleted file mode 100644
index b1141e41d..000000000
--- a/vendor/bazil.org/fuse/fuse_kernel_freebsd.go
+++ /dev/null
@@ -1,62 +0,0 @@
-package fuse
-
-import "time"
-
-type attr struct {
- Ino uint64
- Size uint64
- Blocks uint64
- Atime uint64
- Mtime uint64
- Ctime uint64
- AtimeNsec uint32
- MtimeNsec uint32
- CtimeNsec uint32
- Mode uint32
- Nlink uint32
- Uid uint32
- Gid uint32
- Rdev uint32
- Blksize uint32
- padding uint32
-}
-
-func (a *attr) Crtime() time.Time {
- return time.Time{}
-}
-
-func (a *attr) SetCrtime(s uint64, ns uint32) {
- // ignored on freebsd
-}
-
-func (a *attr) SetFlags(f uint32) {
- // ignored on freebsd
-}
-
-type setattrIn struct {
- setattrInCommon
-}
-
-func (in *setattrIn) BkupTime() time.Time {
- return time.Time{}
-}
-
-func (in *setattrIn) Chgtime() time.Time {
- return time.Time{}
-}
-
-func (in *setattrIn) Flags() uint32 {
- return 0
-}
-
-func openFlags(flags uint32) OpenFlags {
- return OpenFlags(flags)
-}
-
-type getxattrIn struct {
- getxattrInCommon
-}
-
-type setxattrIn struct {
- setxattrInCommon
-}
diff --git a/vendor/bazil.org/fuse/fuse_kernel_linux.go b/vendor/bazil.org/fuse/fuse_kernel_linux.go
deleted file mode 100644
index d3ba86617..000000000
--- a/vendor/bazil.org/fuse/fuse_kernel_linux.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package fuse
-
-import "time"
-
-type attr struct {
- Ino uint64
- Size uint64
- Blocks uint64
- Atime uint64
- Mtime uint64
- Ctime uint64
- AtimeNsec uint32
- MtimeNsec uint32
- CtimeNsec uint32
- Mode uint32
- Nlink uint32
- Uid uint32
- Gid uint32
- Rdev uint32
- Blksize uint32
- padding uint32
-}
-
-func (a *attr) Crtime() time.Time {
- return time.Time{}
-}
-
-func (a *attr) SetCrtime(s uint64, ns uint32) {
- // Ignored on Linux.
-}
-
-func (a *attr) SetFlags(f uint32) {
- // Ignored on Linux.
-}
-
-type setattrIn struct {
- setattrInCommon
-}
-
-func (in *setattrIn) BkupTime() time.Time {
- return time.Time{}
-}
-
-func (in *setattrIn) Chgtime() time.Time {
- return time.Time{}
-}
-
-func (in *setattrIn) Flags() uint32 {
- return 0
-}
-
-func openFlags(flags uint32) OpenFlags {
- // on amd64, the 32-bit O_LARGEFILE flag is always seen;
- // on i386, the flag probably depends on the app
- // requesting, but in any case should be utterly
- // uninteresting to us here; our kernel protocol messages
- // are not directly related to the client app's kernel
- // API/ABI
- flags &^= 0x8000
-
- return OpenFlags(flags)
-}
-
-type getxattrIn struct {
- getxattrInCommon
-}
-
-type setxattrIn struct {
- setxattrInCommon
-}
diff --git a/vendor/bazil.org/fuse/fuse_kernel_std.go b/vendor/bazil.org/fuse/fuse_kernel_std.go
deleted file mode 100644
index 074cfd322..000000000
--- a/vendor/bazil.org/fuse/fuse_kernel_std.go
+++ /dev/null
@@ -1 +0,0 @@
-package fuse
diff --git a/vendor/bazil.org/fuse/fuse_linux.go b/vendor/bazil.org/fuse/fuse_linux.go
deleted file mode 100644
index 5fb96f9ae..000000000
--- a/vendor/bazil.org/fuse/fuse_linux.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package fuse
-
-// Maximum file write size we are prepared to receive from the kernel.
-//
-// Linux 4.2.0 has been observed to cap this value at 128kB
-// (FUSE_MAX_PAGES_PER_REQ=32, 4kB pages).
-const maxWrite = 128 * 1024
diff --git a/vendor/bazil.org/fuse/fuseutil/fuseutil.go b/vendor/bazil.org/fuse/fuseutil/fuseutil.go
deleted file mode 100644
index b3f52b73b..000000000
--- a/vendor/bazil.org/fuse/fuseutil/fuseutil.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package fuseutil // import "bazil.org/fuse/fuseutil"
-
-import (
- "bazil.org/fuse"
-)
-
-// HandleRead handles a read request assuming that data is the entire file content.
-// It adjusts the amount returned in resp according to req.Offset and req.Size.
-func HandleRead(req *fuse.ReadRequest, resp *fuse.ReadResponse, data []byte) {
- if req.Offset >= int64(len(data)) {
- data = nil
- } else {
- data = data[req.Offset:]
- }
- if len(data) > req.Size {
- data = data[:req.Size]
- }
- n := copy(resp.Data[:req.Size], data)
- resp.Data = resp.Data[:n]
-}
diff --git a/vendor/bazil.org/fuse/mount.go b/vendor/bazil.org/fuse/mount.go
deleted file mode 100644
index 8054e9021..000000000
--- a/vendor/bazil.org/fuse/mount.go
+++ /dev/null
@@ -1,38 +0,0 @@
-package fuse
-
-import (
- "bufio"
- "errors"
- "io"
- "log"
- "sync"
-)
-
-var (
- // ErrOSXFUSENotFound is returned from Mount when the OSXFUSE
- // installation is not detected.
- //
- // Only happens on OS X. Make sure OSXFUSE is installed, or see
- // OSXFUSELocations for customization.
- ErrOSXFUSENotFound = errors.New("cannot locate OSXFUSE")
-)
-
-func neverIgnoreLine(line string) bool {
- return false
-}
-
-func lineLogger(wg *sync.WaitGroup, prefix string, ignore func(line string) bool, r io.ReadCloser) {
- defer wg.Done()
-
- scanner := bufio.NewScanner(r)
- for scanner.Scan() {
- line := scanner.Text()
- if ignore(line) {
- continue
- }
- log.Printf("%s: %s", prefix, line)
- }
- if err := scanner.Err(); err != nil {
- log.Printf("%s, error reading: %v", prefix, err)
- }
-}
diff --git a/vendor/bazil.org/fuse/mount_darwin.go b/vendor/bazil.org/fuse/mount_darwin.go
deleted file mode 100644
index c1c36e62b..000000000
--- a/vendor/bazil.org/fuse/mount_darwin.go
+++ /dev/null
@@ -1,208 +0,0 @@
-package fuse
-
-import (
- "errors"
- "fmt"
- "log"
- "os"
- "os/exec"
- "path"
- "strconv"
- "strings"
- "sync"
- "syscall"
-)
-
-var (
- errNoAvail = errors.New("no available fuse devices")
- errNotLoaded = errors.New("osxfuse is not loaded")
-)
-
-func loadOSXFUSE(bin string) error {
- cmd := exec.Command(bin)
- cmd.Dir = "/"
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- err := cmd.Run()
- return err
-}
-
-func openOSXFUSEDev(devPrefix string) (*os.File, error) {
- var f *os.File
- var err error
- for i := uint64(0); ; i++ {
- path := devPrefix + strconv.FormatUint(i, 10)
- f, err = os.OpenFile(path, os.O_RDWR, 0000)
- if os.IsNotExist(err) {
- if i == 0 {
- // not even the first device was found -> fuse is not loaded
- return nil, errNotLoaded
- }
-
- // we've run out of kernel-provided devices
- return nil, errNoAvail
- }
-
- if err2, ok := err.(*os.PathError); ok && err2.Err == syscall.EBUSY {
- // try the next one
- continue
- }
-
- if err != nil {
- return nil, err
- }
- return f, nil
- }
-}
-
-func handleMountOSXFUSE(helperName string, errCh chan<- error) func(line string) (ignore bool) {
- var noMountpointPrefix = helperName + `: `
- const noMountpointSuffix = `: No such file or directory`
- return func(line string) (ignore bool) {
- if strings.HasPrefix(line, noMountpointPrefix) && strings.HasSuffix(line, noMountpointSuffix) {
- // re-extract it from the error message in case some layer
- // changed the path
- mountpoint := line[len(noMountpointPrefix) : len(line)-len(noMountpointSuffix)]
- err := &MountpointDoesNotExistError{
- Path: mountpoint,
- }
- select {
- case errCh <- err:
- return true
- default:
- // not the first error; fall back to logging it
- return false
- }
- }
-
- return false
- }
-}
-
-// isBoringMountOSXFUSEError returns whether the Wait error is
-// uninteresting; exit status 64 is.
-func isBoringMountOSXFUSEError(err error) bool {
- if err, ok := err.(*exec.ExitError); ok && err.Exited() {
- if status, ok := err.Sys().(syscall.WaitStatus); ok && status.ExitStatus() == 64 {
- return true
- }
- }
- return false
-}
-
-func callMount(bin string, daemonVar string, dir string, conf *mountConfig, f *os.File, ready chan<- struct{}, errp *error) error {
- for k, v := range conf.options {
- if strings.Contains(k, ",") || strings.Contains(v, ",") {
- // Silly limitation but the mount helper does not
- // understand any escaping. See TestMountOptionCommaError.
- return fmt.Errorf("mount options cannot contain commas on darwin: %q=%q", k, v)
- }
- }
- cmd := exec.Command(
- bin,
- "-o", conf.getOptions(),
- // Tell osxfuse-kext how large our buffer is. It must split
- // writes larger than this into multiple writes.
- //
- // OSXFUSE seems to ignore InitResponse.MaxWrite, and uses
- // this instead.
- "-o", "iosize="+strconv.FormatUint(maxWrite, 10),
- // refers to fd passed in cmd.ExtraFiles
- "3",
- dir,
- )
- cmd.ExtraFiles = []*os.File{f}
- cmd.Env = os.Environ()
- // OSXFUSE <3.3.0
- cmd.Env = append(cmd.Env, "MOUNT_FUSEFS_CALL_BY_LIB=")
- // OSXFUSE >=3.3.0
- cmd.Env = append(cmd.Env, "MOUNT_OSXFUSE_CALL_BY_LIB=")
-
- daemon := os.Args[0]
- if daemonVar != "" {
- cmd.Env = append(cmd.Env, daemonVar+"="+daemon)
- }
-
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return fmt.Errorf("setting up mount_osxfusefs stderr: %v", err)
- }
- stderr, err := cmd.StderrPipe()
- if err != nil {
- return fmt.Errorf("setting up mount_osxfusefs stderr: %v", err)
- }
-
- if err := cmd.Start(); err != nil {
- return fmt.Errorf("mount_osxfusefs: %v", err)
- }
- helperErrCh := make(chan error, 1)
- go func() {
- var wg sync.WaitGroup
- wg.Add(2)
- go lineLogger(&wg, "mount helper output", neverIgnoreLine, stdout)
- helperName := path.Base(bin)
- go lineLogger(&wg, "mount helper error", handleMountOSXFUSE(helperName, helperErrCh), stderr)
- wg.Wait()
- if err := cmd.Wait(); err != nil {
- // see if we have a better error to report
- select {
- case helperErr := <-helperErrCh:
- // log the Wait error if it's not what we expected
- if !isBoringMountOSXFUSEError(err) {
- log.Printf("mount helper failed: %v", err)
- }
- // and now return what we grabbed from stderr as the real
- // error
- *errp = helperErr
- close(ready)
- return
- default:
- // nope, fall back to generic message
- }
-
- *errp = fmt.Errorf("mount_osxfusefs: %v", err)
- close(ready)
- return
- }
-
- *errp = nil
- close(ready)
- }()
- return nil
-}
-
-func mount(dir string, conf *mountConfig, ready chan<- struct{}, errp *error) (*os.File, error) {
- locations := conf.osxfuseLocations
- if locations == nil {
- locations = []OSXFUSEPaths{
- OSXFUSELocationV3,
- OSXFUSELocationV2,
- }
- }
- for _, loc := range locations {
- if _, err := os.Stat(loc.Mount); os.IsNotExist(err) {
- // try the other locations
- continue
- }
-
- f, err := openOSXFUSEDev(loc.DevicePrefix)
- if err == errNotLoaded {
- err = loadOSXFUSE(loc.Load)
- if err != nil {
- return nil, err
- }
- // try again
- f, err = openOSXFUSEDev(loc.DevicePrefix)
- }
- if err != nil {
- return nil, err
- }
- err = callMount(loc.Mount, loc.DaemonVar, dir, conf, f, ready, errp)
- if err != nil {
- f.Close()
- return nil, err
- }
- return f, nil
- }
- return nil, ErrOSXFUSENotFound
-}
diff --git a/vendor/bazil.org/fuse/mount_freebsd.go b/vendor/bazil.org/fuse/mount_freebsd.go
deleted file mode 100644
index 70bb41024..000000000
--- a/vendor/bazil.org/fuse/mount_freebsd.go
+++ /dev/null
@@ -1,111 +0,0 @@
-package fuse
-
-import (
- "fmt"
- "log"
- "os"
- "os/exec"
- "strings"
- "sync"
- "syscall"
-)
-
-func handleMountFusefsStderr(errCh chan<- error) func(line string) (ignore bool) {
- return func(line string) (ignore bool) {
- const (
- noMountpointPrefix = `mount_fusefs: `
- noMountpointSuffix = `: No such file or directory`
- )
- if strings.HasPrefix(line, noMountpointPrefix) && strings.HasSuffix(line, noMountpointSuffix) {
- // re-extract it from the error message in case some layer
- // changed the path
- mountpoint := line[len(noMountpointPrefix) : len(line)-len(noMountpointSuffix)]
- err := &MountpointDoesNotExistError{
- Path: mountpoint,
- }
- select {
- case errCh <- err:
- return true
- default:
- // not the first error; fall back to logging it
- return false
- }
- }
-
- return false
- }
-}
-
-// isBoringMountFusefsError returns whether the Wait error is
-// uninteresting; exit status 1 is.
-func isBoringMountFusefsError(err error) bool {
- if err, ok := err.(*exec.ExitError); ok && err.Exited() {
- if status, ok := err.Sys().(syscall.WaitStatus); ok && status.ExitStatus() == 1 {
- return true
- }
- }
- return false
-}
-
-func mount(dir string, conf *mountConfig, ready chan<- struct{}, errp *error) (*os.File, error) {
- for k, v := range conf.options {
- if strings.Contains(k, ",") || strings.Contains(v, ",") {
- // Silly limitation but the mount helper does not
- // understand any escaping. See TestMountOptionCommaError.
- return nil, fmt.Errorf("mount options cannot contain commas on FreeBSD: %q=%q", k, v)
- }
- }
-
- f, err := os.OpenFile("/dev/fuse", os.O_RDWR, 0000)
- if err != nil {
- *errp = err
- return nil, err
- }
-
- cmd := exec.Command(
- "/sbin/mount_fusefs",
- "--safe",
- "-o", conf.getOptions(),
- "3",
- dir,
- )
- cmd.ExtraFiles = []*os.File{f}
-
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return nil, fmt.Errorf("setting up mount_fusefs stderr: %v", err)
- }
- stderr, err := cmd.StderrPipe()
- if err != nil {
- return nil, fmt.Errorf("setting up mount_fusefs stderr: %v", err)
- }
-
- if err := cmd.Start(); err != nil {
- return nil, fmt.Errorf("mount_fusefs: %v", err)
- }
- helperErrCh := make(chan error, 1)
- var wg sync.WaitGroup
- wg.Add(2)
- go lineLogger(&wg, "mount helper output", neverIgnoreLine, stdout)
- go lineLogger(&wg, "mount helper error", handleMountFusefsStderr(helperErrCh), stderr)
- wg.Wait()
- if err := cmd.Wait(); err != nil {
- // see if we have a better error to report
- select {
- case helperErr := <-helperErrCh:
- // log the Wait error if it's not what we expected
- if !isBoringMountFusefsError(err) {
- log.Printf("mount helper failed: %v", err)
- }
- // and now return what we grabbed from stderr as the real
- // error
- return nil, helperErr
- default:
- // nope, fall back to generic message
- }
- return nil, fmt.Errorf("mount_fusefs: %v", err)
- }
-
- close(ready)
- return f, nil
-}
diff --git a/vendor/bazil.org/fuse/mount_linux.go b/vendor/bazil.org/fuse/mount_linux.go
deleted file mode 100644
index 197d1044e..000000000
--- a/vendor/bazil.org/fuse/mount_linux.go
+++ /dev/null
@@ -1,150 +0,0 @@
-package fuse
-
-import (
- "fmt"
- "log"
- "net"
- "os"
- "os/exec"
- "strings"
- "sync"
- "syscall"
-)
-
-func handleFusermountStderr(errCh chan<- error) func(line string) (ignore bool) {
- return func(line string) (ignore bool) {
- if line == `fusermount: failed to open /etc/fuse.conf: Permission denied` {
- // Silence this particular message, it occurs way too
- // commonly and isn't very relevant to whether the mount
- // succeeds or not.
- return true
- }
-
- const (
- noMountpointPrefix = `fusermount: failed to access mountpoint `
- noMountpointSuffix = `: No such file or directory`
- )
- if strings.HasPrefix(line, noMountpointPrefix) && strings.HasSuffix(line, noMountpointSuffix) {
- // re-extract it from the error message in case some layer
- // changed the path
- mountpoint := line[len(noMountpointPrefix) : len(line)-len(noMountpointSuffix)]
- err := &MountpointDoesNotExistError{
- Path: mountpoint,
- }
- select {
- case errCh <- err:
- return true
- default:
- // not the first error; fall back to logging it
- return false
- }
- }
-
- return false
- }
-}
-
-// isBoringFusermountError returns whether the Wait error is
-// uninteresting; exit status 1 is.
-func isBoringFusermountError(err error) bool {
- if err, ok := err.(*exec.ExitError); ok && err.Exited() {
- if status, ok := err.Sys().(syscall.WaitStatus); ok && status.ExitStatus() == 1 {
- return true
- }
- }
- return false
-}
-
-func mount(dir string, conf *mountConfig, ready chan<- struct{}, errp *error) (fusefd *os.File, err error) {
- // linux mount is never delayed
- close(ready)
-
- fds, err := syscall.Socketpair(syscall.AF_FILE, syscall.SOCK_STREAM, 0)
- if err != nil {
- return nil, fmt.Errorf("socketpair error: %v", err)
- }
-
- writeFile := os.NewFile(uintptr(fds[0]), "fusermount-child-writes")
- defer writeFile.Close()
-
- readFile := os.NewFile(uintptr(fds[1]), "fusermount-parent-reads")
- defer readFile.Close()
-
- cmd := exec.Command(
- "fusermount",
- "-o", conf.getOptions(),
- "--",
- dir,
- )
- cmd.Env = append(os.Environ(), "_FUSE_COMMFD=3")
-
- cmd.ExtraFiles = []*os.File{writeFile}
-
- var wg sync.WaitGroup
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return nil, fmt.Errorf("setting up fusermount stderr: %v", err)
- }
- stderr, err := cmd.StderrPipe()
- if err != nil {
- return nil, fmt.Errorf("setting up fusermount stderr: %v", err)
- }
-
- if err := cmd.Start(); err != nil {
- return nil, fmt.Errorf("fusermount: %v", err)
- }
- helperErrCh := make(chan error, 1)
- wg.Add(2)
- go lineLogger(&wg, "mount helper output", neverIgnoreLine, stdout)
- go lineLogger(&wg, "mount helper error", handleFusermountStderr(helperErrCh), stderr)
- wg.Wait()
- if err := cmd.Wait(); err != nil {
- // see if we have a better error to report
- select {
- case helperErr := <-helperErrCh:
- // log the Wait error if it's not what we expected
- if !isBoringFusermountError(err) {
- log.Printf("mount helper failed: %v", err)
- }
- // and now return what we grabbed from stderr as the real
- // error
- return nil, helperErr
- default:
- // nope, fall back to generic message
- }
-
- return nil, fmt.Errorf("fusermount: %v", err)
- }
-
- c, err := net.FileConn(readFile)
- if err != nil {
- return nil, fmt.Errorf("FileConn from fusermount socket: %v", err)
- }
- defer c.Close()
-
- uc, ok := c.(*net.UnixConn)
- if !ok {
- return nil, fmt.Errorf("unexpected FileConn type; expected UnixConn, got %T", c)
- }
-
- buf := make([]byte, 32) // expect 1 byte
- oob := make([]byte, 32) // expect 24 bytes
- _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob)
- scms, err := syscall.ParseSocketControlMessage(oob[:oobn])
- if err != nil {
- return nil, fmt.Errorf("ParseSocketControlMessage: %v", err)
- }
- if len(scms) != 1 {
- return nil, fmt.Errorf("expected 1 SocketControlMessage; got scms = %#v", scms)
- }
- scm := scms[0]
- gotFds, err := syscall.ParseUnixRights(&scm)
- if err != nil {
- return nil, fmt.Errorf("syscall.ParseUnixRights: %v", err)
- }
- if len(gotFds) != 1 {
- return nil, fmt.Errorf("wanted 1 fd; got %#v", gotFds)
- }
- f := os.NewFile(uintptr(gotFds[0]), "/dev/fuse")
- return f, nil
-}
diff --git a/vendor/bazil.org/fuse/options.go b/vendor/bazil.org/fuse/options.go
deleted file mode 100644
index 65ce8a541..000000000
--- a/vendor/bazil.org/fuse/options.go
+++ /dev/null
@@ -1,310 +0,0 @@
-package fuse
-
-import (
- "errors"
- "strings"
-)
-
-func dummyOption(conf *mountConfig) error {
- return nil
-}
-
-// mountConfig holds the configuration for a mount operation.
-// Use it by passing MountOption values to Mount.
-type mountConfig struct {
- options map[string]string
- maxReadahead uint32
- initFlags InitFlags
- osxfuseLocations []OSXFUSEPaths
-}
-
-func escapeComma(s string) string {
- s = strings.Replace(s, `\`, `\\`, -1)
- s = strings.Replace(s, `,`, `\,`, -1)
- return s
-}
-
-// getOptions makes a string of options suitable for passing to FUSE
-// mount flag `-o`. Returns an empty string if no options were set.
-// Any platform specific adjustments should happen before the call.
-func (m *mountConfig) getOptions() string {
- var opts []string
- for k, v := range m.options {
- k = escapeComma(k)
- if v != "" {
- k += "=" + escapeComma(v)
- }
- opts = append(opts, k)
- }
- return strings.Join(opts, ",")
-}
-
-type mountOption func(*mountConfig) error
-
-// MountOption is passed to Mount to change the behavior of the mount.
-type MountOption mountOption
-
-// FSName sets the file system name (also called source) that is
-// visible in the list of mounted file systems.
-//
-// FreeBSD ignores this option.
-func FSName(name string) MountOption {
- return func(conf *mountConfig) error {
- conf.options["fsname"] = name
- return nil
- }
-}
-
-// Subtype sets the subtype of the mount. The main type is always
-// `fuse`. The type in a list of mounted file systems will look like
-// `fuse.foo`.
-//
-// OS X ignores this option.
-// FreeBSD ignores this option.
-func Subtype(fstype string) MountOption {
- return func(conf *mountConfig) error {
- conf.options["subtype"] = fstype
- return nil
- }
-}
-
-// LocalVolume sets the volume to be local (instead of network),
-// changing the behavior of Finder, Spotlight, and such.
-//
-// OS X only. Others ignore this option.
-func LocalVolume() MountOption {
- return localVolume
-}
-
-// VolumeName sets the volume name shown in Finder.
-//
-// OS X only. Others ignore this option.
-func VolumeName(name string) MountOption {
- return volumeName(name)
-}
-
-// NoAppleDouble makes OSXFUSE disallow files with names used by OS X
-// to store extended attributes on file systems that do not support
-// them natively.
-//
-// Such file names are:
-//
-// ._*
-// .DS_Store
-//
-// OS X only. Others ignore this option.
-func NoAppleDouble() MountOption {
- return noAppleDouble
-}
-
-// NoAppleXattr makes OSXFUSE disallow extended attributes with the
-// prefix "com.apple.". This disables persistent Finder state and
-// other such information.
-//
-// OS X only. Others ignore this option.
-func NoAppleXattr() MountOption {
- return noAppleXattr
-}
-
-// ExclCreate causes O_EXCL flag to be set for only "truly" exclusive creates,
-// i.e. create calls for which the initiator explicitly set the O_EXCL flag.
-//
-// OSXFUSE expects all create calls to return EEXIST in case the file
-// already exists, regardless of whether O_EXCL was specified or not.
-// To ensure this behavior, it normally sets OpenExclusive for all
-// Create calls, regardless of whether the original call had it set.
-// For distributed filesystems, that may force every file create to be
-// a distributed consensus action, causing undesirable delays.
-//
-// This option makes the FUSE filesystem see the original flag value,
-// and better decide when to ensure global consensus.
-//
-// Note that returning EEXIST on existing file create is still
-// expected with OSXFUSE, regardless of the presence of the
-// OpenExclusive flag.
-//
-// For more information, see
-// https://github.com/osxfuse/osxfuse/issues/209
-//
-// OS X only. Others ignore this options.
-// Requires OSXFUSE 3.4.1 or newer.
-func ExclCreate() MountOption {
- return exclCreate
-}
-
-// DaemonTimeout sets the time in seconds between a request and a reply before
-// the FUSE mount is declared dead.
-//
-// OS X and FreeBSD only. Others ignore this option.
-func DaemonTimeout(name string) MountOption {
- return daemonTimeout(name)
-}
-
-var ErrCannotCombineAllowOtherAndAllowRoot = errors.New("cannot combine AllowOther and AllowRoot")
-
-// AllowOther allows other users to access the file system.
-//
-// Only one of AllowOther or AllowRoot can be used.
-func AllowOther() MountOption {
- return func(conf *mountConfig) error {
- if _, ok := conf.options["allow_root"]; ok {
- return ErrCannotCombineAllowOtherAndAllowRoot
- }
- conf.options["allow_other"] = ""
- return nil
- }
-}
-
-// AllowRoot allows other users to access the file system.
-//
-// Only one of AllowOther or AllowRoot can be used.
-//
-// FreeBSD ignores this option.
-func AllowRoot() MountOption {
- return func(conf *mountConfig) error {
- if _, ok := conf.options["allow_other"]; ok {
- return ErrCannotCombineAllowOtherAndAllowRoot
- }
- conf.options["allow_root"] = ""
- return nil
- }
-}
-
-// AllowDev enables interpreting character or block special devices on the
-// filesystem.
-func AllowDev() MountOption {
- return func(conf *mountConfig) error {
- conf.options["dev"] = ""
- return nil
- }
-}
-
-// AllowSUID allows set-user-identifier or set-group-identifier bits to take
-// effect.
-func AllowSUID() MountOption {
- return func(conf *mountConfig) error {
- conf.options["suid"] = ""
- return nil
- }
-}
-
-// DefaultPermissions makes the kernel enforce access control based on
-// the file mode (as in chmod).
-//
-// Without this option, the Node itself decides what is and is not
-// allowed. This is normally ok because FUSE file systems cannot be
-// accessed by other users without AllowOther/AllowRoot.
-//
-// FreeBSD ignores this option.
-func DefaultPermissions() MountOption {
- return func(conf *mountConfig) error {
- conf.options["default_permissions"] = ""
- return nil
- }
-}
-
-// ReadOnly makes the mount read-only.
-func ReadOnly() MountOption {
- return func(conf *mountConfig) error {
- conf.options["ro"] = ""
- return nil
- }
-}
-
-// MaxReadahead sets the number of bytes that can be prefetched for
-// sequential reads. The kernel can enforce a maximum value lower than
-// this.
-//
-// This setting makes the kernel perform speculative reads that do not
-// originate from any client process. This usually tremendously
-// improves read performance.
-func MaxReadahead(n uint32) MountOption {
- return func(conf *mountConfig) error {
- conf.maxReadahead = n
- return nil
- }
-}
-
-// AsyncRead enables multiple outstanding read requests for the same
-// handle. Without this, there is at most one request in flight at a
-// time.
-func AsyncRead() MountOption {
- return func(conf *mountConfig) error {
- conf.initFlags |= InitAsyncRead
- return nil
- }
-}
-
-// WritebackCache enables the kernel to buffer writes before sending
-// them to the FUSE server. Without this, writethrough caching is
-// used.
-func WritebackCache() MountOption {
- return func(conf *mountConfig) error {
- conf.initFlags |= InitWritebackCache
- return nil
- }
-}
-
-// OSXFUSEPaths describes the paths used by an installed OSXFUSE
-// version. See OSXFUSELocationV3 for typical values.
-type OSXFUSEPaths struct {
- // Prefix for the device file. At mount time, an incrementing
- // number is suffixed until a free FUSE device is found.
- DevicePrefix string
- // Path of the load helper, used to load the kernel extension if
- // no device files are found.
- Load string
- // Path of the mount helper, used for the actual mount operation.
- Mount string
- // Environment variable used to pass the path to the executable
- // calling the mount helper.
- DaemonVar string
-}
-
-// Default paths for OSXFUSE. See OSXFUSELocations.
-var (
- OSXFUSELocationV3 = OSXFUSEPaths{
- DevicePrefix: "/dev/osxfuse",
- Load: "/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse",
- Mount: "/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse",
- DaemonVar: "MOUNT_OSXFUSE_DAEMON_PATH",
- }
- OSXFUSELocationV2 = OSXFUSEPaths{
- DevicePrefix: "/dev/osxfuse",
- Load: "/Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs",
- Mount: "/Library/Filesystems/osxfusefs.fs/Support/mount_osxfusefs",
- DaemonVar: "MOUNT_FUSEFS_DAEMON_PATH",
- }
-)
-
-// OSXFUSELocations sets where to look for OSXFUSE files. The
-// arguments are all the possible locations. The previous locations
-// are replaced.
-//
-// Without this option, OSXFUSELocationV3 and OSXFUSELocationV2 are
-// used.
-//
-// OS X only. Others ignore this option.
-func OSXFUSELocations(paths ...OSXFUSEPaths) MountOption {
- return func(conf *mountConfig) error {
- if len(paths) == 0 {
- return errors.New("must specify at least one location for OSXFUSELocations")
- }
- // replace previous values, but make a copy so there's no
- // worries about caller mutating their slice
- conf.osxfuseLocations = append(conf.osxfuseLocations[:0], paths...)
- return nil
- }
-}
-
-// AllowNonEmptyMount allows the mounting over a non-empty directory.
-//
-// The files in it will be shadowed by the freshly created mount. By
-// default these mounts are rejected to prevent accidental covering up
-// of data, which could for example prevent automatic backup.
-func AllowNonEmptyMount() MountOption {
- return func(conf *mountConfig) error {
- conf.options["nonempty"] = ""
- return nil
- }
-}
diff --git a/vendor/bazil.org/fuse/options_darwin.go b/vendor/bazil.org/fuse/options_darwin.go
deleted file mode 100644
index faa9d78e7..000000000
--- a/vendor/bazil.org/fuse/options_darwin.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package fuse
-
-func localVolume(conf *mountConfig) error {
- conf.options["local"] = ""
- return nil
-}
-
-func volumeName(name string) MountOption {
- return func(conf *mountConfig) error {
- conf.options["volname"] = name
- return nil
- }
-}
-
-func daemonTimeout(name string) MountOption {
- return func(conf *mountConfig) error {
- conf.options["daemon_timeout"] = name
- return nil
- }
-}
-
-func noAppleXattr(conf *mountConfig) error {
- conf.options["noapplexattr"] = ""
- return nil
-}
-
-func noAppleDouble(conf *mountConfig) error {
- conf.options["noappledouble"] = ""
- return nil
-}
-
-func exclCreate(conf *mountConfig) error {
- conf.options["excl_create"] = ""
- return nil
-}
diff --git a/vendor/bazil.org/fuse/options_freebsd.go b/vendor/bazil.org/fuse/options_freebsd.go
deleted file mode 100644
index 7c164b136..000000000
--- a/vendor/bazil.org/fuse/options_freebsd.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package fuse
-
-func localVolume(conf *mountConfig) error {
- return nil
-}
-
-func volumeName(name string) MountOption {
- return dummyOption
-}
-
-func daemonTimeout(name string) MountOption {
- return func(conf *mountConfig) error {
- conf.options["timeout"] = name
- return nil
- }
-}
-
-func noAppleXattr(conf *mountConfig) error {
- return nil
-}
-
-func noAppleDouble(conf *mountConfig) error {
- return nil
-}
-
-func exclCreate(conf *mountConfig) error {
- return nil
-}
diff --git a/vendor/bazil.org/fuse/options_linux.go b/vendor/bazil.org/fuse/options_linux.go
deleted file mode 100644
index 13f0896d5..000000000
--- a/vendor/bazil.org/fuse/options_linux.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package fuse
-
-func localVolume(conf *mountConfig) error {
- return nil
-}
-
-func volumeName(name string) MountOption {
- return dummyOption
-}
-
-func daemonTimeout(name string) MountOption {
- return dummyOption
-}
-
-func noAppleXattr(conf *mountConfig) error {
- return nil
-}
-
-func noAppleDouble(conf *mountConfig) error {
- return nil
-}
-
-func exclCreate(conf *mountConfig) error {
- return nil
-}
diff --git a/vendor/bazil.org/fuse/protocol.go b/vendor/bazil.org/fuse/protocol.go
deleted file mode 100644
index a77bbf72f..000000000
--- a/vendor/bazil.org/fuse/protocol.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package fuse
-
-import (
- "fmt"
-)
-
-// Protocol is a FUSE protocol version number.
-type Protocol struct {
- Major uint32
- Minor uint32
-}
-
-func (p Protocol) String() string {
- return fmt.Sprintf("%d.%d", p.Major, p.Minor)
-}
-
-// LT returns whether a is less than b.
-func (a Protocol) LT(b Protocol) bool {
- return a.Major < b.Major ||
- (a.Major == b.Major && a.Minor < b.Minor)
-}
-
-// GE returns whether a is greater than or equal to b.
-func (a Protocol) GE(b Protocol) bool {
- return a.Major > b.Major ||
- (a.Major == b.Major && a.Minor >= b.Minor)
-}
-
-func (a Protocol) is79() bool {
- return a.GE(Protocol{7, 9})
-}
-
-// HasAttrBlockSize returns whether Attr.BlockSize is respected by the
-// kernel.
-func (a Protocol) HasAttrBlockSize() bool {
- return a.is79()
-}
-
-// HasReadWriteFlags returns whether ReadRequest/WriteRequest
-// fields Flags and FileFlags are valid.
-func (a Protocol) HasReadWriteFlags() bool {
- return a.is79()
-}
-
-// HasGetattrFlags returns whether GetattrRequest field Flags is
-// valid.
-func (a Protocol) HasGetattrFlags() bool {
- return a.is79()
-}
-
-func (a Protocol) is710() bool {
- return a.GE(Protocol{7, 10})
-}
-
-// HasOpenNonSeekable returns whether OpenResponse field Flags flag
-// OpenNonSeekable is supported.
-func (a Protocol) HasOpenNonSeekable() bool {
- return a.is710()
-}
-
-func (a Protocol) is712() bool {
- return a.GE(Protocol{7, 12})
-}
-
-// HasUmask returns whether CreateRequest/MkdirRequest/MknodRequest
-// field Umask is valid.
-func (a Protocol) HasUmask() bool {
- return a.is712()
-}
-
-// HasInvalidate returns whether InvalidateNode/InvalidateEntry are
-// supported.
-func (a Protocol) HasInvalidate() bool {
- return a.is712()
-}
diff --git a/vendor/bazil.org/fuse/unmount.go b/vendor/bazil.org/fuse/unmount.go
deleted file mode 100644
index ffe3f155c..000000000
--- a/vendor/bazil.org/fuse/unmount.go
+++ /dev/null
@@ -1,6 +0,0 @@
-package fuse
-
-// Unmount tries to unmount the filesystem mounted at dir.
-func Unmount(dir string) error {
- return unmount(dir)
-}
diff --git a/vendor/bazil.org/fuse/unmount_linux.go b/vendor/bazil.org/fuse/unmount_linux.go
deleted file mode 100644
index 088f0cfee..000000000
--- a/vendor/bazil.org/fuse/unmount_linux.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package fuse
-
-import (
- "bytes"
- "errors"
- "os/exec"
-)
-
-func unmount(dir string) error {
- cmd := exec.Command("fusermount", "-u", dir)
- output, err := cmd.CombinedOutput()
- if err != nil {
- if len(output) > 0 {
- output = bytes.TrimRight(output, "\n")
- msg := err.Error() + ": " + string(output)
- err = errors.New(msg)
- }
- return err
- }
- return nil
-}
diff --git a/vendor/bazil.org/fuse/unmount_std.go b/vendor/bazil.org/fuse/unmount_std.go
deleted file mode 100644
index d6efe276f..000000000
--- a/vendor/bazil.org/fuse/unmount_std.go
+++ /dev/null
@@ -1,17 +0,0 @@
-// +build !linux
-
-package fuse
-
-import (
- "os"
- "syscall"
-)
-
-func unmount(dir string) error {
- err := syscall.Unmount(dir, 0)
- if err != nil {
- err = &os.PathError{Op: "unmount", Path: dir, Err: err}
- return err
- }
- return nil
-}
diff --git a/vendor/github.com/codahale/hdrhistogram/LICENSE b/vendor/github.com/codahale/hdrhistogram/LICENSE
deleted file mode 100644
index f9835c241..000000000
--- a/vendor/github.com/codahale/hdrhistogram/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Coda Hale
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/github.com/codahale/hdrhistogram/README.md b/vendor/github.com/codahale/hdrhistogram/README.md
deleted file mode 100644
index 614b197c3..000000000
--- a/vendor/github.com/codahale/hdrhistogram/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-hdrhistogram
-============
-
-[![Build Status](https://travis-ci.org/codahale/hdrhistogram.png?branch=master)](https://travis-ci.org/codahale/hdrhistogram)
-
-A pure Go implementation of the [HDR Histogram](https://github.com/HdrHistogram/HdrHistogram).
-
-> A Histogram that supports recording and analyzing sampled data value counts
-> across a configurable integer value range with configurable value precision
-> within the range. Value precision is expressed as the number of significant
-> digits in the value recording, and provides control over value quantization
-> behavior across the value range and the subsequent value resolution at any
-> given level.
-
-For documentation, check [godoc](http://godoc.org/github.com/codahale/hdrhistogram).
diff --git a/vendor/github.com/codahale/hdrhistogram/hdr.go b/vendor/github.com/codahale/hdrhistogram/hdr.go
deleted file mode 100644
index c97842926..000000000
--- a/vendor/github.com/codahale/hdrhistogram/hdr.go
+++ /dev/null
@@ -1,564 +0,0 @@
-// Package hdrhistogram provides an implementation of Gil Tene's HDR Histogram
-// data structure. The HDR Histogram allows for fast and accurate analysis of
-// the extreme ranges of data with non-normal distributions, like latency.
-package hdrhistogram
-
-import (
- "fmt"
- "math"
-)
-
-// A Bracket is a part of a cumulative distribution.
-type Bracket struct {
- Quantile float64
- Count, ValueAt int64
-}
-
-// A Snapshot is an exported view of a Histogram, useful for serializing them.
-// A Histogram can be constructed from it by passing it to Import.
-type Snapshot struct {
- LowestTrackableValue int64
- HighestTrackableValue int64
- SignificantFigures int64
- Counts []int64
-}
-
-// A Histogram is a lossy data structure used to record the distribution of
-// non-normally distributed data (like latency) with a high degree of accuracy
-// and a bounded degree of precision.
-type Histogram struct {
- lowestTrackableValue int64
- highestTrackableValue int64
- unitMagnitude int64
- significantFigures int64
- subBucketHalfCountMagnitude int32
- subBucketHalfCount int32
- subBucketMask int64
- subBucketCount int32
- bucketCount int32
- countsLen int32
- totalCount int64
- counts []int64
-}
-
-// New returns a new Histogram instance capable of tracking values in the given
-// range and with the given amount of precision.
-func New(minValue, maxValue int64, sigfigs int) *Histogram {
- if sigfigs < 1 || 5 < sigfigs {
- panic(fmt.Errorf("sigfigs must be [1,5] (was %d)", sigfigs))
- }
-
- largestValueWithSingleUnitResolution := 2 * math.Pow10(sigfigs)
- subBucketCountMagnitude := int32(math.Ceil(math.Log2(float64(largestValueWithSingleUnitResolution))))
-
- subBucketHalfCountMagnitude := subBucketCountMagnitude
- if subBucketHalfCountMagnitude < 1 {
- subBucketHalfCountMagnitude = 1
- }
- subBucketHalfCountMagnitude--
-
- unitMagnitude := int32(math.Floor(math.Log2(float64(minValue))))
- if unitMagnitude < 0 {
- unitMagnitude = 0
- }
-
- subBucketCount := int32(math.Pow(2, float64(subBucketHalfCountMagnitude)+1))
-
- subBucketHalfCount := subBucketCount / 2
- subBucketMask := int64(subBucketCount-1) << uint(unitMagnitude)
-
- // determine exponent range needed to support the trackable value with no
- // overflow:
- smallestUntrackableValue := int64(subBucketCount) << uint(unitMagnitude)
- bucketsNeeded := int32(1)
- for smallestUntrackableValue < maxValue {
- smallestUntrackableValue <<= 1
- bucketsNeeded++
- }
-
- bucketCount := bucketsNeeded
- countsLen := (bucketCount + 1) * (subBucketCount / 2)
-
- return &Histogram{
- lowestTrackableValue: minValue,
- highestTrackableValue: maxValue,
- unitMagnitude: int64(unitMagnitude),
- significantFigures: int64(sigfigs),
- subBucketHalfCountMagnitude: subBucketHalfCountMagnitude,
- subBucketHalfCount: subBucketHalfCount,
- subBucketMask: subBucketMask,
- subBucketCount: subBucketCount,
- bucketCount: bucketCount,
- countsLen: countsLen,
- totalCount: 0,
- counts: make([]int64, countsLen),
- }
-}
-
-// ByteSize returns an estimate of the amount of memory allocated to the
-// histogram in bytes.
-//
-// N.B.: This does not take into account the overhead for slices, which are
-// small, constant, and specific to the compiler version.
-func (h *Histogram) ByteSize() int {
- return 6*8 + 5*4 + len(h.counts)*8
-}
-
-// Merge merges the data stored in the given histogram with the receiver,
-// returning the number of recorded values which had to be dropped.
-func (h *Histogram) Merge(from *Histogram) (dropped int64) {
- i := from.rIterator()
- for i.next() {
- v := i.valueFromIdx
- c := i.countAtIdx
-
- if h.RecordValues(v, c) != nil {
- dropped += c
- }
- }
-
- return
-}
-
-// TotalCount returns total number of values recorded.
-func (h *Histogram) TotalCount() int64 {
- return h.totalCount
-}
-
-// Max returns the approximate maximum recorded value.
-func (h *Histogram) Max() int64 {
- var max int64
- i := h.iterator()
- for i.next() {
- if i.countAtIdx != 0 {
- max = i.highestEquivalentValue
- }
- }
- return h.highestEquivalentValue(max)
-}
-
-// Min returns the approximate minimum recorded value.
-func (h *Histogram) Min() int64 {
- var min int64
- i := h.iterator()
- for i.next() {
- if i.countAtIdx != 0 && min == 0 {
- min = i.highestEquivalentValue
- break
- }
- }
- return h.lowestEquivalentValue(min)
-}
-
-// Mean returns the approximate arithmetic mean of the recorded values.
-func (h *Histogram) Mean() float64 {
- if h.totalCount == 0 {
- return 0
- }
- var total int64
- i := h.iterator()
- for i.next() {
- if i.countAtIdx != 0 {
- total += i.countAtIdx * h.medianEquivalentValue(i.valueFromIdx)
- }
- }
- return float64(total) / float64(h.totalCount)
-}
-
-// StdDev returns the approximate standard deviation of the recorded values.
-func (h *Histogram) StdDev() float64 {
- if h.totalCount == 0 {
- return 0
- }
-
- mean := h.Mean()
- geometricDevTotal := 0.0
-
- i := h.iterator()
- for i.next() {
- if i.countAtIdx != 0 {
- dev := float64(h.medianEquivalentValue(i.valueFromIdx)) - mean
- geometricDevTotal += (dev * dev) * float64(i.countAtIdx)
- }
- }
-
- return math.Sqrt(geometricDevTotal / float64(h.totalCount))
-}
-
-// Reset deletes all recorded values and restores the histogram to its original
-// state.
-func (h *Histogram) Reset() {
- h.totalCount = 0
- for i := range h.counts {
- h.counts[i] = 0
- }
-}
-
-// RecordValue records the given value, returning an error if the value is out
-// of range.
-func (h *Histogram) RecordValue(v int64) error {
- return h.RecordValues(v, 1)
-}
-
-// RecordCorrectedValue records the given value, correcting for stalls in the
-// recording process. This only works for processes which are recording values
-// at an expected interval (e.g., doing jitter analysis). Processes which are
-// recording ad-hoc values (e.g., latency for incoming requests) can't take
-// advantage of this.
-func (h *Histogram) RecordCorrectedValue(v, expectedInterval int64) error {
- if err := h.RecordValue(v); err != nil {
- return err
- }
-
- if expectedInterval <= 0 || v <= expectedInterval {
- return nil
- }
-
- missingValue := v - expectedInterval
- for missingValue >= expectedInterval {
- if err := h.RecordValue(missingValue); err != nil {
- return err
- }
- missingValue -= expectedInterval
- }
-
- return nil
-}
-
-// RecordValues records n occurrences of the given value, returning an error if
-// the value is out of range.
-func (h *Histogram) RecordValues(v, n int64) error {
- idx := h.countsIndexFor(v)
- if idx < 0 || int(h.countsLen) <= idx {
- return fmt.Errorf("value %d is too large to be recorded", v)
- }
- h.counts[idx] += n
- h.totalCount += n
-
- return nil
-}
-
-// ValueAtQuantile returns the recorded value at the given quantile (0..100).
-func (h *Histogram) ValueAtQuantile(q float64) int64 {
- if q > 100 {
- q = 100
- }
-
- total := int64(0)
- countAtPercentile := int64(((q / 100) * float64(h.totalCount)) + 0.5)
-
- i := h.iterator()
- for i.next() {
- total += i.countAtIdx
- if total >= countAtPercentile {
- return h.highestEquivalentValue(i.valueFromIdx)
- }
- }
-
- return 0
-}
-
-// CumulativeDistribution returns an ordered list of brackets of the
-// distribution of recorded values.
-func (h *Histogram) CumulativeDistribution() []Bracket {
- var result []Bracket
-
- i := h.pIterator(1)
- for i.next() {
- result = append(result, Bracket{
- Quantile: i.percentile,
- Count: i.countToIdx,
- ValueAt: i.highestEquivalentValue,
- })
- }
-
- return result
-}
-
-// SignificantFigures returns the significant figures used to create the
-// histogram
-func (h *Histogram) SignificantFigures() int64 {
- return h.significantFigures
-}
-
-// LowestTrackableValue returns the lower bound on values that will be added
-// to the histogram
-func (h *Histogram) LowestTrackableValue() int64 {
- return h.lowestTrackableValue
-}
-
-// HighestTrackableValue returns the upper bound on values that will be added
-// to the histogram
-func (h *Histogram) HighestTrackableValue() int64 {
- return h.highestTrackableValue
-}
-
-// Histogram bar for plotting
-type Bar struct {
- From, To, Count int64
-}
-
-// Pretty print as csv for easy plotting
-func (b Bar) String() string {
- return fmt.Sprintf("%v, %v, %v\n", b.From, b.To, b.Count)
-}
-
-// Distribution returns an ordered list of bars of the
-// distribution of recorded values, counts can be normalized to a probability
-func (h *Histogram) Distribution() (result []Bar) {
- i := h.iterator()
- for i.next() {
- result = append(result, Bar{
- Count: i.countAtIdx,
- From: h.lowestEquivalentValue(i.valueFromIdx),
- To: i.highestEquivalentValue,
- })
- }
-
- return result
-}
-
-// Equals returns true if the two Histograms are equivalent, false if not.
-func (h *Histogram) Equals(other *Histogram) bool {
- switch {
- case
- h.lowestTrackableValue != other.lowestTrackableValue,
- h.highestTrackableValue != other.highestTrackableValue,
- h.unitMagnitude != other.unitMagnitude,
- h.significantFigures != other.significantFigures,
- h.subBucketHalfCountMagnitude != other.subBucketHalfCountMagnitude,
- h.subBucketHalfCount != other.subBucketHalfCount,
- h.subBucketMask != other.subBucketMask,
- h.subBucketCount != other.subBucketCount,
- h.bucketCount != other.bucketCount,
- h.countsLen != other.countsLen,
- h.totalCount != other.totalCount:
- return false
- default:
- for i, c := range h.counts {
- if c != other.counts[i] {
- return false
- }
- }
- }
- return true
-}
-
-// Export returns a snapshot view of the Histogram. This can be later passed to
-// Import to construct a new Histogram with the same state.
-func (h *Histogram) Export() *Snapshot {
- return &Snapshot{
- LowestTrackableValue: h.lowestTrackableValue,
- HighestTrackableValue: h.highestTrackableValue,
- SignificantFigures: h.significantFigures,
- Counts: append([]int64(nil), h.counts...), // copy
- }
-}
-
-// Import returns a new Histogram populated from the Snapshot data (which the
-// caller must stop accessing).
-func Import(s *Snapshot) *Histogram {
- h := New(s.LowestTrackableValue, s.HighestTrackableValue, int(s.SignificantFigures))
- h.counts = s.Counts
- totalCount := int64(0)
- for i := int32(0); i < h.countsLen; i++ {
- countAtIndex := h.counts[i]
- if countAtIndex > 0 {
- totalCount += countAtIndex
- }
- }
- h.totalCount = totalCount
- return h
-}
-
-func (h *Histogram) iterator() *iterator {
- return &iterator{
- h: h,
- subBucketIdx: -1,
- }
-}
-
-func (h *Histogram) rIterator() *rIterator {
- return &rIterator{
- iterator: iterator{
- h: h,
- subBucketIdx: -1,
- },
- }
-}
-
-func (h *Histogram) pIterator(ticksPerHalfDistance int32) *pIterator {
- return &pIterator{
- iterator: iterator{
- h: h,
- subBucketIdx: -1,
- },
- ticksPerHalfDistance: ticksPerHalfDistance,
- }
-}
-
-func (h *Histogram) sizeOfEquivalentValueRange(v int64) int64 {
- bucketIdx := h.getBucketIndex(v)
- subBucketIdx := h.getSubBucketIdx(v, bucketIdx)
- adjustedBucket := bucketIdx
- if subBucketIdx >= h.subBucketCount {
- adjustedBucket++
- }
- return int64(1) << uint(h.unitMagnitude+int64(adjustedBucket))
-}
-
-func (h *Histogram) valueFromIndex(bucketIdx, subBucketIdx int32) int64 {
- return int64(subBucketIdx) << uint(int64(bucketIdx)+h.unitMagnitude)
-}
-
-func (h *Histogram) lowestEquivalentValue(v int64) int64 {
- bucketIdx := h.getBucketIndex(v)
- subBucketIdx := h.getSubBucketIdx(v, bucketIdx)
- return h.valueFromIndex(bucketIdx, subBucketIdx)
-}
-
-func (h *Histogram) nextNonEquivalentValue(v int64) int64 {
- return h.lowestEquivalentValue(v) + h.sizeOfEquivalentValueRange(v)
-}
-
-func (h *Histogram) highestEquivalentValue(v int64) int64 {
- return h.nextNonEquivalentValue(v) - 1
-}
-
-func (h *Histogram) medianEquivalentValue(v int64) int64 {
- return h.lowestEquivalentValue(v) + (h.sizeOfEquivalentValueRange(v) >> 1)
-}
-
-func (h *Histogram) getCountAtIndex(bucketIdx, subBucketIdx int32) int64 {
- return h.counts[h.countsIndex(bucketIdx, subBucketIdx)]
-}
-
-func (h *Histogram) countsIndex(bucketIdx, subBucketIdx int32) int32 {
- bucketBaseIdx := (bucketIdx + 1) << uint(h.subBucketHalfCountMagnitude)
- offsetInBucket := subBucketIdx - h.subBucketHalfCount
- return bucketBaseIdx + offsetInBucket
-}
-
-func (h *Histogram) getBucketIndex(v int64) int32 {
- pow2Ceiling := bitLen(v | h.subBucketMask)
- return int32(pow2Ceiling - int64(h.unitMagnitude) -
- int64(h.subBucketHalfCountMagnitude+1))
-}
-
-func (h *Histogram) getSubBucketIdx(v int64, idx int32) int32 {
- return int32(v >> uint(int64(idx)+int64(h.unitMagnitude)))
-}
-
-func (h *Histogram) countsIndexFor(v int64) int {
- bucketIdx := h.getBucketIndex(v)
- subBucketIdx := h.getSubBucketIdx(v, bucketIdx)
- return int(h.countsIndex(bucketIdx, subBucketIdx))
-}
-
-type iterator struct {
- h *Histogram
- bucketIdx, subBucketIdx int32
- countAtIdx, countToIdx, valueFromIdx int64
- highestEquivalentValue int64
-}
-
-func (i *iterator) next() bool {
- if i.countToIdx >= i.h.totalCount {
- return false
- }
-
- // increment bucket
- i.subBucketIdx++
- if i.subBucketIdx >= i.h.subBucketCount {
- i.subBucketIdx = i.h.subBucketHalfCount
- i.bucketIdx++
- }
-
- if i.bucketIdx >= i.h.bucketCount {
- return false
- }
-
- i.countAtIdx = i.h.getCountAtIndex(i.bucketIdx, i.subBucketIdx)
- i.countToIdx += i.countAtIdx
- i.valueFromIdx = i.h.valueFromIndex(i.bucketIdx, i.subBucketIdx)
- i.highestEquivalentValue = i.h.highestEquivalentValue(i.valueFromIdx)
-
- return true
-}
-
-type rIterator struct {
- iterator
- countAddedThisStep int64
-}
-
-func (r *rIterator) next() bool {
- for r.iterator.next() {
- if r.countAtIdx != 0 {
- r.countAddedThisStep = r.countAtIdx
- return true
- }
- }
- return false
-}
-
-type pIterator struct {
- iterator
- seenLastValue bool
- ticksPerHalfDistance int32
- percentileToIteratorTo float64
- percentile float64
-}
-
-func (p *pIterator) next() bool {
- if !(p.countToIdx < p.h.totalCount) {
- if p.seenLastValue {
- return false
- }
-
- p.seenLastValue = true
- p.percentile = 100
-
- return true
- }
-
- if p.subBucketIdx == -1 && !p.iterator.next() {
- return false
- }
-
- var done = false
- for !done {
- currentPercentile := (100.0 * float64(p.countToIdx)) / float64(p.h.totalCount)
- if p.countAtIdx != 0 && p.percentileToIteratorTo <= currentPercentile {
- p.percentile = p.percentileToIteratorTo
- halfDistance := math.Trunc(math.Pow(2, math.Trunc(math.Log2(100.0/(100.0-p.percentileToIteratorTo)))+1))
- percentileReportingTicks := float64(p.ticksPerHalfDistance) * halfDistance
- p.percentileToIteratorTo += 100.0 / percentileReportingTicks
- return true
- }
- done = !p.iterator.next()
- }
-
- return true
-}
-
-func bitLen(x int64) (n int64) {
- for ; x >= 0x8000; x >>= 16 {
- n += 16
- }
- if x >= 0x80 {
- x >>= 8
- n += 8
- }
- if x >= 0x8 {
- x >>= 4
- n += 4
- }
- if x >= 0x2 {
- x >>= 2
- n += 2
- }
- if x >= 0x1 {
- n++
- }
- return
-}
diff --git a/vendor/github.com/codahale/hdrhistogram/window.go b/vendor/github.com/codahale/hdrhistogram/window.go
deleted file mode 100644
index dc43612a4..000000000
--- a/vendor/github.com/codahale/hdrhistogram/window.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package hdrhistogram
-
-// A WindowedHistogram combines histograms to provide windowed statistics.
-type WindowedHistogram struct {
- idx int
- h []Histogram
- m *Histogram
-
- Current *Histogram
-}
-
-// NewWindowed creates a new WindowedHistogram with N underlying histograms with
-// the given parameters.
-func NewWindowed(n int, minValue, maxValue int64, sigfigs int) *WindowedHistogram {
- w := WindowedHistogram{
- idx: -1,
- h: make([]Histogram, n),
- m: New(minValue, maxValue, sigfigs),
- }
-
- for i := range w.h {
- w.h[i] = *New(minValue, maxValue, sigfigs)
- }
- w.Rotate()
-
- return &w
-}
-
-// Merge returns a histogram which includes the recorded values from all the
-// sections of the window.
-func (w *WindowedHistogram) Merge() *Histogram {
- w.m.Reset()
- for _, h := range w.h {
- w.m.Merge(&h)
- }
- return w.m
-}
-
-// Rotate resets the oldest histogram and rotates it to be used as the current
-// histogram.
-func (w *WindowedHistogram) Rotate() {
- w.idx++
- w.Current = &w.h[w.idx%len(w.h)]
- w.Current.Reset()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/CHANGELOG.md b/vendor/github.com/uber/jaeger-client-go/CHANGELOG.md
deleted file mode 100644
index 28e2c2425..000000000
--- a/vendor/github.com/uber/jaeger-client-go/CHANGELOG.md
+++ /dev/null
@@ -1,186 +0,0 @@
-Changes by Version
-==================
-
-2.15.0 (unreleased)
--------------------
-
-- nothing yet
-
-
-2.14.0 (2018-04-30)
--------------------
-
-- Support throttling for debug traces (#274) <Isaac Hier>
-- Remove dependency on Apache Thrift (#303) <Yuri Shkuro>
-- Remove dependency on tchannel (#295) (#294) <Yuri Shkuro>
-- Test with Go 1.9 (#298) <Yuri Shkuro>
-
-
-2.13.0 (2018-04-15)
--------------------
-
-- Use value receiver for config.NewTracer() (#283) <Yuri Shkuro>
-- Lock span during jaeger thrift conversion (#273) <Won Jun Jang>
-- Fix the RemotelyControlledSampler so that it terminates go-routine on Close() (#260) <Scott Kidder> <Yuri Shkuro>
-- Added support for client configuration via env vars (#275) <Juraci Paixão Kröhling>
-- Allow overriding sampler in the Config (#270) <Mike Kabischev>
-
-
-2.12.0 (2018-03-14)
--------------------
-
-- Use lock when retrieving span.Context() (#268)
-- Add Configuration support for custom Injector and Extractor (#263) <Martin Liu>
-
-
-2.11.2 (2018-01-12)
--------------------
-
-- Add Gopkg.toml to allow using the lib with `dep`
-
-
-2.11.1 (2018-01-03)
--------------------
-
-- Do not enqueue spans after Reporter is closed (#235, #245)
-- Change default flush interval to 1sec (#243)
-
-
-2.11.0 (2017-11-27)
--------------------
-
-- Normalize metric names and tags to be compatible with Prometheus (#222)
-
-
-2.10.0 (2017-11-14)
--------------------
-
-- Support custom tracing headers (#176)
-- Add BaggageRestrictionManager (#178) and RemoteBaggageRestrictionManager (#182)
-- Do not coerce baggage keys to lower case (#196)
-- Log span name when span cannot be reported (#198)
-- Add option to enable gen128Bit for tracer (#193) and allow custom generator for high bits of trace ID (#219)
-
-
-2.9.0 (2017-07-29)
-------------------
-
-- Pin thrift <= 0.10 (#179)
-- Introduce a parallel interface ContribObserver (#159)
-
-
-2.8.0 (2017-07-05)
-------------------
-
-- Drop `jaeger.` prefix from `jaeger.hostname` process-level tag
-- Add options to set tracer tags
-
-
-2.7.0 (2017-06-21)
-------------------
-
-- Fix rate limiter balance [#135](https://github.com/uber/jaeger-client-go/pull/135) [#140](https://github.com/uber/jaeger-client-go/pull/140)
-- Default client to send Jaeger.thrift [#147](https://github.com/uber/jaeger-client-go/pull/147)
-- Save baggage in span [#153](https://github.com/uber/jaeger-client-go/pull/153)
-- Move reporter.queueLength to the top of the struct to guarantee 64bit alignment [#158](https://github.com/uber/jaeger-client-go/pull/158)
-- Support HTTP transport with jaeger.thrift [#161](https://github.com/uber/jaeger-client-go/pull/161)
-
-
-2.6.0 (2017-03-28)
-------------------
-
-- Add config option to initialize RPC Metrics feature
-
-
-2.5.0 (2017-03-23)
-------------------
-
-- Split request latency metric by success/failure [#123](https://github.com/uber/jaeger-client-go/pull/123)
-- Add mutex to adaptive sampler and fix race condition [#124](https://github.com/uber/jaeger-client-go/pull/124)
-- Fix rate limiter panic [#125](https://github.com/uber/jaeger-client-go/pull/125)
-
-
-2.4.0 (2017-03-21)
-------------------
-
-- Remove `_ms` suffix from request latency metric name [#121](https://github.com/uber/jaeger-client-go/pull/121)
-- Rename all metrics to "request" and "http_request" and use tags for other dimensions [#121](https://github.com/uber/jaeger-client-go/pull/121)
-
-
-2.3.0 (2017-03-20)
-------------------
-
-- Make Span type public to allow access to non-std methods for testing [#117](https://github.com/uber/jaeger-client-go/pull/117)
-- Add a structured way to extract traces for logging with zap [#118](https://github.com/uber/jaeger-client-go/pull/118)
-
-
-2.2.1 (2017-03-14)
-------------------
-
-- Fix panic caused by updating the remote sampler from adaptive sampler to any other sampler type (https://github.com/uber/jaeger-client-go/pull/111)
-
-
-2.2.0 (2017-03-10)
-------------------
-
-- Introduce Observer and SpanObserver (https://github.com/uber/jaeger-client-go/pull/94)
-- Add RPC metrics emitter as Observer/SpanObserver (https://github.com/uber/jaeger-client-go/pull/103)
-
-
-2.1.2 (2017-02-27)
--------------------
-
-- Fix leaky bucket bug (https://github.com/uber/jaeger-client-go/pull/99)
-- Fix zap logger Infof (https://github.com/uber/jaeger-client-go/pull/100)
-- Add tracer initialization godoc examples
-
-
-2.1.1 (2017-02-21)
--------------------
-
-- Fix inefficient usage of zap.Logger
-
-
-2.1.0 (2017-02-17)
--------------------
-
-- Add adapter for zap.Logger (https://github.com/uber-go/zap)
-- Move logging API to ./log/ package
-
-
-2.0.0 (2017-02-08)
--------------------
-
-- Support Adaptive Sampling
-- Support 128bit Trace IDs
-- Change trace/span IDs from uint64 to strong types TraceID and SpanID
-- Add Zipkin HTTP B3 Propagation format support #72
-- Rip out existing metrics and use github.com/uber/jaeger-lib/metrics
-- Change API for tracer, reporter, sampler initialization
-
-
-1.6.0 (2016-10-14)
--------------------
-
-- Add Zipkin HTTP transport
-- Support external baggage via jaeger-baggage header
-- Unpin Thrift version, keep to master
-
-
-1.5.1 (2016-09-27)
--------------------
-
-- Relax dependency on opentracing to ^1
-
-
-1.5.0 (2016-09-27)
--------------------
-
-- Upgrade to opentracing-go 1.0
-- Support KV logging for Spans
-
-
-1.4.0 (2016-09-14)
--------------------
-
-- Support debug traces via HTTP header "jaeger-debug-id"
diff --git a/vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md b/vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md
deleted file mode 100644
index 7cf014a51..000000000
--- a/vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# How to Contribute to Jaeger
-
-We'd love your help!
-
-Jaeger is [Apache 2.0 licensed](LICENSE) and accepts contributions via GitHub
-pull requests. This document outlines some of the conventions on development
-workflow, commit message formatting, contact points and other resources to make
-it easier to get your contribution accepted.
-
-We gratefully welcome improvements to documentation as well as to code.
-
-# Certificate of Origin
-
-By contributing to this project you agree to the [Developer Certificate of
-Origin](https://developercertificate.org/) (DCO). This document was created
-by the Linux Kernel community and is a simple statement that you, as a
-contributor, have the legal right to make the contribution. See the [DCO](DCO)
-file for details.
-
-## Getting Started
-
-This library uses [glide](https://github.com/Masterminds/glide) to manage dependencies.
-
-To get started, make sure you clone the Git repository into the correct location
-`github.com/uber/jaeger-client-go` relative to `$GOPATH`:
-
-```
-mkdir -p $GOPATH/src/github.com/uber
-cd $GOPATH/src/github.com/uber
-git clone git@github.com:jaegertracing/jaeger-client-go.git jaeger-client-go
-cd jaeger-client-go
-```
-
-Then install dependencies and run the tests:
-
-```
-git submodule update --init --recursive
-glide install
-make test
-```
-
-## Imports grouping
-
-This projects follows the following pattern for grouping imports in Go files:
- * imports from standard library
- * imports from other projects
- * imports from `jaeger-client-go` project
-
-For example:
-
-```go
-import (
- "fmt"
-
- "github.com/uber/jaeger-lib/metrics"
- "go.uber.org/zap"
-
- "github.com/uber/jaeger-client-go/config"
-)
-```
-
-## Making A Change
-
-*Before making any significant changes, please [open an
-issue](https://github.com/jaegertracing/jaeger-client-go/issues).* Discussing your proposed
-changes ahead of time will make the contribution process smooth for everyone.
-
-Once we've discussed your changes and you've got your code ready, make sure
-that tests are passing (`make test` or `make cover`) and open your PR. Your
-pull request is most likely to be accepted if it:
-
-* Includes tests for new functionality.
-* Follows the guidelines in [Effective
- Go](https://golang.org/doc/effective_go.html) and the [Go team's common code
- review comments](https://github.com/golang/go/wiki/CodeReviewComments).
-* Has a [good commit message](https://chris.beams.io/posts/git-commit/):
- * Separate subject from body with a blank line
- * Limit the subject line to 50 characters
- * Capitalize the subject line
- * Do not end the subject line with a period
- * Use the imperative mood in the subject line
- * Wrap the body at 72 characters
- * Use the body to explain _what_ and _why_ instead of _how_
-* Each commit must be signed by the author ([see below](#sign-your-work)).
-
-## License
-
-By contributing your code, you agree to license your contribution under the terms
-of the [Apache License](LICENSE).
-
-If you are adding a new file it should have a header like below. The easiest
-way to add such header is to run `make fmt`.
-
-```
-// Copyright (c) 2017 The Jaeger Authors.
-//
-// 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.
-```
-
-## Sign your work
-
-The sign-off is a simple line at the end of the explanation for the
-patch, which certifies that you wrote it or otherwise have the right to
-pass it on as an open-source patch. The rules are pretty simple: if you
-can certify the below (from
-[developercertificate.org](http://developercertificate.org/)):
-
-```
-Developer Certificate of Origin
-Version 1.1
-
-Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
-660 York Street, Suite 102,
-San Francisco, CA 94110 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-
-
-Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-(a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-(b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-(c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-(d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-```
-
-then you just add a line to every git commit message:
-
- Signed-off-by: Joe Smith <joe@gmail.com>
-
-using your real name (sorry, no pseudonyms or anonymous contributions.)
-
-You can add the sign off when creating the git commit via `git commit -s`.
-
-If you want this to be automatic you can set up some aliases:
-
-```
-git config --add alias.amend "commit -s --amend"
-git config --add alias.c "commit -s"
-```
diff --git a/vendor/github.com/uber/jaeger-client-go/DCO b/vendor/github.com/uber/jaeger-client-go/DCO
deleted file mode 100644
index 068953d4b..000000000
--- a/vendor/github.com/uber/jaeger-client-go/DCO
+++ /dev/null
@@ -1,37 +0,0 @@
-Developer Certificate of Origin
-Version 1.1
-
-Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
-660 York Street, Suite 102,
-San Francisco, CA 94110 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-
-
-Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-(a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-(b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-(c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-(d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-
diff --git a/vendor/github.com/uber/jaeger-client-go/Gopkg.lock b/vendor/github.com/uber/jaeger-client-go/Gopkg.lock
deleted file mode 100644
index ec054c6ed..000000000
--- a/vendor/github.com/uber/jaeger-client-go/Gopkg.lock
+++ /dev/null
@@ -1,164 +0,0 @@
-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
-
-
-[[projects]]
- branch = "master"
- name = "github.com/beorn7/perks"
- packages = ["quantile"]
- revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
-
-[[projects]]
- branch = "master"
- name = "github.com/codahale/hdrhistogram"
- packages = ["."]
- revision = "3a0bb77429bd3a61596f5e8a3172445844342120"
-
-[[projects]]
- branch = "master"
- name = "github.com/crossdock/crossdock-go"
- packages = [
- ".",
- "assert",
- "require"
- ]
- revision = "049aabb0122b03bc9bd30cab8f3f91fb60166361"
-
-[[projects]]
- name = "github.com/davecgh/go-spew"
- packages = ["spew"]
- revision = "346938d642f2ec3594ed81d874461961cd0faa76"
- version = "v1.1.0"
-
-[[projects]]
- name = "github.com/golang/protobuf"
- packages = ["proto"]
- revision = "925541529c1fa6821df4e44ce2723319eb2be768"
- version = "v1.0.0"
-
-[[projects]]
- name = "github.com/matttproud/golang_protobuf_extensions"
- packages = ["pbutil"]
- revision = "3247c84500bff8d9fb6d579d800f20b3e091582c"
- version = "v1.0.0"
-
-[[projects]]
- name = "github.com/opentracing/opentracing-go"
- packages = [
- ".",
- "ext",
- "log"
- ]
- revision = "1949ddbfd147afd4d964a9f00b24eb291e0e7c38"
- version = "v1.0.2"
-
-[[projects]]
- name = "github.com/pkg/errors"
- packages = ["."]
- revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
- version = "v0.8.0"
-
-[[projects]]
- name = "github.com/pmezard/go-difflib"
- packages = ["difflib"]
- revision = "792786c7400a136282c1664665ae0a8db921c6c2"
- version = "v1.0.0"
-
-[[projects]]
- name = "github.com/prometheus/client_golang"
- packages = ["prometheus"]
- revision = "c5b7fccd204277076155f10851dad72b76a49317"
- version = "v0.8.0"
-
-[[projects]]
- branch = "master"
- name = "github.com/prometheus/client_model"
- packages = ["go"]
- revision = "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c"
-
-[[projects]]
- branch = "master"
- name = "github.com/prometheus/common"
- packages = [
- "expfmt",
- "internal/bitbucket.org/ww/goautoneg",
- "model"
- ]
- revision = "d811d2e9bf898806ecfb6ef6296774b13ffc314c"
-
-[[projects]]
- branch = "master"
- name = "github.com/prometheus/procfs"
- packages = [
- ".",
- "internal/util",
- "nfs",
- "xfs"
- ]
- revision = "8b1c2da0d56deffdbb9e48d4414b4e674bd8083e"
-
-[[projects]]
- name = "github.com/stretchr/testify"
- packages = [
- "assert",
- "require",
- "suite"
- ]
- revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
- version = "v1.2.1"
-
-[[projects]]
- name = "github.com/uber-go/atomic"
- packages = ["."]
- revision = "8474b86a5a6f79c443ce4b2992817ff32cf208b8"
- version = "v1.3.1"
-
-[[projects]]
- name = "github.com/uber/jaeger-lib"
- packages = [
- "metrics",
- "metrics/prometheus",
- "metrics/testutils"
- ]
- revision = "4267858c0679cd4e47cefed8d7f70fd386cfb567"
- version = "v1.4.0"
-
-[[projects]]
- name = "go.uber.org/atomic"
- packages = ["."]
- revision = "54f72d32435d760d5604f17a82e2435b28dc4ba5"
- version = "v1.3.0"
-
-[[projects]]
- name = "go.uber.org/multierr"
- packages = ["."]
- revision = "3c4937480c32f4c13a875a1829af76c98ca3d40a"
- version = "v1.1.0"
-
-[[projects]]
- name = "go.uber.org/zap"
- packages = [
- ".",
- "buffer",
- "internal/bufferpool",
- "internal/color",
- "internal/exit",
- "zapcore"
- ]
- revision = "eeedf312bc6c57391d84767a4cd413f02a917974"
- version = "v1.8.0"
-
-[[projects]]
- branch = "master"
- name = "golang.org/x/net"
- packages = [
- "context",
- "context/ctxhttp"
- ]
- revision = "5f9ae10d9af5b1c89ae6904293b14b064d4ada23"
-
-[solve-meta]
- analyzer-name = "dep"
- analyzer-version = 1
- inputs-digest = "f9dcfaf37a785c5dac1e20c29605eda29a83ba9c6f8842e92960dc94c8c4ff80"
- solver-name = "gps-cdcl"
- solver-version = 1
diff --git a/vendor/github.com/uber/jaeger-client-go/Gopkg.toml b/vendor/github.com/uber/jaeger-client-go/Gopkg.toml
deleted file mode 100644
index baf7a6bdf..000000000
--- a/vendor/github.com/uber/jaeger-client-go/Gopkg.toml
+++ /dev/null
@@ -1,27 +0,0 @@
-[[constraint]]
- name = "github.com/crossdock/crossdock-go"
- branch = "master"
-
-[[constraint]]
- name = "github.com/opentracing/opentracing-go"
- version = "^1"
-
-[[constraint]]
- name = "github.com/prometheus/client_golang"
- version = "0.8.0"
-
-[[constraint]]
- name = "github.com/stretchr/testify"
- version = "^1.1.3"
-
-[[constraint]]
- name = "github.com/uber-go/atomic"
- version = "^1"
-
-[[constraint]]
- name = "github.com/uber/jaeger-lib"
- version = "^1.3"
-
-[[constraint]]
- name = "go.uber.org/zap"
- version = "^1"
diff --git a/vendor/github.com/uber/jaeger-client-go/LICENSE b/vendor/github.com/uber/jaeger-client-go/LICENSE
deleted file mode 100644
index 261eeb9e9..000000000
--- a/vendor/github.com/uber/jaeger-client-go/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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.
diff --git a/vendor/github.com/uber/jaeger-client-go/Makefile b/vendor/github.com/uber/jaeger-client-go/Makefile
deleted file mode 100644
index 601cc6514..000000000
--- a/vendor/github.com/uber/jaeger-client-go/Makefile
+++ /dev/null
@@ -1,117 +0,0 @@
-PROJECT_ROOT=github.com/uber/jaeger-client-go
-PACKAGES := $(shell glide novendor | grep -v -e ./thrift-gen/... -e ./thrift/...)
-# all .go files that don't exist in hidden directories
-ALL_SRC := $(shell find . -name "*.go" | grep -v -e vendor -e thrift-gen -e ./thrift/ \
- -e ".*/\..*" \
- -e ".*/_.*" \
- -e ".*/mocks.*")
-
--include crossdock/rules.mk
-
-export GO15VENDOREXPERIMENT=1
-
-RACE=-race
-GOTEST=go test -v $(RACE)
-GOLINT=golint
-GOVET=go vet
-GOFMT=gofmt
-FMT_LOG=fmt.log
-LINT_LOG=lint.log
-
-THRIFT_VER=0.9.3
-THRIFT_IMG=thrift:$(THRIFT_VER)
-THRIFT=docker run -v "${PWD}:/data" $(THRIFT_IMG) thrift
-THRIFT_GO_ARGS=thrift_import="github.com/apache/thrift/lib/go/thrift"
-THRIFT_GEN_DIR=thrift-gen
-
-PASS=$(shell printf "\033[32mPASS\033[0m")
-FAIL=$(shell printf "\033[31mFAIL\033[0m")
-COLORIZE=sed ''/PASS/s//$(PASS)/'' | sed ''/FAIL/s//$(FAIL)/''
-
-.DEFAULT_GOAL := test-and-lint
-
-.PHONY: test-and-lint
-test-and-lint: test fmt lint
-
-.PHONY: test
-test:
- bash -c "set -e; set -o pipefail; $(GOTEST) $(PACKAGES) | $(COLORIZE)"
-
-.PHONY: fmt
-fmt:
- $(GOFMT) -e -s -l -w $(ALL_SRC)
- ./scripts/updateLicenses.sh
-
-.PHONY: lint
-lint:
- $(GOVET) $(PACKAGES)
- @cat /dev/null > $(LINT_LOG)
- @$(foreach pkg, $(PACKAGES), $(GOLINT) $(pkg) | grep -v crossdock/thrift >> $(LINT_LOG) || true;)
- @[ ! -s "$(LINT_LOG)" ] || (echo "Lint Failures" | cat - $(LINT_LOG) && false)
- @$(GOFMT) -e -s -l $(ALL_SRC) > $(FMT_LOG)
- ./scripts/updateLicenses.sh >> $(FMT_LOG)
- @[ ! -s "$(FMT_LOG)" ] || (echo "go fmt or license check failures, run 'make fmt'" | cat - $(FMT_LOG) && false)
-
-
-.PHONY: install
-install:
- glide --version || go get github.com/Masterminds/glide
-ifeq ($(USE_DEP),true)
- dep ensure
-else
- glide install
-endif
-
-
-.PHONY: cover
-cover:
- ./scripts/cover.sh $(shell go list $(PACKAGES))
- go tool cover -html=cover.out -o cover.html
-
-
-# This is not part of the regular test target because we don't want to slow it
-# down.
-.PHONY: test-examples
-test-examples:
- make -C examples
-
-# TODO at the moment we're not generating tchan_*.go files
-thrift: idl-submodule thrift-image
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/agent.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/sampling.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/jaeger.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/zipkincore.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/baggage.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/crossdock/thrift/ /data/idl/thrift/crossdock/tracetest.thrift
- sed -i '' 's|"zipkincore"|"$(PROJECT_ROOT)/thrift-gen/zipkincore"|g' $(THRIFT_GEN_DIR)/agent/*.go
- sed -i '' 's|"jaeger"|"$(PROJECT_ROOT)/thrift-gen/jaeger"|g' $(THRIFT_GEN_DIR)/agent/*.go
- sed -i '' 's|"github.com/apache/thrift/lib/go/thrift"|"github.com/uber/jaeger-client-go/thrift"|g' \
- $(THRIFT_GEN_DIR)/*/*.go crossdock/thrift/tracetest/*.go
- rm -rf thrift-gen/*/*-remote
- rm -rf crossdock/thrift/*/*-remote
- rm -rf thrift-gen/jaeger/collector.go
-
-idl-submodule:
- git submodule init
- git submodule update
-
-thrift-image:
- $(THRIFT) -version
-
-.PHONY: install-dep-ci
-install-dep-ci:
- - curl -L -s https://github.com/golang/dep/releases/download/v0.3.2/dep-linux-amd64 -o $$GOPATH/bin/dep
- - chmod +x $$GOPATH/bin/dep
-
-.PHONY: install-ci
-install-ci: install-dep-ci install
- go get github.com/wadey/gocovmerge
- go get github.com/mattn/goveralls
- go get golang.org/x/tools/cmd/cover
- go get github.com/golang/lint/golint
-
-.PHONY: test-ci
-test-ci:
- @./scripts/cover.sh $(shell go list $(PACKAGES))
- make lint
-
diff --git a/vendor/github.com/uber/jaeger-client-go/README.md b/vendor/github.com/uber/jaeger-client-go/README.md
deleted file mode 100644
index 16b04454e..000000000
--- a/vendor/github.com/uber/jaeger-client-go/README.md
+++ /dev/null
@@ -1,260 +0,0 @@
-[![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![OpenTracing 1.0 Enabled][ot-img]][ot-url]
-
-# Jaeger Bindings for Go OpenTracing API
-
-Instrumentation library that implements an
-[OpenTracing](http://opentracing.io) Tracer for Jaeger (https://jaegertracing.io).
-
-**IMPORTANT**: The library's import path is based on its original location under `github.com/uber`. Do not try to import it as `github.com/jaegertracing`, it will not compile. We might revisit this in the next major release.
- * :white_check_mark: `import "github.com/uber/jaeger-client-go"`
- * :x: `import "github.com/jaegertracing/jaeger-client-go"`
-
-## How to Contribute
-
-Please see [CONTRIBUTING.md](CONTRIBUTING.md).
-
-## Installation
-
-We recommended using a dependency manager like [glide](https://github.com/Masterminds/glide)
-and [semantic versioning](http://semver.org/) when including this library into an application.
-For example, Jaeger backend imports this library like this:
-
-```yaml
-- package: github.com/uber/jaeger-client-go
- version: ^2.7.0
-```
-
-If you instead want to use the latest version in `master`, you can pull it via `go get`.
-Note that during `go get` you may see build errors due to incompatible dependencies, which is why
-we recommend using semantic versions for dependencies. The error may be fixed by running
-`make install` (it will install `glide` if you don't have it):
-
-```shell
-go get -u github.com/uber/jaeger-client-go/
-cd $GOPATH/src/github.com/uber/jaeger-client-go/
-git submodule update --init --recursive
-make install
-```
-
-## Initialization
-
-See tracer initialization examples in [godoc](https://godoc.org/github.com/uber/jaeger-client-go/config#pkg-examples)
-and [config/example_test.go](./config/example_test.go).
-
-### Environment variables
-
-The tracer can be initialized with values coming from environment variables. None of the env vars are required
-and all of them can be overriden via direct setting of the property on the configuration object.
-
-Property| Description
---- | ---
-JAEGER_SERVICE_NAME | The service name
-JAEGER_AGENT_HOST | The hostname for communicating with agent via UDP
-JAEGER_AGENT_PORT | The port for communicating with agent via UDP
-JAEGER_REPORTER_LOG_SPANS | Whether the reporter should also log the spans
-JAEGER_REPORTER_MAX_QUEUE_SIZE | The reporter's maximum queue size
-JAEGER_REPORTER_FLUSH_INTERVAL | The reporter's flush interval (ms)
-JAEGER_SAMPLER_TYPE | The sampler type
-JAEGER_SAMPLER_PARAM | The sampler parameter (number)
-JAEGER_SAMPLER_MANAGER_HOST_PORT | The host name and port when using the remote controlled sampler
-JAEGER_SAMPLER_MAX_OPERATIONS | The maximum number of operations that the sampler will keep track of
-JAEGER_SAMPLER_REFRESH_INTERVAL | How often the remotely controlled sampler will poll jaeger-agent for the appropriate sampling strategy
-JAEGER_TAGS | A comma separated list of `name = value` tracer level tags, which get added to all reported spans. The value can also refer to an environment variable using the format `${envVarName:default}`, where the `:default` is optional, and identifies a value to be used if the environment variable cannot be found
-JAEGER_DISABLED | Whether the tracer is disabled or not. If true, the default `opentracing.NoopTracer` is used.
-JAEGER_RPC_METRICS | Whether to store RPC metrics
-
-### Closing the tracer via `io.Closer`
-
-The constructor function for Jaeger Tracer returns the tracer itself and an `io.Closer` instance.
-It is recommended to structure your `main()` so that it calls the `Close()` function on the closer
-before exiting, e.g.
-
-```go
-tracer, closer, err := cfg.NewTracer(...)
-defer closer.Close()
-```
-
-This is especially useful for command-line tools that enable tracing, as well as
-for the long-running apps that support graceful shutdown. For example, if your deployment
-system sends SIGTERM instead of killing the process and you trap that signal to do a graceful
-exit, then having `defer closer.Closer()` ensures that all buffered spans are flushed.
-
-### Metrics & Monitoring
-
-The tracer emits a number of different metrics, defined in
-[metrics.go](metrics.go). The monitoring backend is expected to support
-tag-based metric names, e.g. instead of `statsd`-style string names
-like `counters.my-service.jaeger.spans.started.sampled`, the metrics
-are defined by a short name and a collection of key/value tags, for
-example: `name:jaeger.traces, state:started, sampled:y`. See [metrics.go](./metrics.go)
-file for the full list and descriptions of emitted metrics.
-
-The monitoring backend is represented by the `metrics.Factory` interface from package
-[`"github.com/uber/jaeger-lib/metrics"`](https://github.com/jaegertracing/jaeger-lib/tree/master/metrics). An implementation
-of that interface can be passed as an option to either the Configuration object or the Tracer
-constructor, for example:
-
-```go
-import (
- "github.com/uber/jaeger-client-go/config"
- "github.com/uber/jaeger-lib/metrics/prometheus"
-)
-
- metricsFactory := prometheus.New()
- tracer, closer, err := config.Configuration{
- ServiceName: "your-service-name",
- }.NewTracer(
- config.Metrics(metricsFactory),
- )
-```
-
-By default, a no-op `metrics.NullFactory` is used.
-
-### Logging
-
-The tracer can be configured with an optional logger, which will be
-used to log communication errors, or log spans if a logging reporter
-option is specified in the configuration. The logging API is abstracted
-by the [Logger](logger.go) interface. A logger instance implementing
-this interface can be set on the `Config` object before calling the
-`New` method.
-
-Besides the [zap](https://github.com/uber-go/zap) implementation
-bundled with this package there is also a [go-kit](https://github.com/go-kit/kit)
-one in the [jaeger-lib](https://github.com/jaegertracing/jaeger-lib) repository.
-
-## Instrumentation for Tracing
-
-Since this tracer is fully compliant with OpenTracing API 1.0,
-all code instrumentation should only use the API itself, as described
-in the [opentracing-go](https://github.com/opentracing/opentracing-go) documentation.
-
-## Features
-
-### Reporters
-
-A "reporter" is a component that receives the finished spans and reports
-them to somewhere. Under normal circumstances, the Tracer
-should use the default `RemoteReporter`, which sends the spans out of
-process via configurable "transport". For testing purposes, one can
-use an `InMemoryReporter` that accumulates spans in a buffer and
-allows to retrieve them for later verification. Also available are
-`NullReporter`, a no-op reporter that does nothing, a `LoggingReporter`
-which logs all finished spans using their `String()` method, and a
-`CompositeReporter` that can be used to combine more than one reporter
-into one, e.g. to attach a logging reporter to the main remote reporter.
-
-### Span Reporting Transports
-
-The remote reporter uses "transports" to actually send the spans out
-of process. Currently the supported transports include:
- * [Jaeger Thrift](https://github.com/jaegertracing/jaeger-idl/blob/master/thrift/agent.thrift) over UDP or HTTP,
- * [Zipkin Thrift](https://github.com/jaegertracing/jaeger-idl/blob/master/thrift/zipkincore.thrift) over HTTP.
-
-### Sampling
-
-The tracer does not record all spans, but only those that have the
-sampling bit set in the `flags`. When a new trace is started and a new
-unique ID is generated, a sampling decision is made whether this trace
-should be sampled. The sampling decision is propagated to all downstream
-calls via the `flags` field of the trace context. The following samplers
-are available:
- 1. `RemotelyControlledSampler` uses one of the other simpler samplers
- and periodically updates it by polling an external server. This
- allows dynamic control of the sampling strategies.
- 1. `ConstSampler` always makes the same sampling decision for all
- trace IDs. it can be configured to either sample all traces, or
- to sample none.
- 1. `ProbabilisticSampler` uses a fixed sampling rate as a probability
- for a given trace to be sampled. The actual decision is made by
- comparing the trace ID with a random number multiplied by the
- sampling rate.
- 1. `RateLimitingSampler` can be used to allow only a certain fixed
- number of traces to be sampled per second.
-
-### Baggage Injection
-
-The OpenTracing spec allows for [baggage][baggage], which are key value pairs that are added
-to the span context and propagated throughout the trace. An external process can inject baggage
-by setting the special HTTP Header `jaeger-baggage` on a request:
-
-```sh
-curl -H "jaeger-baggage: key1=value1, key2=value2" http://myhost.com
-```
-
-Baggage can also be programatically set inside your service:
-
-```go
-if span := opentracing.SpanFromContext(ctx); span != nil {
- span.SetBaggageItem("key", "value")
-}
-```
-
-Another service downstream of that can retrieve the baggage in a similar way:
-
-```go
-if span := opentracing.SpanFromContext(ctx); span != nil {
- val := span.BaggageItem("key")
- println(val)
-}
-```
-
-### Debug Traces (Forced Sampling)
-
-#### Programmatically
-
-The OpenTracing API defines a `sampling.priority` standard tag that
-can be used to affect the sampling of a span and its children:
-
-```go
-import (
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
-)
-
-span := opentracing.SpanFromContext(ctx)
-ext.SamplingPriority.Set(span, 1)
-```
-
-#### Via HTTP Headers
-
-Jaeger Tracer also understands a special HTTP Header `jaeger-debug-id`,
-which can be set in the incoming request, e.g.
-
-```sh
-curl -H "jaeger-debug-id: some-correlation-id" http://myhost.com
-```
-
-When Jaeger sees this header in the request that otherwise has no
-tracing context, it ensures that the new trace started for this
-request will be sampled in the "debug" mode (meaning it should survive
-all downsampling that might happen in the collection pipeline), and the
-root span will have a tag as if this statement was executed:
-
-```go
-span.SetTag("jaeger-debug-id", "some-correlation-id")
-```
-
-This allows using Jaeger UI to find the trace by this tag.
-
-### Zipkin HTTP B3 compatible header propagation
-
-Jaeger Tracer supports Zipkin B3 Propagation HTTP headers, which are used
-by a lot of Zipkin tracers. This means that you can use Jaeger in conjunction with e.g. [these OpenZipkin tracers](https://github.com/openzipkin).
-
-However it is not the default propagation format, see [here](zipkin/README.md#NewZipkinB3HTTPHeaderPropagator) how to set it up.
-
-## License
-
-[Apache 2.0 License](LICENSE).
-
-
-[doc-img]: https://godoc.org/github.com/uber/jaeger-client-go?status.svg
-[doc]: https://godoc.org/github.com/uber/jaeger-client-go
-[ci-img]: https://travis-ci.org/jaegertracing/jaeger-client-go.svg?branch=master
-[ci]: https://travis-ci.org/jaegertracing/jaeger-client-go
-[cov-img]: https://codecov.io/gh/jaegertracing/jaeger-client-go/branch/master/graph/badge.svg
-[cov]: https://codecov.io/gh/jaegertracing/jaeger-client-go
-[ot-img]: https://img.shields.io/badge/OpenTracing--1.0-enabled-blue.svg
-[ot-url]: http://opentracing.io
-[baggage]: https://github.com/opentracing/specification/blob/master/specification.md#set-a-baggage-item
diff --git a/vendor/github.com/uber/jaeger-client-go/RELEASE.md b/vendor/github.com/uber/jaeger-client-go/RELEASE.md
deleted file mode 100644
index 115e49ab8..000000000
--- a/vendor/github.com/uber/jaeger-client-go/RELEASE.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Release Process
-
-1. Create a PR "Preparing for release X.Y.Z" against master branch
- * Alter CHANGELOG.md from `<placeholder_version> (unreleased)` to `<X.Y.Z> (YYYY-MM-DD)`
- * Update `JaegerClientVersion` in constants.go to `Go-X.Y.Z`
-2. Create a release "Release X.Y.Z" on Github
- * Create Tag `vX.Y.Z`
- * Copy CHANGELOG.md into the release notes
-3. Create a PR "Back to development" against master branch
- * Add `<next_version> (unreleased)` to CHANGELOG.md
- * Update `JaegerClientVersion` in constants.go to `Go-<next_version>dev`
diff --git a/vendor/github.com/uber/jaeger-client-go/baggage_setter.go b/vendor/github.com/uber/jaeger-client-go/baggage_setter.go
deleted file mode 100644
index 1037ca0e8..000000000
--- a/vendor/github.com/uber/jaeger-client-go/baggage_setter.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/opentracing/opentracing-go/log"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
-)
-
-// baggageSetter is an actor that can set a baggage value on a Span given certain
-// restrictions (eg. maxValueLength).
-type baggageSetter struct {
- restrictionManager baggage.RestrictionManager
- metrics *Metrics
-}
-
-func newBaggageSetter(restrictionManager baggage.RestrictionManager, metrics *Metrics) *baggageSetter {
- return &baggageSetter{
- restrictionManager: restrictionManager,
- metrics: metrics,
- }
-}
-
-// (NB) span should hold the lock before making this call
-func (s *baggageSetter) setBaggage(span *Span, key, value string) {
- var truncated bool
- var prevItem string
- restriction := s.restrictionManager.GetRestriction(span.serviceName(), key)
- if !restriction.KeyAllowed() {
- s.logFields(span, key, value, prevItem, truncated, restriction.KeyAllowed())
- s.metrics.BaggageUpdateFailure.Inc(1)
- return
- }
- if len(value) > restriction.MaxValueLength() {
- truncated = true
- value = value[:restriction.MaxValueLength()]
- s.metrics.BaggageTruncate.Inc(1)
- }
- prevItem = span.context.baggage[key]
- s.logFields(span, key, value, prevItem, truncated, restriction.KeyAllowed())
- span.context = span.context.WithBaggageItem(key, value)
- s.metrics.BaggageUpdateSuccess.Inc(1)
-}
-
-func (s *baggageSetter) logFields(span *Span, key, value, prevItem string, truncated, valid bool) {
- if !span.context.IsSampled() {
- return
- }
- fields := []log.Field{
- log.String("event", "baggage"),
- log.String("key", key),
- log.String("value", value),
- }
- if prevItem != "" {
- fields = append(fields, log.String("override", "true"))
- }
- if truncated {
- fields = append(fields, log.String("truncated", "true"))
- }
- if !valid {
- fields = append(fields, log.String("invalid", "true"))
- }
- span.logFieldsNoLocking(fields...)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/config/config.go b/vendor/github.com/uber/jaeger-client-go/config/config.go
deleted file mode 100644
index 1eb296778..000000000
--- a/vendor/github.com/uber/jaeger-client-go/config/config.go
+++ /dev/null
@@ -1,373 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 config
-
-import (
- "errors"
- "fmt"
- "io"
- "strings"
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- "github.com/uber/jaeger-client-go"
- "github.com/uber/jaeger-client-go/internal/baggage/remote"
- throttler "github.com/uber/jaeger-client-go/internal/throttler/remote"
- "github.com/uber/jaeger-client-go/rpcmetrics"
-)
-
-const defaultSamplingProbability = 0.001
-
-// Configuration configures and creates Jaeger Tracer
-type Configuration struct {
- // ServiceName specifies the service name to use on the tracer.
- // Can be provided via environment variable named JAEGER_SERVICE_NAME
- ServiceName string `yaml:"serviceName"`
-
- // Disabled can be provided via environment variable named JAEGER_DISABLED
- Disabled bool `yaml:"disabled"`
-
- // RPCMetrics can be provided via environment variable named JAEGER_RPC_METRICS
- RPCMetrics bool `yaml:"rpc_metrics"`
-
- // Tags can be provided via environment variable named JAEGER_TAGS
- Tags []opentracing.Tag `yaml:"tags"`
-
- Sampler *SamplerConfig `yaml:"sampler"`
- Reporter *ReporterConfig `yaml:"reporter"`
- Headers *jaeger.HeadersConfig `yaml:"headers"`
- BaggageRestrictions *BaggageRestrictionsConfig `yaml:"baggage_restrictions"`
- Throttler *ThrottlerConfig `yaml:"throttler"`
-}
-
-// SamplerConfig allows initializing a non-default sampler. All fields are optional.
-type SamplerConfig struct {
- // Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote
- // Can be set by exporting an environment variable named JAEGER_SAMPLER_TYPE
- Type string `yaml:"type"`
-
- // Param is a value passed to the sampler.
- // Valid values for Param field are:
- // - for "const" sampler, 0 or 1 for always false/true respectively
- // - for "probabilistic" sampler, a probability between 0 and 1
- // - for "rateLimiting" sampler, the number of spans per second
- // - for "remote" sampler, param is the same as for "probabilistic"
- // and indicates the initial sampling rate before the actual one
- // is received from the mothership.
- // Can be set by exporting an environment variable named JAEGER_SAMPLER_PARAM
- Param float64 `yaml:"param"`
-
- // SamplingServerURL is the address of jaeger-agent's HTTP sampling server
- // Can be set by exporting an environment variable named JAEGER_SAMPLER_MANAGER_HOST_PORT
- SamplingServerURL string `yaml:"samplingServerURL"`
-
- // MaxOperations is the maximum number of operations that the sampler
- // will keep track of. If an operation is not tracked, a default probabilistic
- // sampler will be used rather than the per operation specific sampler.
- // Can be set by exporting an environment variable named JAEGER_SAMPLER_MAX_OPERATIONS
- MaxOperations int `yaml:"maxOperations"`
-
- // SamplingRefreshInterval controls how often the remotely controlled sampler will poll
- // jaeger-agent for the appropriate sampling strategy.
- // Can be set by exporting an environment variable named JAEGER_SAMPLER_REFRESH_INTERVAL
- SamplingRefreshInterval time.Duration `yaml:"samplingRefreshInterval"`
-}
-
-// ReporterConfig configures the reporter. All fields are optional.
-type ReporterConfig struct {
- // QueueSize controls how many spans the reporter can keep in memory before it starts dropping
- // new spans. The queue is continuously drained by a background go-routine, as fast as spans
- // can be sent out of process.
- // Can be set by exporting an environment variable named JAEGER_REPORTER_MAX_QUEUE_SIZE
- QueueSize int `yaml:"queueSize"`
-
- // BufferFlushInterval controls how often the buffer is force-flushed, even if it's not full.
- // It is generally not useful, as it only matters for very low traffic services.
- // Can be set by exporting an environment variable named JAEGER_REPORTER_FLUSH_INTERVAL
- BufferFlushInterval time.Duration
-
- // LogSpans, when true, enables LoggingReporter that runs in parallel with the main reporter
- // and logs all submitted spans. Main Configuration.Logger must be initialized in the code
- // for this option to have any effect.
- // Can be set by exporting an environment variable named JAEGER_REPORTER_LOG_SPANS
- LogSpans bool `yaml:"logSpans"`
-
- // LocalAgentHostPort instructs reporter to send spans to jaeger-agent at this address
- // Can be set by exporting an environment variable named JAEGER_AGENT_HOST / JAEGER_AGENT_PORT
- LocalAgentHostPort string `yaml:"localAgentHostPort"`
-}
-
-// BaggageRestrictionsConfig configures the baggage restrictions manager which can be used to whitelist
-// certain baggage keys. All fields are optional.
-type BaggageRestrictionsConfig struct {
- // DenyBaggageOnInitializationFailure controls the startup failure mode of the baggage restriction
- // manager. If true, the manager will not allow any baggage to be written until baggage restrictions have
- // been retrieved from jaeger-agent. If false, the manager wil allow any baggage to be written until baggage
- // restrictions have been retrieved from jaeger-agent.
- DenyBaggageOnInitializationFailure bool `yaml:"denyBaggageOnInitializationFailure"`
-
- // HostPort is the hostPort of jaeger-agent's baggage restrictions server
- HostPort string `yaml:"hostPort"`
-
- // RefreshInterval controls how often the baggage restriction manager will poll
- // jaeger-agent for the most recent baggage restrictions.
- RefreshInterval time.Duration `yaml:"refreshInterval"`
-}
-
-// ThrottlerConfig configures the throttler which can be used to throttle the
-// rate at which the client may send debug requests.
-type ThrottlerConfig struct {
- // HostPort of jaeger-agent's credit server.
- HostPort string `yaml:"hostPort"`
-
- // RefreshInterval controls how often the throttler will poll jaeger-agent
- // for more throttling credits.
- RefreshInterval time.Duration `yaml:"refreshInterval"`
-
- // SynchronousInitialization determines whether or not the throttler should
- // synchronously fetch credits from the agent when an operation is seen for
- // the first time. This should be set to true if the client will be used by
- // a short lived service that needs to ensure that credits are fetched
- // upfront such that sampling or throttling occurs.
- SynchronousInitialization bool `yaml:"synchronousInitialization"`
-}
-
-type nullCloser struct{}
-
-func (*nullCloser) Close() error { return nil }
-
-// New creates a new Jaeger Tracer, and a closer func that can be used to flush buffers
-// before shutdown.
-//
-// Deprecated: use NewTracer() function
-func (c Configuration) New(
- serviceName string,
- options ...Option,
-) (opentracing.Tracer, io.Closer, error) {
- if serviceName != "" {
- c.ServiceName = serviceName
- }
-
- return c.NewTracer(options...)
-}
-
-// NewTracer returns a new tracer based on the current configuration, using the given options,
-// and a closer func that can be used to flush buffers before shutdown.
-func (c Configuration) NewTracer(options ...Option) (opentracing.Tracer, io.Closer, error) {
- if c.ServiceName == "" {
- return nil, nil, errors.New("no service name provided")
- }
-
- if c.Disabled {
- return &opentracing.NoopTracer{}, &nullCloser{}, nil
- }
- opts := applyOptions(options...)
- tracerMetrics := jaeger.NewMetrics(opts.metrics, nil)
- if c.RPCMetrics {
- Observer(
- rpcmetrics.NewObserver(
- opts.metrics.Namespace("jaeger-rpc", map[string]string{"component": "jaeger"}),
- rpcmetrics.DefaultNameNormalizer,
- ),
- )(&opts) // adds to c.observers
- }
- if c.Sampler == nil {
- c.Sampler = &SamplerConfig{
- Type: jaeger.SamplerTypeRemote,
- Param: defaultSamplingProbability,
- }
- }
- if c.Reporter == nil {
- c.Reporter = &ReporterConfig{}
- }
-
- sampler := opts.sampler
- if sampler == nil {
- s, err := c.Sampler.NewSampler(c.ServiceName, tracerMetrics)
- if err != nil {
- return nil, nil, err
- }
- sampler = s
- }
-
- reporter := opts.reporter
- if reporter == nil {
- r, err := c.Reporter.NewReporter(c.ServiceName, tracerMetrics, opts.logger)
- if err != nil {
- return nil, nil, err
- }
- reporter = r
- }
-
- tracerOptions := []jaeger.TracerOption{
- jaeger.TracerOptions.Metrics(tracerMetrics),
- jaeger.TracerOptions.Logger(opts.logger),
- jaeger.TracerOptions.CustomHeaderKeys(c.Headers),
- jaeger.TracerOptions.Gen128Bit(opts.gen128Bit),
- jaeger.TracerOptions.ZipkinSharedRPCSpan(opts.zipkinSharedRPCSpan),
- jaeger.TracerOptions.MaxTagValueLength(opts.maxTagValueLength),
- }
-
- for _, tag := range opts.tags {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Tag(tag.Key, tag.Value))
- }
-
- for _, tag := range c.Tags {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Tag(tag.Key, tag.Value))
- }
-
- for _, obs := range opts.observers {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Observer(obs))
- }
-
- for _, cobs := range opts.contribObservers {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.ContribObserver(cobs))
- }
-
- for format, injector := range opts.injectors {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Injector(format, injector))
- }
-
- for format, extractor := range opts.extractors {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Extractor(format, extractor))
- }
-
- if c.BaggageRestrictions != nil {
- mgr := remote.NewRestrictionManager(
- c.ServiceName,
- remote.Options.Metrics(tracerMetrics),
- remote.Options.Logger(opts.logger),
- remote.Options.HostPort(c.BaggageRestrictions.HostPort),
- remote.Options.RefreshInterval(c.BaggageRestrictions.RefreshInterval),
- remote.Options.DenyBaggageOnInitializationFailure(
- c.BaggageRestrictions.DenyBaggageOnInitializationFailure,
- ),
- )
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.BaggageRestrictionManager(mgr))
- }
-
- if c.Throttler != nil {
- debugThrottler := throttler.NewThrottler(
- c.ServiceName,
- throttler.Options.Metrics(tracerMetrics),
- throttler.Options.Logger(opts.logger),
- throttler.Options.HostPort(c.Throttler.HostPort),
- throttler.Options.RefreshInterval(c.Throttler.RefreshInterval),
- throttler.Options.SynchronousInitialization(
- c.Throttler.SynchronousInitialization,
- ),
- )
-
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.DebugThrottler(debugThrottler))
- }
-
- tracer, closer := jaeger.NewTracer(
- c.ServiceName,
- sampler,
- reporter,
- tracerOptions...,
- )
-
- return tracer, closer, nil
-}
-
-// InitGlobalTracer creates a new Jaeger Tracer, and sets it as global OpenTracing Tracer.
-// It returns a closer func that can be used to flush buffers before shutdown.
-func (c Configuration) InitGlobalTracer(
- serviceName string,
- options ...Option,
-) (io.Closer, error) {
- if c.Disabled {
- return &nullCloser{}, nil
- }
- tracer, closer, err := c.New(serviceName, options...)
- if err != nil {
- return nil, err
- }
- opentracing.SetGlobalTracer(tracer)
- return closer, nil
-}
-
-// NewSampler creates a new sampler based on the configuration
-func (sc *SamplerConfig) NewSampler(
- serviceName string,
- metrics *jaeger.Metrics,
-) (jaeger.Sampler, error) {
- samplerType := strings.ToLower(sc.Type)
- if samplerType == jaeger.SamplerTypeConst {
- return jaeger.NewConstSampler(sc.Param != 0), nil
- }
- if samplerType == jaeger.SamplerTypeProbabilistic {
- if sc.Param >= 0 && sc.Param <= 1.0 {
- return jaeger.NewProbabilisticSampler(sc.Param)
- }
- return nil, fmt.Errorf(
- "Invalid Param for probabilistic sampler: %v. Expecting value between 0 and 1",
- sc.Param,
- )
- }
- if samplerType == jaeger.SamplerTypeRateLimiting {
- return jaeger.NewRateLimitingSampler(sc.Param), nil
- }
- if samplerType == jaeger.SamplerTypeRemote || sc.Type == "" {
- sc2 := *sc
- sc2.Type = jaeger.SamplerTypeProbabilistic
- initSampler, err := sc2.NewSampler(serviceName, nil)
- if err != nil {
- return nil, err
- }
- options := []jaeger.SamplerOption{
- jaeger.SamplerOptions.Metrics(metrics),
- jaeger.SamplerOptions.InitialSampler(initSampler),
- jaeger.SamplerOptions.SamplingServerURL(sc.SamplingServerURL),
- }
- if sc.MaxOperations != 0 {
- options = append(options, jaeger.SamplerOptions.MaxOperations(sc.MaxOperations))
- }
- if sc.SamplingRefreshInterval != 0 {
- options = append(options, jaeger.SamplerOptions.SamplingRefreshInterval(sc.SamplingRefreshInterval))
- }
- return jaeger.NewRemotelyControlledSampler(serviceName, options...), nil
- }
- return nil, fmt.Errorf("Unknown sampler type %v", sc.Type)
-}
-
-// NewReporter instantiates a new reporter that submits spans to tcollector
-func (rc *ReporterConfig) NewReporter(
- serviceName string,
- metrics *jaeger.Metrics,
- logger jaeger.Logger,
-) (jaeger.Reporter, error) {
- sender, err := rc.newTransport()
- if err != nil {
- return nil, err
- }
- reporter := jaeger.NewRemoteReporter(
- sender,
- jaeger.ReporterOptions.QueueSize(rc.QueueSize),
- jaeger.ReporterOptions.BufferFlushInterval(rc.BufferFlushInterval),
- jaeger.ReporterOptions.Logger(logger),
- jaeger.ReporterOptions.Metrics(metrics))
- if rc.LogSpans && logger != nil {
- logger.Infof("Initializing logging reporter\n")
- reporter = jaeger.NewCompositeReporter(jaeger.NewLoggingReporter(logger), reporter)
- }
- return reporter, err
-}
-
-func (rc *ReporterConfig) newTransport() (jaeger.Transport, error) {
- return jaeger.NewUDPTransport(rc.LocalAgentHostPort, 0)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/config/config_env.go b/vendor/github.com/uber/jaeger-client-go/config/config_env.go
deleted file mode 100644
index 96f170c53..000000000
--- a/vendor/github.com/uber/jaeger-client-go/config/config_env.go
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2018 The Jaeger Authors.
-//
-// 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 config
-
-import (
- "fmt"
- "os"
- "strconv"
- "strings"
- "time"
-
- opentracing "github.com/opentracing/opentracing-go"
- "github.com/pkg/errors"
-
- "github.com/uber/jaeger-client-go"
-)
-
-const (
- // environment variable names
- envServiceName = "JAEGER_SERVICE_NAME"
- envDisabled = "JAEGER_DISABLED"
- envRPCMetrics = "JAEGER_RPC_METRICS"
- envTags = "JAEGER_TAGS"
- envSamplerType = "JAEGER_SAMPLER_TYPE"
- envSamplerParam = "JAEGER_SAMPLER_PARAM"
- envSamplerManagerHostPort = "JAEGER_SAMPLER_MANAGER_HOST_PORT"
- envSamplerMaxOperations = "JAEGER_SAMPLER_MAX_OPERATIONS"
- envSamplerRefreshInterval = "JAEGER_SAMPLER_REFRESH_INTERVAL"
- envReporterMaxQueueSize = "JAEGER_REPORTER_MAX_QUEUE_SIZE"
- envReporterFlushInterval = "JAEGER_REPORTER_FLUSH_INTERVAL"
- envReporterLogSpans = "JAEGER_REPORTER_LOG_SPANS"
- envAgentHost = "JAEGER_AGENT_HOST"
- envAgentPort = "JAEGER_AGENT_PORT"
-)
-
-// FromEnv uses environment variables to set the tracer's Configuration
-func FromEnv() (*Configuration, error) {
- c := &Configuration{}
-
- if e := os.Getenv(envServiceName); e != "" {
- c.ServiceName = e
- }
-
- if e := os.Getenv(envRPCMetrics); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- c.RPCMetrics = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envRPCMetrics, e)
- }
- }
-
- if e := os.Getenv(envDisabled); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- c.Disabled = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envDisabled, e)
- }
- }
-
- if e := os.Getenv(envTags); e != "" {
- c.Tags = parseTags(e)
- }
-
- if s, err := samplerConfigFromEnv(); err == nil {
- c.Sampler = s
- } else {
- return nil, errors.Wrap(err, "cannot obtain sampler config from env")
- }
-
- if r, err := reporterConfigFromEnv(); err == nil {
- c.Reporter = r
- } else {
- return nil, errors.Wrap(err, "cannot obtain reporter config from env")
- }
-
- return c, nil
-}
-
-// samplerConfigFromEnv creates a new SamplerConfig based on the environment variables
-func samplerConfigFromEnv() (*SamplerConfig, error) {
- sc := &SamplerConfig{}
-
- if e := os.Getenv(envSamplerType); e != "" {
- sc.Type = e
- }
-
- if e := os.Getenv(envSamplerParam); e != "" {
- if value, err := strconv.ParseFloat(e, 64); err == nil {
- sc.Param = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envSamplerParam, e)
- }
- }
-
- if e := os.Getenv(envSamplerManagerHostPort); e != "" {
- sc.SamplingServerURL = e
- }
-
- if e := os.Getenv(envSamplerMaxOperations); e != "" {
- if value, err := strconv.ParseInt(e, 10, 0); err == nil {
- sc.MaxOperations = int(value)
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envSamplerMaxOperations, e)
- }
- }
-
- if e := os.Getenv(envSamplerRefreshInterval); e != "" {
- if value, err := time.ParseDuration(e); err == nil {
- sc.SamplingRefreshInterval = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envSamplerRefreshInterval, e)
- }
- }
-
- return sc, nil
-}
-
-// reporterConfigFromEnv creates a new ReporterConfig based on the environment variables
-func reporterConfigFromEnv() (*ReporterConfig, error) {
- rc := &ReporterConfig{}
-
- if e := os.Getenv(envReporterMaxQueueSize); e != "" {
- if value, err := strconv.ParseInt(e, 10, 0); err == nil {
- rc.QueueSize = int(value)
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterMaxQueueSize, e)
- }
- }
-
- if e := os.Getenv(envReporterFlushInterval); e != "" {
- if value, err := time.ParseDuration(e); err == nil {
- rc.BufferFlushInterval = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterFlushInterval, e)
- }
- }
-
- if e := os.Getenv(envReporterLogSpans); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- rc.LogSpans = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterLogSpans, e)
- }
- }
-
- host := jaeger.DefaultUDPSpanServerHost
- if e := os.Getenv(envAgentHost); e != "" {
- host = e
- }
-
- port := jaeger.DefaultUDPSpanServerPort
- if e := os.Getenv(envAgentPort); e != "" {
- if value, err := strconv.ParseInt(e, 10, 0); err == nil {
- port = int(value)
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envAgentPort, e)
- }
- }
-
- // the side effect of this is that we are building the default value, even if none of the env vars
- // were not explicitly passed
- rc.LocalAgentHostPort = fmt.Sprintf("%s:%d", host, port)
-
- return rc, nil
-}
-
-// parseTags parses the given string into a collection of Tags.
-// Spec for this value:
-// - comma separated list of key=value
-// - value can be specified using the notation ${envVar:defaultValue}, where `envVar`
-// is an environment variable and `defaultValue` is the value to use in case the env var is not set
-func parseTags(sTags string) []opentracing.Tag {
- pairs := strings.Split(sTags, ",")
- tags := make([]opentracing.Tag, 0)
- for _, p := range pairs {
- kv := strings.SplitN(p, "=", 2)
- k, v := strings.TrimSpace(kv[0]), strings.TrimSpace(kv[1])
-
- if strings.HasPrefix(v, "${") && strings.HasSuffix(v, "}") {
- ed := strings.SplitN(v[2:len(v)-1], ":", 2)
- e, d := ed[0], ed[1]
- v = os.Getenv(e)
- if v == "" && d != "" {
- v = d
- }
- }
-
- tag := opentracing.Tag{Key: k, Value: v}
- tags = append(tags, tag)
- }
-
- return tags
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/config/options.go b/vendor/github.com/uber/jaeger-client-go/config/options.go
deleted file mode 100644
index d14f1f8a9..000000000
--- a/vendor/github.com/uber/jaeger-client-go/config/options.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 config
-
-import (
- opentracing "github.com/opentracing/opentracing-go"
- "github.com/uber/jaeger-lib/metrics"
-
- "github.com/uber/jaeger-client-go"
-)
-
-// Option is a function that sets some option on the client.
-type Option func(c *Options)
-
-// Options control behavior of the client.
-type Options struct {
- metrics metrics.Factory
- logger jaeger.Logger
- reporter jaeger.Reporter
- sampler jaeger.Sampler
- contribObservers []jaeger.ContribObserver
- observers []jaeger.Observer
- gen128Bit bool
- zipkinSharedRPCSpan bool
- maxTagValueLength int
- tags []opentracing.Tag
- injectors map[interface{}]jaeger.Injector
- extractors map[interface{}]jaeger.Extractor
-}
-
-// Metrics creates an Option that initializes Metrics in the tracer,
-// which is used to emit statistics about spans.
-func Metrics(factory metrics.Factory) Option {
- return func(c *Options) {
- c.metrics = factory
- }
-}
-
-// Logger can be provided to log Reporter errors, as well as to log spans
-// if Reporter.LogSpans is set to true.
-func Logger(logger jaeger.Logger) Option {
- return func(c *Options) {
- c.logger = logger
- }
-}
-
-// Reporter can be provided explicitly to override the configuration.
-// Useful for testing, e.g. by passing InMemoryReporter.
-func Reporter(reporter jaeger.Reporter) Option {
- return func(c *Options) {
- c.reporter = reporter
- }
-}
-
-// Sampler can be provided explicitly to override the configuration.
-func Sampler(sampler jaeger.Sampler) Option {
- return func(c *Options) {
- c.sampler = sampler
- }
-}
-
-// Observer can be registered with the Tracer to receive notifications about new Spans.
-func Observer(observer jaeger.Observer) Option {
- return func(c *Options) {
- c.observers = append(c.observers, observer)
- }
-}
-
-// ContribObserver can be registered with the Tracer to recieve notifications
-// about new spans.
-func ContribObserver(observer jaeger.ContribObserver) Option {
- return func(c *Options) {
- c.contribObservers = append(c.contribObservers, observer)
- }
-}
-
-// Gen128Bit specifies whether to generate 128bit trace IDs.
-func Gen128Bit(gen128Bit bool) Option {
- return func(c *Options) {
- c.gen128Bit = gen128Bit
- }
-}
-
-// ZipkinSharedRPCSpan creates an option that enables sharing span ID between client
-// and server spans a la zipkin. If false, client and server spans will be assigned
-// different IDs.
-func ZipkinSharedRPCSpan(zipkinSharedRPCSpan bool) Option {
- return func(c *Options) {
- c.zipkinSharedRPCSpan = zipkinSharedRPCSpan
- }
-}
-
-// MaxTagValueLength can be provided to override the default max tag value length.
-func MaxTagValueLength(maxTagValueLength int) Option {
- return func(c *Options) {
- c.maxTagValueLength = maxTagValueLength
- }
-}
-
-// Tag creates an option that adds a tracer-level tag.
-func Tag(key string, value interface{}) Option {
- return func(c *Options) {
- c.tags = append(c.tags, opentracing.Tag{Key: key, Value: value})
- }
-}
-
-// Injector registers an Injector with the given format.
-func Injector(format interface{}, injector jaeger.Injector) Option {
- return func(c *Options) {
- c.injectors[format] = injector
- }
-}
-
-// Extractor registers an Extractor with the given format.
-func Extractor(format interface{}, extractor jaeger.Extractor) Option {
- return func(c *Options) {
- c.extractors[format] = extractor
- }
-}
-
-func applyOptions(options ...Option) Options {
- opts := Options{
- injectors: make(map[interface{}]jaeger.Injector),
- extractors: make(map[interface{}]jaeger.Extractor),
- }
- for _, option := range options {
- option(&opts)
- }
- if opts.metrics == nil {
- opts.metrics = metrics.NullFactory
- }
- if opts.logger == nil {
- opts.logger = jaeger.NullLogger
- }
- return opts
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/constants.go b/vendor/github.com/uber/jaeger-client-go/constants.go
deleted file mode 100644
index b5368ff38..000000000
--- a/vendor/github.com/uber/jaeger-client-go/constants.go
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-const (
- // JaegerClientVersion is the version of the client library reported as Span tag.
- JaegerClientVersion = "Go-2.15.0-dev"
-
- // JaegerClientVersionTagKey is the name of the tag used to report client version.
- JaegerClientVersionTagKey = "jaeger.version"
-
- // JaegerDebugHeader is the name of HTTP header or a TextMap carrier key which,
- // if found in the carrier, forces the trace to be sampled as "debug" trace.
- // The value of the header is recorded as the tag on the root span, so that the
- // trace can be found in the UI using this value as a correlation ID.
- JaegerDebugHeader = "jaeger-debug-id"
-
- // JaegerBaggageHeader is the name of the HTTP header that is used to submit baggage.
- // It differs from TraceBaggageHeaderPrefix in that it can be used only in cases where
- // a root span does not exist.
- JaegerBaggageHeader = "jaeger-baggage"
-
- // TracerHostnameTagKey used to report host name of the process.
- TracerHostnameTagKey = "hostname"
-
- // TracerIPTagKey used to report ip of the process.
- TracerIPTagKey = "ip"
-
- // TracerUUIDTagKey used to report UUID of the client process.
- TracerUUIDTagKey = "client-uuid"
-
- // SamplerTypeTagKey reports which sampler was used on the root span.
- SamplerTypeTagKey = "sampler.type"
-
- // SamplerParamTagKey reports the parameter of the sampler, like sampling probability.
- SamplerParamTagKey = "sampler.param"
-
- // TraceContextHeaderName is the http header name used to propagate tracing context.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceContextHeaderName = "uber-trace-id"
-
- // TracerStateHeaderName is deprecated.
- // Deprecated: use TraceContextHeaderName
- TracerStateHeaderName = TraceContextHeaderName
-
- // TraceBaggageHeaderPrefix is the prefix for http headers used to propagate baggage.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceBaggageHeaderPrefix = "uberctx-"
-
- // SamplerTypeConst is the type of sampler that always makes the same decision.
- SamplerTypeConst = "const"
-
- // SamplerTypeRemote is the type of sampler that polls Jaeger agent for sampling strategy.
- SamplerTypeRemote = "remote"
-
- // SamplerTypeProbabilistic is the type of sampler that samples traces
- // with a certain fixed probability.
- SamplerTypeProbabilistic = "probabilistic"
-
- // SamplerTypeRateLimiting is the type of sampler that samples
- // only up to a fixed number of traces per second.
- SamplerTypeRateLimiting = "ratelimiting"
-
- // SamplerTypeLowerBound is the type of sampler that samples
- // at least a fixed number of traces per second.
- SamplerTypeLowerBound = "lowerbound"
-
- // DefaultUDPSpanServerHost is the default host to send the spans to, via UDP
- DefaultUDPSpanServerHost = "localhost"
-
- // DefaultUDPSpanServerPort is the default port to send the spans to, via UDP
- DefaultUDPSpanServerPort = 6831
-
- // DefaultMaxTagValueLength is the default max length of byte array or string allowed in the tag value.
- DefaultMaxTagValueLength = 256
-)
diff --git a/vendor/github.com/uber/jaeger-client-go/context.go b/vendor/github.com/uber/jaeger-client-go/context.go
deleted file mode 100644
index 8b06173d9..000000000
--- a/vendor/github.com/uber/jaeger-client-go/context.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "errors"
- "fmt"
- "strconv"
- "strings"
-)
-
-const (
- flagSampled = byte(1)
- flagDebug = byte(2)
-)
-
-var (
- errEmptyTracerStateString = errors.New("Cannot convert empty string to tracer state")
- errMalformedTracerStateString = errors.New("String does not match tracer state format")
-
- emptyContext = SpanContext{}
-)
-
-// TraceID represents unique 128bit identifier of a trace
-type TraceID struct {
- High, Low uint64
-}
-
-// SpanID represents unique 64bit identifier of a span
-type SpanID uint64
-
-// SpanContext represents propagated span identity and state
-type SpanContext struct {
- // traceID represents globally unique ID of the trace.
- // Usually generated as a random number.
- traceID TraceID
-
- // spanID represents span ID that must be unique within its trace,
- // but does not have to be globally unique.
- spanID SpanID
-
- // parentID refers to the ID of the parent span.
- // Should be 0 if the current span is a root span.
- parentID SpanID
-
- // flags is a bitmap containing such bits as 'sampled' and 'debug'.
- flags byte
-
- // Distributed Context baggage. The is a snapshot in time.
- baggage map[string]string
-
- // debugID can be set to some correlation ID when the context is being
- // extracted from a TextMap carrier.
- //
- // See JaegerDebugHeader in constants.go
- debugID string
-}
-
-// ForeachBaggageItem implements ForeachBaggageItem() of opentracing.SpanContext
-func (c SpanContext) ForeachBaggageItem(handler func(k, v string) bool) {
- for k, v := range c.baggage {
- if !handler(k, v) {
- break
- }
- }
-}
-
-// IsSampled returns whether this trace was chosen for permanent storage
-// by the sampling mechanism of the tracer.
-func (c SpanContext) IsSampled() bool {
- return (c.flags & flagSampled) == flagSampled
-}
-
-// IsDebug indicates whether sampling was explicitly requested by the service.
-func (c SpanContext) IsDebug() bool {
- return (c.flags & flagDebug) == flagDebug
-}
-
-// IsValid indicates whether this context actually represents a valid trace.
-func (c SpanContext) IsValid() bool {
- return c.traceID.IsValid() && c.spanID != 0
-}
-
-func (c SpanContext) String() string {
- if c.traceID.High == 0 {
- return fmt.Sprintf("%x:%x:%x:%x", c.traceID.Low, uint64(c.spanID), uint64(c.parentID), c.flags)
- }
- return fmt.Sprintf("%x%016x:%x:%x:%x", c.traceID.High, c.traceID.Low, uint64(c.spanID), uint64(c.parentID), c.flags)
-}
-
-// ContextFromString reconstructs the Context encoded in a string
-func ContextFromString(value string) (SpanContext, error) {
- var context SpanContext
- if value == "" {
- return emptyContext, errEmptyTracerStateString
- }
- parts := strings.Split(value, ":")
- if len(parts) != 4 {
- return emptyContext, errMalformedTracerStateString
- }
- var err error
- if context.traceID, err = TraceIDFromString(parts[0]); err != nil {
- return emptyContext, err
- }
- if context.spanID, err = SpanIDFromString(parts[1]); err != nil {
- return emptyContext, err
- }
- if context.parentID, err = SpanIDFromString(parts[2]); err != nil {
- return emptyContext, err
- }
- flags, err := strconv.ParseUint(parts[3], 10, 8)
- if err != nil {
- return emptyContext, err
- }
- context.flags = byte(flags)
- return context, nil
-}
-
-// TraceID returns the trace ID of this span context
-func (c SpanContext) TraceID() TraceID {
- return c.traceID
-}
-
-// SpanID returns the span ID of this span context
-func (c SpanContext) SpanID() SpanID {
- return c.spanID
-}
-
-// ParentID returns the parent span ID of this span context
-func (c SpanContext) ParentID() SpanID {
- return c.parentID
-}
-
-// NewSpanContext creates a new instance of SpanContext
-func NewSpanContext(traceID TraceID, spanID, parentID SpanID, sampled bool, baggage map[string]string) SpanContext {
- flags := byte(0)
- if sampled {
- flags = flagSampled
- }
- return SpanContext{
- traceID: traceID,
- spanID: spanID,
- parentID: parentID,
- flags: flags,
- baggage: baggage}
-}
-
-// CopyFrom copies data from ctx into this context, including span identity and baggage.
-// TODO This is only used by interop.go. Remove once TChannel Go supports OpenTracing.
-func (c *SpanContext) CopyFrom(ctx *SpanContext) {
- c.traceID = ctx.traceID
- c.spanID = ctx.spanID
- c.parentID = ctx.parentID
- c.flags = ctx.flags
- if l := len(ctx.baggage); l > 0 {
- c.baggage = make(map[string]string, l)
- for k, v := range ctx.baggage {
- c.baggage[k] = v
- }
- } else {
- c.baggage = nil
- }
-}
-
-// WithBaggageItem creates a new context with an extra baggage item.
-func (c SpanContext) WithBaggageItem(key, value string) SpanContext {
- var newBaggage map[string]string
- if c.baggage == nil {
- newBaggage = map[string]string{key: value}
- } else {
- newBaggage = make(map[string]string, len(c.baggage)+1)
- for k, v := range c.baggage {
- newBaggage[k] = v
- }
- newBaggage[key] = value
- }
- // Use positional parameters so the compiler will help catch new fields.
- return SpanContext{c.traceID, c.spanID, c.parentID, c.flags, newBaggage, ""}
-}
-
-// isDebugIDContainerOnly returns true when the instance of the context is only
-// used to return the debug/correlation ID from extract() method. This happens
-// in the situation when "jaeger-debug-id" header is passed in the carrier to
-// the extract() method, but the request otherwise has no span context in it.
-// Previously this would've returned opentracing.ErrSpanContextNotFound from the
-// extract method, but now it returns a dummy context with only debugID filled in.
-//
-// See JaegerDebugHeader in constants.go
-// See textMapPropagator#Extract
-func (c *SpanContext) isDebugIDContainerOnly() bool {
- return !c.traceID.IsValid() && c.debugID != ""
-}
-
-// ------- TraceID -------
-
-func (t TraceID) String() string {
- if t.High == 0 {
- return fmt.Sprintf("%x", t.Low)
- }
- return fmt.Sprintf("%x%016x", t.High, t.Low)
-}
-
-// TraceIDFromString creates a TraceID from a hexadecimal string
-func TraceIDFromString(s string) (TraceID, error) {
- var hi, lo uint64
- var err error
- if len(s) > 32 {
- return TraceID{}, fmt.Errorf("TraceID cannot be longer than 32 hex characters: %s", s)
- } else if len(s) > 16 {
- hiLen := len(s) - 16
- if hi, err = strconv.ParseUint(s[0:hiLen], 16, 64); err != nil {
- return TraceID{}, err
- }
- if lo, err = strconv.ParseUint(s[hiLen:], 16, 64); err != nil {
- return TraceID{}, err
- }
- } else {
- if lo, err = strconv.ParseUint(s, 16, 64); err != nil {
- return TraceID{}, err
- }
- }
- return TraceID{High: hi, Low: lo}, nil
-}
-
-// IsValid checks if the trace ID is valid, i.e. not zero.
-func (t TraceID) IsValid() bool {
- return t.High != 0 || t.Low != 0
-}
-
-// ------- SpanID -------
-
-func (s SpanID) String() string {
- return fmt.Sprintf("%x", uint64(s))
-}
-
-// SpanIDFromString creates a SpanID from a hexadecimal string
-func SpanIDFromString(s string) (SpanID, error) {
- if len(s) > 16 {
- return SpanID(0), fmt.Errorf("SpanID cannot be longer than 16 hex characters: %s", s)
- }
- id, err := strconv.ParseUint(s, 16, 64)
- if err != nil {
- return SpanID(0), err
- }
- return SpanID(id), nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/contrib_observer.go b/vendor/github.com/uber/jaeger-client-go/contrib_observer.go
deleted file mode 100644
index 4ce1881f3..000000000
--- a/vendor/github.com/uber/jaeger-client-go/contrib_observer.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- opentracing "github.com/opentracing/opentracing-go"
-)
-
-// ContribObserver can be registered with the Tracer to receive notifications
-// about new Spans. Modelled after github.com/opentracing-contrib/go-observer.
-type ContribObserver interface {
- // Create and return a span observer. Called when a span starts.
- // If the Observer is not interested in the given span, it must return (nil, false).
- // E.g :
- // func StartSpan(opName string, opts ...opentracing.StartSpanOption) {
- // var sp opentracing.Span
- // sso := opentracing.StartSpanOptions{}
- // if spanObserver, ok := Observer.OnStartSpan(span, opName, sso); ok {
- // // we have a valid SpanObserver
- // }
- // ...
- // }
- OnStartSpan(sp opentracing.Span, operationName string, options opentracing.StartSpanOptions) (ContribSpanObserver, bool)
-}
-
-// ContribSpanObserver is created by the Observer and receives notifications
-// about other Span events. This interface is meant to match
-// github.com/opentracing-contrib/go-observer, via duck typing, without
-// directly importing the go-observer package.
-type ContribSpanObserver interface {
- OnSetOperationName(operationName string)
- OnSetTag(key string, value interface{})
- OnFinish(options opentracing.FinishOptions)
-}
-
-// wrapper observer for the old observers (see observer.go)
-type oldObserver struct {
- obs Observer
-}
-
-func (o *oldObserver) OnStartSpan(sp opentracing.Span, operationName string, options opentracing.StartSpanOptions) (ContribSpanObserver, bool) {
- spanObserver := o.obs.OnStartSpan(operationName, options)
- return spanObserver, spanObserver != nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/doc.go b/vendor/github.com/uber/jaeger-client-go/doc.go
deleted file mode 100644
index 4f5549033..000000000
--- a/vendor/github.com/uber/jaeger-client-go/doc.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger implements an OpenTracing (http://opentracing.io) Tracer.
-It is currently using Zipkin-compatible data model and can be directly
-itegrated with Zipkin backend (http://zipkin.io).
-
-For integration instructions please refer to the README:
-
-https://github.com/uber/jaeger-client-go/blob/master/README.md
-*/
-package jaeger
diff --git a/vendor/github.com/uber/jaeger-client-go/glide.lock b/vendor/github.com/uber/jaeger-client-go/glide.lock
deleted file mode 100644
index d76b15361..000000000
--- a/vendor/github.com/uber/jaeger-client-go/glide.lock
+++ /dev/null
@@ -1,89 +0,0 @@
-hash: 3accf84f97bff4a91162736104c0e9b9790820712bd86db6fec5e665f7196a82
-updated: 2018-04-30T11:46:43.804556-04:00
-imports:
-- name: github.com/beorn7/perks
- version: 3a771d992973f24aa725d07868b467d1ddfceafb
- subpackages:
- - quantile
-- name: github.com/codahale/hdrhistogram
- version: 3a0bb77429bd3a61596f5e8a3172445844342120
-- name: github.com/crossdock/crossdock-go
- version: 049aabb0122b03bc9bd30cab8f3f91fb60166361
- subpackages:
- - assert
- - require
-- name: github.com/davecgh/go-spew
- version: 8991bc29aa16c548c550c7ff78260e27b9ab7c73
- subpackages:
- - spew
-- name: github.com/golang/protobuf
- version: bbd03ef6da3a115852eaf24c8a1c46aeb39aa175
- subpackages:
- - proto
-- name: github.com/matttproud/golang_protobuf_extensions
- version: c12348ce28de40eed0136aa2b644d0ee0650e56c
- subpackages:
- - pbutil
-- name: github.com/opentracing/opentracing-go
- version: 1949ddbfd147afd4d964a9f00b24eb291e0e7c38
- subpackages:
- - ext
- - log
-- name: github.com/pkg/errors
- version: 645ef00459ed84a119197bfb8d8205042c6df63d
-- name: github.com/pmezard/go-difflib
- version: 792786c7400a136282c1664665ae0a8db921c6c2
- subpackages:
- - difflib
-- name: github.com/prometheus/client_golang
- version: c5b7fccd204277076155f10851dad72b76a49317
- subpackages:
- - prometheus
-- name: github.com/prometheus/client_model
- version: 99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c
- subpackages:
- - go
-- name: github.com/prometheus/common
- version: 38c53a9f4bfcd932d1b00bfc65e256a7fba6b37a
- subpackages:
- - expfmt
- - internal/bitbucket.org/ww/goautoneg
- - model
-- name: github.com/prometheus/procfs
- version: 780932d4fbbe0e69b84c34c20f5c8d0981e109ea
- subpackages:
- - internal/util
- - nfs
- - xfs
-- name: github.com/stretchr/testify
- version: 12b6f73e6084dad08a7c6e575284b177ecafbc71
- subpackages:
- - assert
- - require
- - suite
-- name: github.com/uber/jaeger-lib
- version: 4267858c0679cd4e47cefed8d7f70fd386cfb567
- subpackages:
- - metrics
- - metrics/prometheus
- - metrics/testutils
-- name: go.uber.org/atomic
- version: 8474b86a5a6f79c443ce4b2992817ff32cf208b8
-- name: go.uber.org/multierr
- version: 3c4937480c32f4c13a875a1829af76c98ca3d40a
-- name: go.uber.org/zap
- version: eeedf312bc6c57391d84767a4cd413f02a917974
- subpackages:
- - buffer
- - internal/bufferpool
- - internal/color
- - internal/exit
- - zapcore
-- name: golang.org/x/net
- version: 6078986fec03a1dcc236c34816c71b0e05018fda
- subpackages:
- - context
- - context/ctxhttp
-testImports:
-- name: github.com/uber-go/atomic
- version: 8474b86a5a6f79c443ce4b2992817ff32cf208b8
diff --git a/vendor/github.com/uber/jaeger-client-go/glide.yaml b/vendor/github.com/uber/jaeger-client-go/glide.yaml
deleted file mode 100644
index 6637da215..000000000
--- a/vendor/github.com/uber/jaeger-client-go/glide.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-package: github.com/uber/jaeger-client-go
-import:
-- package: github.com/opentracing/opentracing-go
- version: ^1
- subpackages:
- - ext
- - log
-- package: github.com/crossdock/crossdock-go
-- package: github.com/uber/jaeger-lib
- version: ^1.2.1
- subpackages:
- - metrics
-- package: github.com/pkg/errors
- version: ~0.8.0
-testImport:
-- package: github.com/stretchr/testify
- subpackages:
- - assert
- - require
- - suite
-- package: github.com/prometheus/client_golang
- version: v0.8.0
diff --git a/vendor/github.com/uber/jaeger-client-go/header.go b/vendor/github.com/uber/jaeger-client-go/header.go
deleted file mode 100644
index 19c2c055b..000000000
--- a/vendor/github.com/uber/jaeger-client-go/header.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-// HeadersConfig contains the values for the header keys that Jaeger will use.
-// These values may be either custom or default depending on whether custom
-// values were provided via a configuration.
-type HeadersConfig struct {
- // JaegerDebugHeader is the name of HTTP header or a TextMap carrier key which,
- // if found in the carrier, forces the trace to be sampled as "debug" trace.
- // The value of the header is recorded as the tag on the root span, so that the
- // trace can be found in the UI using this value as a correlation ID.
- JaegerDebugHeader string `yaml:"jaegerDebugHeader"`
-
- // JaegerBaggageHeader is the name of the HTTP header that is used to submit baggage.
- // It differs from TraceBaggageHeaderPrefix in that it can be used only in cases where
- // a root span does not exist.
- JaegerBaggageHeader string `yaml:"jaegerBaggageHeader"`
-
- // TraceContextHeaderName is the http header name used to propagate tracing context.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceContextHeaderName string `yaml:"TraceContextHeaderName"`
-
- // TraceBaggageHeaderPrefix is the prefix for http headers used to propagate baggage.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceBaggageHeaderPrefix string `yaml:"traceBaggageHeaderPrefix"`
-}
-
-func (c *HeadersConfig) applyDefaults() *HeadersConfig {
- if c.JaegerBaggageHeader == "" {
- c.JaegerBaggageHeader = JaegerBaggageHeader
- }
- if c.JaegerDebugHeader == "" {
- c.JaegerDebugHeader = JaegerDebugHeader
- }
- if c.TraceBaggageHeaderPrefix == "" {
- c.TraceBaggageHeaderPrefix = TraceBaggageHeaderPrefix
- }
- if c.TraceContextHeaderName == "" {
- c.TraceContextHeaderName = TraceContextHeaderName
- }
- return c
-}
-
-func getDefaultHeadersConfig() *HeadersConfig {
- return &HeadersConfig{
- JaegerDebugHeader: JaegerDebugHeader,
- JaegerBaggageHeader: JaegerBaggageHeader,
- TraceContextHeaderName: TraceContextHeaderName,
- TraceBaggageHeaderPrefix: TraceBaggageHeaderPrefix,
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go b/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go
deleted file mode 100644
index 745729319..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 remote
-
-import (
- "time"
-
- "github.com/uber/jaeger-client-go"
-)
-
-const (
- defaultMaxValueLength = 2048
- defaultRefreshInterval = time.Minute
- defaultHostPort = "localhost:5778"
-)
-
-// Option is a function that sets some option on the RestrictionManager
-type Option func(options *options)
-
-// Options is a factory for all available options
-var Options options
-
-type options struct {
- denyBaggageOnInitializationFailure bool
- metrics *jaeger.Metrics
- logger jaeger.Logger
- hostPort string
- refreshInterval time.Duration
-}
-
-// DenyBaggageOnInitializationFailure creates an Option that determines the startup failure mode of RestrictionManager.
-// If DenyBaggageOnInitializationFailure is true, RestrictionManager will not allow any baggage to be written until baggage
-// restrictions have been retrieved from agent.
-// If DenyBaggageOnInitializationFailure is false, RestrictionManager will allow any baggage to be written until baggage
-// restrictions have been retrieved from agent.
-func (options) DenyBaggageOnInitializationFailure(b bool) Option {
- return func(o *options) {
- o.denyBaggageOnInitializationFailure = b
- }
-}
-
-// Metrics creates an Option that initializes Metrics on the RestrictionManager, which is used to emit statistics.
-func (options) Metrics(m *jaeger.Metrics) Option {
- return func(o *options) {
- o.metrics = m
- }
-}
-
-// Logger creates an Option that sets the logger used by the RestrictionManager.
-func (options) Logger(logger jaeger.Logger) Option {
- return func(o *options) {
- o.logger = logger
- }
-}
-
-// HostPort creates an Option that sets the hostPort of the local agent that contains the baggage restrictions.
-func (options) HostPort(hostPort string) Option {
- return func(o *options) {
- o.hostPort = hostPort
- }
-}
-
-// RefreshInterval creates an Option that sets how often the RestrictionManager will poll local agent for
-// the baggage restrictions.
-func (options) RefreshInterval(refreshInterval time.Duration) Option {
- return func(o *options) {
- o.refreshInterval = refreshInterval
- }
-}
-
-func applyOptions(o ...Option) options {
- opts := options{}
- for _, option := range o {
- option(&opts)
- }
- if opts.metrics == nil {
- opts.metrics = jaeger.NewNullMetrics()
- }
- if opts.logger == nil {
- opts.logger = jaeger.NullLogger
- }
- if opts.hostPort == "" {
- opts.hostPort = defaultHostPort
- }
- if opts.refreshInterval == 0 {
- opts.refreshInterval = defaultRefreshInterval
- }
- return opts
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go b/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go
deleted file mode 100644
index a56515aca..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 remote
-
-import (
- "fmt"
- "net/url"
- "sync"
- "time"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
- thrift "github.com/uber/jaeger-client-go/thrift-gen/baggage"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-type httpBaggageRestrictionManagerProxy struct {
- url string
-}
-
-func newHTTPBaggageRestrictionManagerProxy(hostPort, serviceName string) *httpBaggageRestrictionManagerProxy {
- v := url.Values{}
- v.Set("service", serviceName)
- return &httpBaggageRestrictionManagerProxy{
- url: fmt.Sprintf("http://%s/baggageRestrictions?%s", hostPort, v.Encode()),
- }
-}
-
-func (s *httpBaggageRestrictionManagerProxy) GetBaggageRestrictions(serviceName string) ([]*thrift.BaggageRestriction, error) {
- var out []*thrift.BaggageRestriction
- if err := utils.GetJSON(s.url, &out); err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RestrictionManager manages baggage restrictions by retrieving baggage restrictions from agent
-type RestrictionManager struct {
- options
-
- mux sync.RWMutex
- serviceName string
- restrictions map[string]*baggage.Restriction
- thriftProxy thrift.BaggageRestrictionManager
- pollStopped sync.WaitGroup
- stopPoll chan struct{}
- invalidRestriction *baggage.Restriction
- validRestriction *baggage.Restriction
-
- // Determines if the manager has successfully retrieved baggage restrictions from agent
- initialized bool
-}
-
-// NewRestrictionManager returns a BaggageRestrictionManager that polls the agent for the latest
-// baggage restrictions.
-func NewRestrictionManager(serviceName string, options ...Option) *RestrictionManager {
- // TODO there is a developing use case where a single tracer can generate traces on behalf of many services.
- // restrictionsMap will need to exist per service
- opts := applyOptions(options...)
- m := &RestrictionManager{
- serviceName: serviceName,
- options: opts,
- restrictions: make(map[string]*baggage.Restriction),
- thriftProxy: newHTTPBaggageRestrictionManagerProxy(opts.hostPort, serviceName),
- stopPoll: make(chan struct{}),
- invalidRestriction: baggage.NewRestriction(false, 0),
- validRestriction: baggage.NewRestriction(true, defaultMaxValueLength),
- }
- m.pollStopped.Add(1)
- go m.pollManager()
- return m
-}
-
-// isReady returns true if the manager has retrieved baggage restrictions from the remote source.
-func (m *RestrictionManager) isReady() bool {
- m.mux.RLock()
- defer m.mux.RUnlock()
- return m.initialized
-}
-
-// GetRestriction implements RestrictionManager#GetRestriction.
-func (m *RestrictionManager) GetRestriction(service, key string) *baggage.Restriction {
- m.mux.RLock()
- defer m.mux.RUnlock()
- if !m.initialized {
- if m.denyBaggageOnInitializationFailure {
- return m.invalidRestriction
- }
- return m.validRestriction
- }
- if restriction, ok := m.restrictions[key]; ok {
- return restriction
- }
- return m.invalidRestriction
-}
-
-// Close stops remote polling and closes the RemoteRestrictionManager.
-func (m *RestrictionManager) Close() error {
- close(m.stopPoll)
- m.pollStopped.Wait()
- return nil
-}
-
-func (m *RestrictionManager) pollManager() {
- defer m.pollStopped.Done()
- // attempt to initialize baggage restrictions
- if err := m.updateRestrictions(); err != nil {
- m.logger.Error(fmt.Sprintf("Failed to initialize baggage restrictions: %s", err.Error()))
- }
- ticker := time.NewTicker(m.refreshInterval)
- defer ticker.Stop()
-
- for {
- select {
- case <-ticker.C:
- if err := m.updateRestrictions(); err != nil {
- m.logger.Error(fmt.Sprintf("Failed to update baggage restrictions: %s", err.Error()))
- }
- case <-m.stopPoll:
- return
- }
- }
-}
-
-func (m *RestrictionManager) updateRestrictions() error {
- restrictions, err := m.thriftProxy.GetBaggageRestrictions(m.serviceName)
- if err != nil {
- m.metrics.BaggageRestrictionsUpdateFailure.Inc(1)
- return err
- }
- newRestrictions := m.parseRestrictions(restrictions)
- m.metrics.BaggageRestrictionsUpdateSuccess.Inc(1)
- m.mux.Lock()
- defer m.mux.Unlock()
- m.initialized = true
- m.restrictions = newRestrictions
- return nil
-}
-
-func (m *RestrictionManager) parseRestrictions(restrictions []*thrift.BaggageRestriction) map[string]*baggage.Restriction {
- setters := make(map[string]*baggage.Restriction, len(restrictions))
- for _, restriction := range restrictions {
- setters[restriction.BaggageKey] = baggage.NewRestriction(true, int(restriction.MaxValueLength))
- }
- return setters
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go b/vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go
deleted file mode 100644
index c16a5c566..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 baggage
-
-const (
- defaultMaxValueLength = 2048
-)
-
-// Restriction determines whether a baggage key is allowed and contains any restrictions on the baggage value.
-type Restriction struct {
- keyAllowed bool
- maxValueLength int
-}
-
-// NewRestriction returns a new Restriction.
-func NewRestriction(keyAllowed bool, maxValueLength int) *Restriction {
- return &Restriction{
- keyAllowed: keyAllowed,
- maxValueLength: maxValueLength,
- }
-}
-
-// KeyAllowed returns whether the baggage key for this restriction is allowed.
-func (r *Restriction) KeyAllowed() bool {
- return r.keyAllowed
-}
-
-// MaxValueLength returns the max length for the baggage value.
-func (r *Restriction) MaxValueLength() int {
- return r.maxValueLength
-}
-
-// RestrictionManager keeps track of valid baggage keys and their restrictions. The manager
-// will return a Restriction for a specific baggage key which will determine whether the baggage
-// key is allowed for the current service and any other applicable restrictions on the baggage
-// value.
-type RestrictionManager interface {
- GetRestriction(service, key string) *Restriction
-}
-
-// DefaultRestrictionManager allows any baggage key.
-type DefaultRestrictionManager struct {
- defaultRestriction *Restriction
-}
-
-// NewDefaultRestrictionManager returns a DefaultRestrictionManager.
-func NewDefaultRestrictionManager(maxValueLength int) *DefaultRestrictionManager {
- if maxValueLength == 0 {
- maxValueLength = defaultMaxValueLength
- }
- return &DefaultRestrictionManager{
- defaultRestriction: &Restriction{keyAllowed: true, maxValueLength: maxValueLength},
- }
-}
-
-// GetRestriction implements RestrictionManager#GetRestriction.
-func (m *DefaultRestrictionManager) GetRestriction(service, key string) *Restriction {
- return m.defaultRestriction
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go b/vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go
deleted file mode 100644
index 0e10b8a5a..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 spanlog
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/opentracing/opentracing-go/log"
-)
-
-type fieldsAsMap map[string]string
-
-// MaterializeWithJSON converts log Fields into JSON string
-// TODO refactor into pluggable materializer
-func MaterializeWithJSON(logFields []log.Field) ([]byte, error) {
- fields := fieldsAsMap(make(map[string]string, len(logFields)))
- for _, field := range logFields {
- field.Marshal(fields)
- }
- if event, ok := fields["event"]; ok && len(fields) == 1 {
- return []byte(event), nil
- }
- return json.Marshal(fields)
-}
-
-func (ml fieldsAsMap) EmitString(key, value string) {
- ml[key] = value
-}
-
-func (ml fieldsAsMap) EmitBool(key string, value bool) {
- ml[key] = fmt.Sprintf("%t", value)
-}
-
-func (ml fieldsAsMap) EmitInt(key string, value int) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitInt32(key string, value int32) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitInt64(key string, value int64) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitUint32(key string, value uint32) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitUint64(key string, value uint64) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitFloat32(key string, value float32) {
- ml[key] = fmt.Sprintf("%f", value)
-}
-
-func (ml fieldsAsMap) EmitFloat64(key string, value float64) {
- ml[key] = fmt.Sprintf("%f", value)
-}
-
-func (ml fieldsAsMap) EmitObject(key string, value interface{}) {
- ml[key] = fmt.Sprintf("%+v", value)
-}
-
-func (ml fieldsAsMap) EmitLazyLogger(value log.LazyLogger) {
- value(ml)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go b/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go
deleted file mode 100644
index f52c322fb..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2018 The Jaeger Authors.
-//
-// 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 remote
-
-import (
- "time"
-
- "github.com/uber/jaeger-client-go"
-)
-
-const (
- defaultHostPort = "localhost:5778"
- defaultRefreshInterval = time.Second * 5
-)
-
-// Option is a function that sets some option on the Throttler
-type Option func(options *options)
-
-// Options is a factory for all available options
-var Options options
-
-type options struct {
- metrics *jaeger.Metrics
- logger jaeger.Logger
- hostPort string
- refreshInterval time.Duration
- synchronousInitialization bool
-}
-
-// Metrics creates an Option that initializes Metrics on the Throttler, which is used to emit statistics.
-func (options) Metrics(m *jaeger.Metrics) Option {
- return func(o *options) {
- o.metrics = m
- }
-}
-
-// Logger creates an Option that sets the logger used by the Throttler.
-func (options) Logger(logger jaeger.Logger) Option {
- return func(o *options) {
- o.logger = logger
- }
-}
-
-// HostPort creates an Option that sets the hostPort of the local agent that keeps track of credits.
-func (options) HostPort(hostPort string) Option {
- return func(o *options) {
- o.hostPort = hostPort
- }
-}
-
-// RefreshInterval creates an Option that sets how often the Throttler will poll local agent for
-// credits.
-func (options) RefreshInterval(refreshInterval time.Duration) Option {
- return func(o *options) {
- o.refreshInterval = refreshInterval
- }
-}
-
-// SynchronousInitialization creates an Option that determines whether the throttler should synchronously
-// fetch credits from the agent when an operation is seen for the first time. This should be set to true
-// if the client will be used by a short lived service that needs to ensure that credits are fetched upfront
-// such that sampling or throttling occurs.
-func (options) SynchronousInitialization(b bool) Option {
- return func(o *options) {
- o.synchronousInitialization = b
- }
-}
-
-func applyOptions(o ...Option) options {
- opts := options{}
- for _, option := range o {
- option(&opts)
- }
- if opts.metrics == nil {
- opts.metrics = jaeger.NewNullMetrics()
- }
- if opts.logger == nil {
- opts.logger = jaeger.NullLogger
- }
- if opts.hostPort == "" {
- opts.hostPort = defaultHostPort
- }
- if opts.refreshInterval == 0 {
- opts.refreshInterval = defaultRefreshInterval
- }
- return opts
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go b/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go
deleted file mode 100644
index 20f434fe4..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (c) 2018 The Jaeger Authors.
-//
-// 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 remote
-
-import (
- "fmt"
- "net/url"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/pkg/errors"
-
- "github.com/uber/jaeger-client-go"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-const (
- // minimumCredits is the minimum amount of credits necessary to not be throttled.
- // i.e. if currentCredits > minimumCredits, then the operation will not be throttled.
- minimumCredits = 1.0
-)
-
-var (
- errorUUIDNotSet = errors.New("Throttler UUID must be set")
-)
-
-type operationBalance struct {
- Operation string `json:"operation"`
- Balance float64 `json:"balance"`
-}
-
-type creditResponse struct {
- Balances []operationBalance `json:"balances"`
-}
-
-type httpCreditManagerProxy struct {
- hostPort string
-}
-
-func newHTTPCreditManagerProxy(hostPort string) *httpCreditManagerProxy {
- return &httpCreditManagerProxy{
- hostPort: hostPort,
- }
-}
-
-// N.B. Operations list must not be empty.
-func (m *httpCreditManagerProxy) FetchCredits(uuid, serviceName string, operations []string) (*creditResponse, error) {
- params := url.Values{}
- params.Set("service", serviceName)
- params.Set("uuid", uuid)
- for _, op := range operations {
- params.Add("operations", op)
- }
- var resp creditResponse
- if err := utils.GetJSON(fmt.Sprintf("http://%s/credits?%s", m.hostPort, params.Encode()), &resp); err != nil {
- return nil, errors.Wrap(err, "Failed to receive credits from agent")
- }
- return &resp, nil
-}
-
-// Throttler retrieves credits from agent and uses it to throttle operations.
-type Throttler struct {
- options
-
- mux sync.RWMutex
- service string
- uuid atomic.Value
- creditManager *httpCreditManagerProxy
- credits map[string]float64 // map of operation->credits
- close chan struct{}
- stopped sync.WaitGroup
-}
-
-// NewThrottler returns a Throttler that polls agent for credits and uses them to throttle
-// the service.
-func NewThrottler(service string, options ...Option) *Throttler {
- opts := applyOptions(options...)
- creditManager := newHTTPCreditManagerProxy(opts.hostPort)
- t := &Throttler{
- options: opts,
- creditManager: creditManager,
- service: service,
- credits: make(map[string]float64),
- close: make(chan struct{}),
- }
- t.stopped.Add(1)
- go t.pollManager()
- return t
-}
-
-// IsAllowed implements Throttler#IsAllowed.
-func (t *Throttler) IsAllowed(operation string) bool {
- t.mux.Lock()
- defer t.mux.Unlock()
- value, ok := t.credits[operation]
- if !ok || value == 0 {
- if !ok {
- // NOTE: This appears to be a no-op at first glance, but it stores
- // the operation key in the map. Necessary for functionality of
- // Throttler#operations method.
- t.credits[operation] = 0
- }
- if !t.synchronousInitialization {
- t.metrics.ThrottledDebugSpans.Inc(1)
- return false
- }
- // If it is the first time this operation is being checked, synchronously fetch
- // the credits.
- credits, err := t.fetchCredits([]string{operation})
- if err != nil {
- // Failed to receive credits from agent, try again next time
- t.logger.Error("Failed to fetch credits: " + err.Error())
- return false
- }
- if len(credits.Balances) == 0 {
- // This shouldn't happen but just in case
- return false
- }
- for _, opBalance := range credits.Balances {
- t.credits[opBalance.Operation] += opBalance.Balance
- }
- }
- return t.isAllowed(operation)
-}
-
-// Close stops the throttler from fetching credits from remote.
-func (t *Throttler) Close() error {
- close(t.close)
- t.stopped.Wait()
- return nil
-}
-
-// SetProcess implements ProcessSetter#SetProcess. It's imperative that the UUID is set before any remote
-// requests are made.
-func (t *Throttler) SetProcess(process jaeger.Process) {
- if process.UUID != "" {
- t.uuid.Store(process.UUID)
- }
-}
-
-// N.B. This function must be called with the Write Lock
-func (t *Throttler) isAllowed(operation string) bool {
- credits := t.credits[operation]
- if credits < minimumCredits {
- t.metrics.ThrottledDebugSpans.Inc(1)
- return false
- }
- t.credits[operation] = credits - minimumCredits
- return true
-}
-
-func (t *Throttler) pollManager() {
- defer t.stopped.Done()
- ticker := time.NewTicker(t.refreshInterval)
- defer ticker.Stop()
- for {
- select {
- case <-ticker.C:
- t.refreshCredits()
- case <-t.close:
- return
- }
- }
-}
-
-func (t *Throttler) operations() []string {
- t.mux.RLock()
- defer t.mux.RUnlock()
- operations := make([]string, 0, len(t.credits))
- for op := range t.credits {
- operations = append(operations, op)
- }
- return operations
-}
-
-func (t *Throttler) refreshCredits() {
- operations := t.operations()
- if len(operations) == 0 {
- return
- }
- newCredits, err := t.fetchCredits(operations)
- if err != nil {
- t.metrics.ThrottlerUpdateFailure.Inc(1)
- t.logger.Error("Failed to fetch credits: " + err.Error())
- return
- }
- t.metrics.ThrottlerUpdateSuccess.Inc(1)
-
- t.mux.Lock()
- defer t.mux.Unlock()
- for _, opBalance := range newCredits.Balances {
- t.credits[opBalance.Operation] += opBalance.Balance
- }
-}
-
-func (t *Throttler) fetchCredits(operations []string) (*creditResponse, error) {
- uuid := t.uuid.Load()
- uuidStr, _ := uuid.(string)
- if uuid == nil || uuidStr == "" {
- return nil, errorUUIDNotSet
- }
- return t.creditManager.FetchCredits(uuidStr, t.service, operations)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go b/vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go
deleted file mode 100644
index 196ed69ca..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2018 The Jaeger Authors.
-//
-// 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 throttler
-
-// Throttler is used to rate limits operations. For example, given how debug spans
-// are always sampled, a throttler can be enabled per client to rate limit the amount
-// of debug spans a client can start.
-type Throttler interface {
- // IsAllowed determines whether the operation should be allowed and not be
- // throttled.
- IsAllowed(operation string) bool
-}
-
-// DefaultThrottler doesn't throttle at all.
-type DefaultThrottler struct{}
-
-// IsAllowed implements Throttler#IsAllowed.
-func (t DefaultThrottler) IsAllowed(operation string) bool {
- return true
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/interop.go b/vendor/github.com/uber/jaeger-client-go/interop.go
deleted file mode 100644
index 8402d087c..000000000
--- a/vendor/github.com/uber/jaeger-client-go/interop.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/opentracing/opentracing-go"
-)
-
-// TODO this file should not be needed after TChannel PR.
-
-type formatKey int
-
-// SpanContextFormat is a constant used as OpenTracing Format.
-// Requires *SpanContext as carrier.
-// This format is intended for interop with TChannel or other Zipkin-like tracers.
-const SpanContextFormat formatKey = iota
-
-type jaegerTraceContextPropagator struct {
- tracer *Tracer
-}
-
-func (p *jaegerTraceContextPropagator) Inject(
- ctx SpanContext,
- abstractCarrier interface{},
-) error {
- carrier, ok := abstractCarrier.(*SpanContext)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- carrier.CopyFrom(&ctx)
- return nil
-}
-
-func (p *jaegerTraceContextPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- carrier, ok := abstractCarrier.(*SpanContext)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- ctx := new(SpanContext)
- ctx.CopyFrom(carrier)
- return *ctx, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/jaeger_tag.go b/vendor/github.com/uber/jaeger-client-go/jaeger_tag.go
deleted file mode 100644
index 868b2a5b5..000000000
--- a/vendor/github.com/uber/jaeger-client-go/jaeger_tag.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
-
- "github.com/opentracing/opentracing-go/log"
-
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
-)
-
-type tags []*j.Tag
-
-// ConvertLogsToJaegerTags converts log Fields into jaeger tags.
-func ConvertLogsToJaegerTags(logFields []log.Field) []*j.Tag {
- fields := tags(make([]*j.Tag, 0, len(logFields)))
- for _, field := range logFields {
- field.Marshal(&fields)
- }
- return fields
-}
-
-func (t *tags) EmitString(key, value string) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_STRING, VStr: &value})
-}
-
-func (t *tags) EmitBool(key string, value bool) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_BOOL, VBool: &value})
-}
-
-func (t *tags) EmitInt(key string, value int) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitInt32(key string, value int32) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitInt64(key string, value int64) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &value})
-}
-
-func (t *tags) EmitUint32(key string, value uint32) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitUint64(key string, value uint64) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitFloat32(key string, value float32) {
- vDouble := float64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_DOUBLE, VDouble: &vDouble})
-}
-
-func (t *tags) EmitFloat64(key string, value float64) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_DOUBLE, VDouble: &value})
-}
-
-func (t *tags) EmitObject(key string, value interface{}) {
- vStr := fmt.Sprintf("%+v", value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_STRING, VStr: &vStr})
-}
-
-func (t *tags) EmitLazyLogger(value log.LazyLogger) {
- value(t)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go b/vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go
deleted file mode 100644
index 6ce1caf87..000000000
--- a/vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-// BuildJaegerThrift builds jaeger span based on internal span.
-func BuildJaegerThrift(span *Span) *j.Span {
- span.Lock()
- defer span.Unlock()
- startTime := utils.TimeToMicrosecondsSinceEpochInt64(span.startTime)
- duration := span.duration.Nanoseconds() / int64(time.Microsecond)
- jaegerSpan := &j.Span{
- TraceIdLow: int64(span.context.traceID.Low),
- TraceIdHigh: int64(span.context.traceID.High),
- SpanId: int64(span.context.spanID),
- ParentSpanId: int64(span.context.parentID),
- OperationName: span.operationName,
- Flags: int32(span.context.flags),
- StartTime: startTime,
- Duration: duration,
- Tags: buildTags(span.tags, span.tracer.options.maxTagValueLength),
- Logs: buildLogs(span.logs),
- References: buildReferences(span.references),
- }
- return jaegerSpan
-}
-
-// BuildJaegerProcessThrift creates a thrift Process type.
-func BuildJaegerProcessThrift(span *Span) *j.Process {
- span.Lock()
- defer span.Unlock()
- return buildJaegerProcessThrift(span.tracer)
-}
-
-func buildJaegerProcessThrift(tracer *Tracer) *j.Process {
- process := &j.Process{
- ServiceName: tracer.serviceName,
- Tags: buildTags(tracer.tags, tracer.options.maxTagValueLength),
- }
- if tracer.process.UUID != "" {
- process.Tags = append(process.Tags, &j.Tag{Key: TracerUUIDTagKey, VStr: &tracer.process.UUID, VType: j.TagType_STRING})
- }
- return process
-}
-
-func buildTags(tags []Tag, maxTagValueLength int) []*j.Tag {
- jTags := make([]*j.Tag, 0, len(tags))
- for _, tag := range tags {
- jTag := buildTag(&tag, maxTagValueLength)
- jTags = append(jTags, jTag)
- }
- return jTags
-}
-
-func buildLogs(logs []opentracing.LogRecord) []*j.Log {
- jLogs := make([]*j.Log, 0, len(logs))
- for _, log := range logs {
- jLog := &j.Log{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(log.Timestamp),
- Fields: ConvertLogsToJaegerTags(log.Fields),
- }
- jLogs = append(jLogs, jLog)
- }
- return jLogs
-}
-
-func buildTag(tag *Tag, maxTagValueLength int) *j.Tag {
- jTag := &j.Tag{Key: tag.key}
- switch value := tag.value.(type) {
- case string:
- vStr := truncateString(value, maxTagValueLength)
- jTag.VStr = &vStr
- jTag.VType = j.TagType_STRING
- case []byte:
- if len(value) > maxTagValueLength {
- value = value[:maxTagValueLength]
- }
- jTag.VBinary = value
- jTag.VType = j.TagType_BINARY
- case int:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int8:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint8:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int16:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint16:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int32:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint32:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int64:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint64:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case float32:
- vDouble := float64(value)
- jTag.VDouble = &vDouble
- jTag.VType = j.TagType_DOUBLE
- case float64:
- vDouble := float64(value)
- jTag.VDouble = &vDouble
- jTag.VType = j.TagType_DOUBLE
- case bool:
- vBool := value
- jTag.VBool = &vBool
- jTag.VType = j.TagType_BOOL
- default:
- vStr := truncateString(stringify(value), maxTagValueLength)
- jTag.VStr = &vStr
- jTag.VType = j.TagType_STRING
- }
- return jTag
-}
-
-func buildReferences(references []Reference) []*j.SpanRef {
- retMe := make([]*j.SpanRef, 0, len(references))
- for _, ref := range references {
- if ref.Type == opentracing.ChildOfRef {
- retMe = append(retMe, spanRef(ref.Context, j.SpanRefType_CHILD_OF))
- } else if ref.Type == opentracing.FollowsFromRef {
- retMe = append(retMe, spanRef(ref.Context, j.SpanRefType_FOLLOWS_FROM))
- }
- }
- return retMe
-}
-
-func spanRef(ctx SpanContext, refType j.SpanRefType) *j.SpanRef {
- return &j.SpanRef{
- RefType: refType,
- TraceIdLow: int64(ctx.traceID.Low),
- TraceIdHigh: int64(ctx.traceID.High),
- SpanId: int64(ctx.spanID),
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/log/logger.go b/vendor/github.com/uber/jaeger-client-go/log/logger.go
deleted file mode 100644
index 894bb3dbf..000000000
--- a/vendor/github.com/uber/jaeger-client-go/log/logger.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 log
-
-import (
- "bytes"
- "fmt"
- "log"
- "sync"
-)
-
-// Logger provides an abstract interface for logging from Reporters.
-// Applications can provide their own implementation of this interface to adapt
-// reporters logging to whatever logging library they prefer (stdlib log,
-// logrus, go-logging, etc).
-type Logger interface {
- // Error logs a message at error priority
- Error(msg string)
-
- // Infof logs a message at info priority
- Infof(msg string, args ...interface{})
-}
-
-// StdLogger is implementation of the Logger interface that delegates to default `log` package
-var StdLogger = &stdLogger{}
-
-type stdLogger struct{}
-
-func (l *stdLogger) Error(msg string) {
- log.Printf("ERROR: %s", msg)
-}
-
-// Infof logs a message at info priority
-func (l *stdLogger) Infof(msg string, args ...interface{}) {
- log.Printf(msg, args...)
-}
-
-// NullLogger is implementation of the Logger interface that is no-op
-var NullLogger = &nullLogger{}
-
-type nullLogger struct{}
-
-func (l *nullLogger) Error(msg string) {}
-func (l *nullLogger) Infof(msg string, args ...interface{}) {}
-
-// BytesBufferLogger implements Logger backed by a bytes.Buffer.
-type BytesBufferLogger struct {
- mux sync.Mutex
- buf bytes.Buffer
-}
-
-// Error implements Logger.
-func (l *BytesBufferLogger) Error(msg string) {
- l.mux.Lock()
- l.buf.WriteString(fmt.Sprintf("ERROR: %s\n", msg))
- l.mux.Unlock()
-}
-
-// Infof implements Logger.
-func (l *BytesBufferLogger) Infof(msg string, args ...interface{}) {
- l.mux.Lock()
- l.buf.WriteString("INFO: " + fmt.Sprintf(msg, args...) + "\n")
- l.mux.Unlock()
-}
-
-// String returns string representation of the underlying buffer.
-func (l *BytesBufferLogger) String() string {
- l.mux.Lock()
- defer l.mux.Unlock()
- return l.buf.String()
-}
-
-// Flush empties the underlying buffer.
-func (l *BytesBufferLogger) Flush() {
- l.mux.Lock()
- defer l.mux.Unlock()
- l.buf.Reset()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/logger.go b/vendor/github.com/uber/jaeger-client-go/logger.go
deleted file mode 100644
index d4f0b5019..000000000
--- a/vendor/github.com/uber/jaeger-client-go/logger.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import "log"
-
-// NB This will be deprecated in 3.0.0, please use jaeger-client-go/log/logger instead.
-
-// Logger provides an abstract interface for logging from Reporters.
-// Applications can provide their own implementation of this interface to adapt
-// reporters logging to whatever logging library they prefer (stdlib log,
-// logrus, go-logging, etc).
-type Logger interface {
- // Error logs a message at error priority
- Error(msg string)
-
- // Infof logs a message at info priority
- Infof(msg string, args ...interface{})
-}
-
-// StdLogger is implementation of the Logger interface that delegates to default `log` package
-var StdLogger = &stdLogger{}
-
-type stdLogger struct{}
-
-func (l *stdLogger) Error(msg string) {
- log.Printf("ERROR: %s", msg)
-}
-
-// Infof logs a message at info priority
-func (l *stdLogger) Infof(msg string, args ...interface{}) {
- log.Printf(msg, args...)
-}
-
-// NullLogger is implementation of the Logger interface that delegates to default `log` package
-var NullLogger = &nullLogger{}
-
-type nullLogger struct{}
-
-func (l *nullLogger) Error(msg string) {}
-func (l *nullLogger) Infof(msg string, args ...interface{}) {}
diff --git a/vendor/github.com/uber/jaeger-client-go/metrics.go b/vendor/github.com/uber/jaeger-client-go/metrics.go
deleted file mode 100644
index cadb2b9c0..000000000
--- a/vendor/github.com/uber/jaeger-client-go/metrics.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/uber/jaeger-lib/metrics"
-)
-
-// Metrics is a container of all stats emitted by Jaeger tracer.
-type Metrics struct {
- // Number of traces started by this tracer as sampled
- TracesStartedSampled metrics.Counter `metric:"traces" tags:"state=started,sampled=y"`
-
- // Number of traces started by this tracer as not sampled
- TracesStartedNotSampled metrics.Counter `metric:"traces" tags:"state=started,sampled=n"`
-
- // Number of externally started sampled traces this tracer joined
- TracesJoinedSampled metrics.Counter `metric:"traces" tags:"state=joined,sampled=y"`
-
- // Number of externally started not-sampled traces this tracer joined
- TracesJoinedNotSampled metrics.Counter `metric:"traces" tags:"state=joined,sampled=n"`
-
- // Number of sampled spans started by this tracer
- SpansStartedSampled metrics.Counter `metric:"started_spans" tags:"sampled=y"`
-
- // Number of unsampled spans started by this tracer
- SpansStartedNotSampled metrics.Counter `metric:"started_spans" tags:"sampled=n"`
-
- // Number of spans finished by this tracer
- SpansFinished metrics.Counter `metric:"finished_spans"`
-
- // Number of errors decoding tracing context
- DecodingErrors metrics.Counter `metric:"span_context_decoding_errors"`
-
- // Number of spans successfully reported
- ReporterSuccess metrics.Counter `metric:"reporter_spans" tags:"result=ok"`
-
- // Number of spans not reported due to a Sender failure
- ReporterFailure metrics.Counter `metric:"reporter_spans" tags:"result=err"`
-
- // Number of spans dropped due to internal queue overflow
- ReporterDropped metrics.Counter `metric:"reporter_spans" tags:"result=dropped"`
-
- // Current number of spans in the reporter queue
- ReporterQueueLength metrics.Gauge `metric:"reporter_queue_length"`
-
- // Number of times the Sampler succeeded to retrieve sampling strategy
- SamplerRetrieved metrics.Counter `metric:"sampler_queries" tags:"result=ok"`
-
- // Number of times the Sampler failed to retrieve sampling strategy
- SamplerQueryFailure metrics.Counter `metric:"sampler_queries" tags:"result=err"`
-
- // Number of times the Sampler succeeded to retrieve and update sampling strategy
- SamplerUpdated metrics.Counter `metric:"sampler_updates" tags:"result=ok"`
-
- // Number of times the Sampler failed to update sampling strategy
- SamplerUpdateFailure metrics.Counter `metric:"sampler_updates" tags:"result=err"`
-
- // Number of times baggage was successfully written or updated on spans.
- BaggageUpdateSuccess metrics.Counter `metric:"baggage_updates" tags:"result=ok"`
-
- // Number of times baggage failed to write or update on spans.
- BaggageUpdateFailure metrics.Counter `metric:"baggage_updates" tags:"result=err"`
-
- // Number of times baggage was truncated as per baggage restrictions.
- BaggageTruncate metrics.Counter `metric:"baggage_truncations"`
-
- // Number of times baggage restrictions were successfully updated.
- BaggageRestrictionsUpdateSuccess metrics.Counter `metric:"baggage_restrictions_updates" tags:"result=ok"`
-
- // Number of times baggage restrictions failed to update.
- BaggageRestrictionsUpdateFailure metrics.Counter `metric:"baggage_restrictions_updates" tags:"result=err"`
-
- // Number of times debug spans were throttled.
- ThrottledDebugSpans metrics.Counter `metric:"throttled_debug_spans"`
-
- // Number of times throttler successfully updated.
- ThrottlerUpdateSuccess metrics.Counter `metric:"throttler_updates" tags:"result=ok"`
-
- // Number of times throttler failed to update.
- ThrottlerUpdateFailure metrics.Counter `metric:"throttler_updates" tags:"result=err"`
-}
-
-// NewMetrics creates a new Metrics struct and initializes it.
-func NewMetrics(factory metrics.Factory, globalTags map[string]string) *Metrics {
- m := &Metrics{}
- // TODO the namespace "jaeger" should be configurable (e.g. in all-in-one "jaeger-client" would make more sense)
- metrics.Init(m, factory.Namespace("jaeger", nil), globalTags)
- return m
-}
-
-// NewNullMetrics creates a new Metrics struct that won't report any metrics.
-func NewNullMetrics() *Metrics {
- return NewMetrics(metrics.NullFactory, nil)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/observer.go b/vendor/github.com/uber/jaeger-client-go/observer.go
deleted file mode 100644
index 7bbd02889..000000000
--- a/vendor/github.com/uber/jaeger-client-go/observer.go
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import opentracing "github.com/opentracing/opentracing-go"
-
-// Observer can be registered with the Tracer to receive notifications about
-// new Spans.
-//
-// Deprecated: use jaeger.ContribObserver instead.
-type Observer interface {
- OnStartSpan(operationName string, options opentracing.StartSpanOptions) SpanObserver
-}
-
-// SpanObserver is created by the Observer and receives notifications about
-// other Span events.
-//
-// Deprecated: use jaeger.ContribSpanObserver instead.
-type SpanObserver interface {
- OnSetOperationName(operationName string)
- OnSetTag(key string, value interface{})
- OnFinish(options opentracing.FinishOptions)
-}
-
-// compositeObserver is a dispatcher to other observers
-type compositeObserver struct {
- observers []ContribObserver
-}
-
-// compositeSpanObserver is a dispatcher to other span observers
-type compositeSpanObserver struct {
- observers []ContribSpanObserver
-}
-
-// noopSpanObserver is used when there are no observers registered
-// on the Tracer or none of them returns span observers from OnStartSpan.
-var noopSpanObserver = &compositeSpanObserver{}
-
-func (o *compositeObserver) append(contribObserver ContribObserver) {
- o.observers = append(o.observers, contribObserver)
-}
-
-func (o *compositeObserver) OnStartSpan(sp opentracing.Span, operationName string, options opentracing.StartSpanOptions) ContribSpanObserver {
- var spanObservers []ContribSpanObserver
- for _, obs := range o.observers {
- spanObs, ok := obs.OnStartSpan(sp, operationName, options)
- if ok {
- if spanObservers == nil {
- spanObservers = make([]ContribSpanObserver, 0, len(o.observers))
- }
- spanObservers = append(spanObservers, spanObs)
- }
- }
- if len(spanObservers) == 0 {
- return noopSpanObserver
- }
- return &compositeSpanObserver{observers: spanObservers}
-}
-
-func (o *compositeSpanObserver) OnSetOperationName(operationName string) {
- for _, obs := range o.observers {
- obs.OnSetOperationName(operationName)
- }
-}
-
-func (o *compositeSpanObserver) OnSetTag(key string, value interface{}) {
- for _, obs := range o.observers {
- obs.OnSetTag(key, value)
- }
-}
-
-func (o *compositeSpanObserver) OnFinish(options opentracing.FinishOptions) {
- for _, obs := range o.observers {
- obs.OnFinish(options)
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/process.go b/vendor/github.com/uber/jaeger-client-go/process.go
deleted file mode 100644
index 30cbf9962..000000000
--- a/vendor/github.com/uber/jaeger-client-go/process.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2018 The Jaeger Authors.
-//
-// 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 jaeger
-
-// Process holds process specific metadata that's relevant to this client.
-type Process struct {
- Service string
- UUID string
- Tags []Tag
-}
-
-// ProcessSetter sets a process. This can be used by any class that requires
-// the process to be set as part of initialization.
-// See internal/throttler/remote/throttler.go for an example.
-type ProcessSetter interface {
- SetProcess(process Process)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/propagation.go b/vendor/github.com/uber/jaeger-client-go/propagation.go
deleted file mode 100644
index abca67a3c..000000000
--- a/vendor/github.com/uber/jaeger-client-go/propagation.go
+++ /dev/null
@@ -1,300 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "io"
- "log"
- "net/url"
- "strings"
- "sync"
-
- opentracing "github.com/opentracing/opentracing-go"
-)
-
-// Injector is responsible for injecting SpanContext instances in a manner suitable
-// for propagation via a format-specific "carrier" object. Typically the
-// injection will take place across an RPC boundary, but message queues and
-// other IPC mechanisms are also reasonable places to use an Injector.
-type Injector interface {
- // Inject takes `SpanContext` and injects it into `carrier`. The actual type
- // of `carrier` depends on the `format` passed to `Tracer.Inject()`.
- //
- // Implementations may return opentracing.ErrInvalidCarrier or any other
- // implementation-specific error if injection fails.
- Inject(ctx SpanContext, carrier interface{}) error
-}
-
-// Extractor is responsible for extracting SpanContext instances from a
-// format-specific "carrier" object. Typically the extraction will take place
-// on the server side of an RPC boundary, but message queues and other IPC
-// mechanisms are also reasonable places to use an Extractor.
-type Extractor interface {
- // Extract decodes a SpanContext instance from the given `carrier`,
- // or (nil, opentracing.ErrSpanContextNotFound) if no context could
- // be found in the `carrier`.
- Extract(carrier interface{}) (SpanContext, error)
-}
-
-type textMapPropagator struct {
- headerKeys *HeadersConfig
- metrics Metrics
- encodeValue func(string) string
- decodeValue func(string) string
-}
-
-func newTextMapPropagator(headerKeys *HeadersConfig, metrics Metrics) *textMapPropagator {
- return &textMapPropagator{
- headerKeys: headerKeys,
- metrics: metrics,
- encodeValue: func(val string) string {
- return val
- },
- decodeValue: func(val string) string {
- return val
- },
- }
-}
-
-func newHTTPHeaderPropagator(headerKeys *HeadersConfig, metrics Metrics) *textMapPropagator {
- return &textMapPropagator{
- headerKeys: headerKeys,
- metrics: metrics,
- encodeValue: func(val string) string {
- return url.QueryEscape(val)
- },
- decodeValue: func(val string) string {
- // ignore decoding errors, cannot do anything about them
- if v, err := url.QueryUnescape(val); err == nil {
- return v
- }
- return val
- },
- }
-}
-
-type binaryPropagator struct {
- tracer *Tracer
- buffers sync.Pool
-}
-
-func newBinaryPropagator(tracer *Tracer) *binaryPropagator {
- return &binaryPropagator{
- tracer: tracer,
- buffers: sync.Pool{New: func() interface{} { return &bytes.Buffer{} }},
- }
-}
-
-func (p *textMapPropagator) Inject(
- sc SpanContext,
- abstractCarrier interface{},
-) error {
- textMapWriter, ok := abstractCarrier.(opentracing.TextMapWriter)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- // Do not encode the string with trace context to avoid accidental double-encoding
- // if people are using opentracing < 0.10.0. Our colon-separated representation
- // of the trace context is already safe for HTTP headers.
- textMapWriter.Set(p.headerKeys.TraceContextHeaderName, sc.String())
- for k, v := range sc.baggage {
- safeKey := p.addBaggageKeyPrefix(k)
- safeVal := p.encodeValue(v)
- textMapWriter.Set(safeKey, safeVal)
- }
- return nil
-}
-
-func (p *textMapPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- textMapReader, ok := abstractCarrier.(opentracing.TextMapReader)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- var ctx SpanContext
- var baggage map[string]string
- err := textMapReader.ForeachKey(func(rawKey, value string) error {
- key := strings.ToLower(rawKey) // TODO not necessary for plain TextMap
- if key == p.headerKeys.TraceContextHeaderName {
- var err error
- safeVal := p.decodeValue(value)
- if ctx, err = ContextFromString(safeVal); err != nil {
- return err
- }
- } else if key == p.headerKeys.JaegerDebugHeader {
- ctx.debugID = p.decodeValue(value)
- } else if key == p.headerKeys.JaegerBaggageHeader {
- if baggage == nil {
- baggage = make(map[string]string)
- }
- for k, v := range p.parseCommaSeparatedMap(value) {
- baggage[k] = v
- }
- } else if strings.HasPrefix(key, p.headerKeys.TraceBaggageHeaderPrefix) {
- if baggage == nil {
- baggage = make(map[string]string)
- }
- safeKey := p.removeBaggageKeyPrefix(key)
- safeVal := p.decodeValue(value)
- baggage[safeKey] = safeVal
- }
- return nil
- })
- if err != nil {
- p.metrics.DecodingErrors.Inc(1)
- return emptyContext, err
- }
- if !ctx.traceID.IsValid() && ctx.debugID == "" && len(baggage) == 0 {
- return emptyContext, opentracing.ErrSpanContextNotFound
- }
- ctx.baggage = baggage
- return ctx, nil
-}
-
-func (p *binaryPropagator) Inject(
- sc SpanContext,
- abstractCarrier interface{},
-) error {
- carrier, ok := abstractCarrier.(io.Writer)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- // Handle the tracer context
- if err := binary.Write(carrier, binary.BigEndian, sc.traceID); err != nil {
- return err
- }
- if err := binary.Write(carrier, binary.BigEndian, sc.spanID); err != nil {
- return err
- }
- if err := binary.Write(carrier, binary.BigEndian, sc.parentID); err != nil {
- return err
- }
- if err := binary.Write(carrier, binary.BigEndian, sc.flags); err != nil {
- return err
- }
-
- // Handle the baggage items
- if err := binary.Write(carrier, binary.BigEndian, int32(len(sc.baggage))); err != nil {
- return err
- }
- for k, v := range sc.baggage {
- if err := binary.Write(carrier, binary.BigEndian, int32(len(k))); err != nil {
- return err
- }
- io.WriteString(carrier, k)
- if err := binary.Write(carrier, binary.BigEndian, int32(len(v))); err != nil {
- return err
- }
- io.WriteString(carrier, v)
- }
-
- return nil
-}
-
-func (p *binaryPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- carrier, ok := abstractCarrier.(io.Reader)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- var ctx SpanContext
-
- if err := binary.Read(carrier, binary.BigEndian, &ctx.traceID); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if err := binary.Read(carrier, binary.BigEndian, &ctx.spanID); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if err := binary.Read(carrier, binary.BigEndian, &ctx.parentID); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if err := binary.Read(carrier, binary.BigEndian, &ctx.flags); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
-
- // Handle the baggage items
- var numBaggage int32
- if err := binary.Read(carrier, binary.BigEndian, &numBaggage); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if iNumBaggage := int(numBaggage); iNumBaggage > 0 {
- ctx.baggage = make(map[string]string, iNumBaggage)
- buf := p.buffers.Get().(*bytes.Buffer)
- defer p.buffers.Put(buf)
-
- var keyLen, valLen int32
- for i := 0; i < iNumBaggage; i++ {
- if err := binary.Read(carrier, binary.BigEndian, &keyLen); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- buf.Reset()
- buf.Grow(int(keyLen))
- if n, err := io.CopyN(buf, carrier, int64(keyLen)); err != nil || int32(n) != keyLen {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- key := buf.String()
-
- if err := binary.Read(carrier, binary.BigEndian, &valLen); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- buf.Reset()
- buf.Grow(int(valLen))
- if n, err := io.CopyN(buf, carrier, int64(valLen)); err != nil || int32(n) != valLen {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- ctx.baggage[key] = buf.String()
- }
- }
-
- return ctx, nil
-}
-
-// Converts a comma separated key value pair list into a map
-// e.g. key1=value1, key2=value2, key3 = value3
-// is converted to map[string]string { "key1" : "value1",
-// "key2" : "value2",
-// "key3" : "value3" }
-func (p *textMapPropagator) parseCommaSeparatedMap(value string) map[string]string {
- baggage := make(map[string]string)
- value, err := url.QueryUnescape(value)
- if err != nil {
- log.Printf("Unable to unescape %s, %v", value, err)
- return baggage
- }
- for _, kvpair := range strings.Split(value, ",") {
- kv := strings.Split(strings.TrimSpace(kvpair), "=")
- if len(kv) == 2 {
- baggage[kv[0]] = kv[1]
- } else {
- log.Printf("Malformed value passed in for %s", p.headerKeys.JaegerBaggageHeader)
- }
- }
- return baggage
-}
-
-// Converts a baggage item key into an http header format,
-// by prepending TraceBaggageHeaderPrefix and encoding the key string
-func (p *textMapPropagator) addBaggageKeyPrefix(key string) string {
- // TODO encodeBaggageKeyAsHeader add caching and escaping
- return fmt.Sprintf("%v%v", p.headerKeys.TraceBaggageHeaderPrefix, key)
-}
-
-func (p *textMapPropagator) removeBaggageKeyPrefix(key string) string {
- // TODO decodeBaggageHeaderKey add caching and escaping
- return key[len(p.headerKeys.TraceBaggageHeaderPrefix):]
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/reference.go b/vendor/github.com/uber/jaeger-client-go/reference.go
deleted file mode 100644
index 5646e78bb..000000000
--- a/vendor/github.com/uber/jaeger-client-go/reference.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import "github.com/opentracing/opentracing-go"
-
-// Reference represents a causal reference to other Spans (via their SpanContext).
-type Reference struct {
- Type opentracing.SpanReferenceType
- Context SpanContext
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/reporter.go b/vendor/github.com/uber/jaeger-client-go/reporter.go
deleted file mode 100644
index fe6288c4b..000000000
--- a/vendor/github.com/uber/jaeger-client-go/reporter.go
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- "github.com/uber/jaeger-client-go/log"
-)
-
-// Reporter is called by the tracer when a span is completed to report the span to the tracing collector.
-type Reporter interface {
- // Report submits a new span to collectors, possibly asynchronously and/or with buffering.
- Report(span *Span)
-
- // Close does a clean shutdown of the reporter, flushing any traces that may be buffered in memory.
- Close()
-}
-
-// ------------------------------
-
-type nullReporter struct{}
-
-// NewNullReporter creates a no-op reporter that ignores all reported spans.
-func NewNullReporter() Reporter {
- return &nullReporter{}
-}
-
-// Report implements Report() method of Reporter by doing nothing.
-func (r *nullReporter) Report(span *Span) {
- // no-op
-}
-
-// Close implements Close() method of Reporter by doing nothing.
-func (r *nullReporter) Close() {
- // no-op
-}
-
-// ------------------------------
-
-type loggingReporter struct {
- logger Logger
-}
-
-// NewLoggingReporter creates a reporter that logs all reported spans to provided logger.
-func NewLoggingReporter(logger Logger) Reporter {
- return &loggingReporter{logger}
-}
-
-// Report implements Report() method of Reporter by logging the span to the logger.
-func (r *loggingReporter) Report(span *Span) {
- r.logger.Infof("Reporting span %+v", span)
-}
-
-// Close implements Close() method of Reporter by doing nothing.
-func (r *loggingReporter) Close() {
- // no-op
-}
-
-// ------------------------------
-
-// InMemoryReporter is used for testing, and simply collects spans in memory.
-type InMemoryReporter struct {
- spans []opentracing.Span
- lock sync.Mutex
-}
-
-// NewInMemoryReporter creates a reporter that stores spans in memory.
-// NOTE: the Tracer should be created with options.PoolSpans = false.
-func NewInMemoryReporter() *InMemoryReporter {
- return &InMemoryReporter{
- spans: make([]opentracing.Span, 0, 10),
- }
-}
-
-// Report implements Report() method of Reporter by storing the span in the buffer.
-func (r *InMemoryReporter) Report(span *Span) {
- r.lock.Lock()
- r.spans = append(r.spans, span)
- r.lock.Unlock()
-}
-
-// Close implements Close() method of Reporter by doing nothing.
-func (r *InMemoryReporter) Close() {
- // no-op
-}
-
-// SpansSubmitted returns the number of spans accumulated in the buffer.
-func (r *InMemoryReporter) SpansSubmitted() int {
- r.lock.Lock()
- defer r.lock.Unlock()
- return len(r.spans)
-}
-
-// GetSpans returns accumulated spans as a copy of the buffer.
-func (r *InMemoryReporter) GetSpans() []opentracing.Span {
- r.lock.Lock()
- defer r.lock.Unlock()
- copied := make([]opentracing.Span, len(r.spans))
- copy(copied, r.spans)
- return copied
-}
-
-// Reset clears all accumulated spans.
-func (r *InMemoryReporter) Reset() {
- r.lock.Lock()
- defer r.lock.Unlock()
- r.spans = nil
-}
-
-// ------------------------------
-
-type compositeReporter struct {
- reporters []Reporter
-}
-
-// NewCompositeReporter creates a reporter that ignores all reported spans.
-func NewCompositeReporter(reporters ...Reporter) Reporter {
- return &compositeReporter{reporters: reporters}
-}
-
-// Report implements Report() method of Reporter by delegating to each underlying reporter.
-func (r *compositeReporter) Report(span *Span) {
- for _, reporter := range r.reporters {
- reporter.Report(span)
- }
-}
-
-// Close implements Close() method of Reporter by closing each underlying reporter.
-func (r *compositeReporter) Close() {
- for _, reporter := range r.reporters {
- reporter.Close()
- }
-}
-
-// ------------- REMOTE REPORTER -----------------
-
-type reporterQueueItemType int
-
-const (
- defaultQueueSize = 100
- defaultBufferFlushInterval = 1 * time.Second
-
- reporterQueueItemSpan reporterQueueItemType = iota
- reporterQueueItemClose
-)
-
-type reporterQueueItem struct {
- itemType reporterQueueItemType
- span *Span
- close *sync.WaitGroup
-}
-
-type remoteReporter struct {
- // These fields must be first in the struct because `sync/atomic` expects 64-bit alignment.
- // Cf. https://github.com/uber/jaeger-client-go/issues/155, https://goo.gl/zW7dgq
- queueLength int64
- closed int64 // 0 - not closed, 1 - closed
-
- reporterOptions
-
- sender Transport
- queue chan reporterQueueItem
-}
-
-// NewRemoteReporter creates a new reporter that sends spans out of process by means of Sender.
-// Calls to Report(Span) return immediately (side effect: if internal buffer is full the span is dropped).
-// Periodically the transport buffer is flushed even if it hasn't reached max packet size.
-// Calls to Close() block until all spans reported prior to the call to Close are flushed.
-func NewRemoteReporter(sender Transport, opts ...ReporterOption) Reporter {
- options := reporterOptions{}
- for _, option := range opts {
- option(&options)
- }
- if options.bufferFlushInterval <= 0 {
- options.bufferFlushInterval = defaultBufferFlushInterval
- }
- if options.logger == nil {
- options.logger = log.NullLogger
- }
- if options.metrics == nil {
- options.metrics = NewNullMetrics()
- }
- if options.queueSize <= 0 {
- options.queueSize = defaultQueueSize
- }
- reporter := &remoteReporter{
- reporterOptions: options,
- sender: sender,
- queue: make(chan reporterQueueItem, options.queueSize),
- }
- go reporter.processQueue()
- return reporter
-}
-
-// Report implements Report() method of Reporter.
-// It passes the span to a background go-routine for submission to Jaeger backend.
-// If the internal queue is full, the span is dropped and metrics.ReporterDropped counter is incremented.
-// If Report() is called after the reporter has been Close()-ed, the additional spans will not be
-// sent to the backend, but the metrics.ReporterDropped counter may not reflect them correctly,
-// because some of them may still be successfully added to the queue.
-func (r *remoteReporter) Report(span *Span) {
- select {
- case r.queue <- reporterQueueItem{itemType: reporterQueueItemSpan, span: span}:
- atomic.AddInt64(&r.queueLength, 1)
- default:
- r.metrics.ReporterDropped.Inc(1)
- }
-}
-
-// Close implements Close() method of Reporter by waiting for the queue to be drained.
-func (r *remoteReporter) Close() {
- if swapped := atomic.CompareAndSwapInt64(&r.closed, 0, 1); !swapped {
- r.logger.Error("Repeated attempt to close the reporter is ignored")
- return
- }
- r.sendCloseEvent()
- r.sender.Close()
-}
-
-func (r *remoteReporter) sendCloseEvent() {
- wg := &sync.WaitGroup{}
- wg.Add(1)
- item := reporterQueueItem{itemType: reporterQueueItemClose, close: wg}
-
- r.queue <- item // if the queue is full we will block until there is space
- atomic.AddInt64(&r.queueLength, 1)
- wg.Wait()
-}
-
-// processQueue reads spans from the queue, converts them to Thrift, and stores them in an internal buffer.
-// When the buffer length reaches batchSize, it is flushed by submitting the accumulated spans to Jaeger.
-// Buffer also gets flushed automatically every batchFlushInterval seconds, just in case the tracer stopped
-// reporting new spans.
-func (r *remoteReporter) processQueue() {
- // flush causes the Sender to flush its accumulated spans and clear the buffer
- flush := func() {
- if flushed, err := r.sender.Flush(); err != nil {
- r.metrics.ReporterFailure.Inc(int64(flushed))
- r.logger.Error(fmt.Sprintf("error when flushing the buffer: %s", err.Error()))
- } else if flushed > 0 {
- r.metrics.ReporterSuccess.Inc(int64(flushed))
- }
- }
-
- timer := time.NewTicker(r.bufferFlushInterval)
- for {
- select {
- case <-timer.C:
- flush()
- case item := <-r.queue:
- atomic.AddInt64(&r.queueLength, -1)
- switch item.itemType {
- case reporterQueueItemSpan:
- span := item.span
- if flushed, err := r.sender.Append(span); err != nil {
- r.metrics.ReporterFailure.Inc(int64(flushed))
- r.logger.Error(fmt.Sprintf("error reporting span %q: %s", span.OperationName(), err.Error()))
- } else if flushed > 0 {
- r.metrics.ReporterSuccess.Inc(int64(flushed))
- // to reduce the number of gauge stats, we only emit queue length on flush
- r.metrics.ReporterQueueLength.Update(atomic.LoadInt64(&r.queueLength))
- }
- case reporterQueueItemClose:
- timer.Stop()
- flush()
- item.close.Done()
- return
- }
- }
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/reporter_options.go b/vendor/github.com/uber/jaeger-client-go/reporter_options.go
deleted file mode 100644
index 65012d701..000000000
--- a/vendor/github.com/uber/jaeger-client-go/reporter_options.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-)
-
-// ReporterOption is a function that sets some option on the reporter.
-type ReporterOption func(c *reporterOptions)
-
-// ReporterOptions is a factory for all available ReporterOption's
-var ReporterOptions reporterOptions
-
-// reporterOptions control behavior of the reporter.
-type reporterOptions struct {
- // queueSize is the size of internal queue where reported spans are stored before they are processed in the background
- queueSize int
- // bufferFlushInterval is how often the buffer is force-flushed, even if it's not full
- bufferFlushInterval time.Duration
- // logger is used to log errors of span submissions
- logger Logger
- // metrics is used to record runtime stats
- metrics *Metrics
-}
-
-// QueueSize creates a ReporterOption that sets the size of the internal queue where
-// spans are stored before they are processed.
-func (reporterOptions) QueueSize(queueSize int) ReporterOption {
- return func(r *reporterOptions) {
- r.queueSize = queueSize
- }
-}
-
-// Metrics creates a ReporterOption that initializes Metrics in the reporter,
-// which is used to record runtime statistics.
-func (reporterOptions) Metrics(metrics *Metrics) ReporterOption {
- return func(r *reporterOptions) {
- r.metrics = metrics
- }
-}
-
-// BufferFlushInterval creates a ReporterOption that sets how often the queue
-// is force-flushed.
-func (reporterOptions) BufferFlushInterval(bufferFlushInterval time.Duration) ReporterOption {
- return func(r *reporterOptions) {
- r.bufferFlushInterval = bufferFlushInterval
- }
-}
-
-// Logger creates a ReporterOption that initializes the logger used to log
-// errors of span submissions.
-func (reporterOptions) Logger(logger Logger) ReporterOption {
- return func(r *reporterOptions) {
- r.logger = logger
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md
deleted file mode 100644
index 879948e9c..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-An Observer that can be used to emit RPC metrics
-================================================
-
-It can be attached to the tracer during tracer construction.
-See `ExampleObserver` function in [observer_test.go](./observer_test.go).
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go
deleted file mode 100644
index 51aa11b35..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics implements an Observer that can be used to emit RPC metrics.
-package rpcmetrics
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go
deleted file mode 100644
index 30555243d..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-import "sync"
-
-// normalizedEndpoints is a cache for endpointName -> safeName mappings.
-type normalizedEndpoints struct {
- names map[string]string
- maxSize int
- defaultName string
- normalizer NameNormalizer
- mux sync.RWMutex
-}
-
-func newNormalizedEndpoints(maxSize int, normalizer NameNormalizer) *normalizedEndpoints {
- return &normalizedEndpoints{
- maxSize: maxSize,
- normalizer: normalizer,
- names: make(map[string]string, maxSize),
- }
-}
-
-// normalize looks up the name in the cache, if not found it uses normalizer
-// to convert the name to a safe name. If called with more than maxSize unique
-// names it returns "" for all other names beyond those already cached.
-func (n *normalizedEndpoints) normalize(name string) string {
- n.mux.RLock()
- norm, ok := n.names[name]
- l := len(n.names)
- n.mux.RUnlock()
- if ok {
- return norm
- }
- if l >= n.maxSize {
- return ""
- }
- return n.normalizeWithLock(name)
-}
-
-func (n *normalizedEndpoints) normalizeWithLock(name string) string {
- norm := n.normalizer.Normalize(name)
- n.mux.Lock()
- defer n.mux.Unlock()
- // cache may have grown while we were not holding the lock
- if len(n.names) >= n.maxSize {
- return ""
- }
- n.names[name] = norm
- return norm
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go
deleted file mode 100644
index ab8d74c29..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-import (
- "sync"
-
- "github.com/uber/jaeger-lib/metrics"
-)
-
-const (
- otherEndpointsPlaceholder = "other"
- endpointNameMetricTag = "endpoint"
-)
-
-// Metrics is a collection of metrics for an endpoint describing
-// throughput, success, errors, and performance.
-type Metrics struct {
- // RequestCountSuccess is a counter of the total number of successes.
- RequestCountSuccess metrics.Counter `metric:"requests" tags:"error=false"`
-
- // RequestCountFailures is a counter of the number of times any failure has been observed.
- RequestCountFailures metrics.Counter `metric:"requests" tags:"error=true"`
-
- // RequestLatencySuccess is a latency histogram of succesful requests.
- RequestLatencySuccess metrics.Timer `metric:"request_latency" tags:"error=false"`
-
- // RequestLatencyFailures is a latency histogram of failed requests.
- RequestLatencyFailures metrics.Timer `metric:"request_latency" tags:"error=true"`
-
- // HTTPStatusCode2xx is a counter of the total number of requests with HTTP status code 200-299
- HTTPStatusCode2xx metrics.Counter `metric:"http_requests" tags:"status_code=2xx"`
-
- // HTTPStatusCode3xx is a counter of the total number of requests with HTTP status code 300-399
- HTTPStatusCode3xx metrics.Counter `metric:"http_requests" tags:"status_code=3xx"`
-
- // HTTPStatusCode4xx is a counter of the total number of requests with HTTP status code 400-499
- HTTPStatusCode4xx metrics.Counter `metric:"http_requests" tags:"status_code=4xx"`
-
- // HTTPStatusCode5xx is a counter of the total number of requests with HTTP status code 500-599
- HTTPStatusCode5xx metrics.Counter `metric:"http_requests" tags:"status_code=5xx"`
-}
-
-func (m *Metrics) recordHTTPStatusCode(statusCode uint16) {
- if statusCode >= 200 && statusCode < 300 {
- m.HTTPStatusCode2xx.Inc(1)
- } else if statusCode >= 300 && statusCode < 400 {
- m.HTTPStatusCode3xx.Inc(1)
- } else if statusCode >= 400 && statusCode < 500 {
- m.HTTPStatusCode4xx.Inc(1)
- } else if statusCode >= 500 && statusCode < 600 {
- m.HTTPStatusCode5xx.Inc(1)
- }
-}
-
-// MetricsByEndpoint is a registry/cache of metrics for each unique endpoint name.
-// Only maxNumberOfEndpoints Metrics are stored, all other endpoint names are mapped
-// to a generic endpoint name "other".
-type MetricsByEndpoint struct {
- metricsFactory metrics.Factory
- endpoints *normalizedEndpoints
- metricsByEndpoint map[string]*Metrics
- mux sync.RWMutex
-}
-
-func newMetricsByEndpoint(
- metricsFactory metrics.Factory,
- normalizer NameNormalizer,
- maxNumberOfEndpoints int,
-) *MetricsByEndpoint {
- return &MetricsByEndpoint{
- metricsFactory: metricsFactory,
- endpoints: newNormalizedEndpoints(maxNumberOfEndpoints, normalizer),
- metricsByEndpoint: make(map[string]*Metrics, maxNumberOfEndpoints+1), // +1 for "other"
- }
-}
-
-func (m *MetricsByEndpoint) get(endpoint string) *Metrics {
- safeName := m.endpoints.normalize(endpoint)
- if safeName == "" {
- safeName = otherEndpointsPlaceholder
- }
- m.mux.RLock()
- met := m.metricsByEndpoint[safeName]
- m.mux.RUnlock()
- if met != nil {
- return met
- }
-
- return m.getWithWriteLock(safeName)
-}
-
-// split to make easier to test
-func (m *MetricsByEndpoint) getWithWriteLock(safeName string) *Metrics {
- m.mux.Lock()
- defer m.mux.Unlock()
-
- // it is possible that the name has been already registered after we released
- // the read lock and before we grabbed the write lock, so check for that.
- if met, ok := m.metricsByEndpoint[safeName]; ok {
- return met
- }
-
- // it would be nice to create the struct before locking, since Init() is somewhat
- // expensive, however some metrics backends (e.g. expvar) may not like duplicate metrics.
- met := &Metrics{}
- tags := map[string]string{endpointNameMetricTag: safeName}
- metrics.Init(met, m.metricsFactory, tags)
-
- m.metricsByEndpoint[safeName] = met
- return met
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go
deleted file mode 100644
index 148d84b3a..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-// NameNormalizer is used to convert the endpoint names to strings
-// that can be safely used as tags in the metrics.
-type NameNormalizer interface {
- Normalize(name string) string
-}
-
-// DefaultNameNormalizer converts endpoint names so that they contain only characters
-// from the safe charset [a-zA-Z0-9-./_]. All other characters are replaced with '-'.
-var DefaultNameNormalizer = &SimpleNameNormalizer{
- SafeSets: []SafeCharacterSet{
- &Range{From: 'a', To: 'z'},
- &Range{From: 'A', To: 'Z'},
- &Range{From: '0', To: '9'},
- &Char{'-'},
- &Char{'_'},
- &Char{'/'},
- &Char{'.'},
- },
- Replacement: '-',
-}
-
-// SimpleNameNormalizer uses a set of safe character sets.
-type SimpleNameNormalizer struct {
- SafeSets []SafeCharacterSet
- Replacement byte
-}
-
-// SafeCharacterSet determines if the given character is "safe"
-type SafeCharacterSet interface {
- IsSafe(c byte) bool
-}
-
-// Range implements SafeCharacterSet
-type Range struct {
- From, To byte
-}
-
-// IsSafe implements SafeCharacterSet
-func (r *Range) IsSafe(c byte) bool {
- return c >= r.From && c <= r.To
-}
-
-// Char implements SafeCharacterSet
-type Char struct {
- Val byte
-}
-
-// IsSafe implements SafeCharacterSet
-func (ch *Char) IsSafe(c byte) bool {
- return c == ch.Val
-}
-
-// Normalize checks each character in the string against SafeSets,
-// and if it's not safe substitutes it with Replacement.
-func (n *SimpleNameNormalizer) Normalize(name string) string {
- var retMe []byte
- nameBytes := []byte(name)
- for i, b := range nameBytes {
- if n.safeByte(b) {
- if retMe != nil {
- retMe[i] = b
- }
- } else {
- if retMe == nil {
- retMe = make([]byte, len(nameBytes))
- copy(retMe[0:i], nameBytes[0:i])
- }
- retMe[i] = n.Replacement
- }
- }
- if retMe == nil {
- return name
- }
- return string(retMe)
-}
-
-// safeByte checks if b against all safe charsets.
-func (n *SimpleNameNormalizer) safeByte(b byte) bool {
- for i := range n.SafeSets {
- if n.SafeSets[i].IsSafe(b) {
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go
deleted file mode 100644
index eca5ff6f3..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-import (
- "strconv"
- "sync"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
- "github.com/uber/jaeger-lib/metrics"
-
- jaeger "github.com/uber/jaeger-client-go"
-)
-
-const defaultMaxNumberOfEndpoints = 200
-
-// Observer is an observer that can emit RPC metrics.
-type Observer struct {
- metricsByEndpoint *MetricsByEndpoint
-}
-
-// NewObserver creates a new observer that can emit RPC metrics.
-func NewObserver(metricsFactory metrics.Factory, normalizer NameNormalizer) *Observer {
- return &Observer{
- metricsByEndpoint: newMetricsByEndpoint(
- metricsFactory,
- normalizer,
- defaultMaxNumberOfEndpoints,
- ),
- }
-}
-
-// OnStartSpan creates a new Observer for the span.
-func (o *Observer) OnStartSpan(
- operationName string,
- options opentracing.StartSpanOptions,
-) jaeger.SpanObserver {
- return NewSpanObserver(o.metricsByEndpoint, operationName, options)
-}
-
-// SpanKind identifies the span as inboud, outbound, or internal
-type SpanKind int
-
-const (
- // Local span kind
- Local SpanKind = iota
- // Inbound span kind
- Inbound
- // Outbound span kind
- Outbound
-)
-
-// SpanObserver collects RPC metrics
-type SpanObserver struct {
- metricsByEndpoint *MetricsByEndpoint
- operationName string
- startTime time.Time
- mux sync.Mutex
- kind SpanKind
- httpStatusCode uint16
- err bool
-}
-
-// NewSpanObserver creates a new SpanObserver that can emit RPC metrics.
-func NewSpanObserver(
- metricsByEndpoint *MetricsByEndpoint,
- operationName string,
- options opentracing.StartSpanOptions,
-) *SpanObserver {
- so := &SpanObserver{
- metricsByEndpoint: metricsByEndpoint,
- operationName: operationName,
- startTime: options.StartTime,
- }
- for k, v := range options.Tags {
- so.handleTagInLock(k, v)
- }
- return so
-}
-
-// handleTags watches for special tags
-// - SpanKind
-// - HttpStatusCode
-// - Error
-func (so *SpanObserver) handleTagInLock(key string, value interface{}) {
- if key == string(ext.SpanKind) {
- if v, ok := value.(ext.SpanKindEnum); ok {
- value = string(v)
- }
- if v, ok := value.(string); ok {
- if v == string(ext.SpanKindRPCClientEnum) {
- so.kind = Outbound
- } else if v == string(ext.SpanKindRPCServerEnum) {
- so.kind = Inbound
- }
- }
- return
- }
- if key == string(ext.HTTPStatusCode) {
- if v, ok := value.(uint16); ok {
- so.httpStatusCode = v
- } else if v, ok := value.(int); ok {
- so.httpStatusCode = uint16(v)
- } else if v, ok := value.(string); ok {
- if vv, err := strconv.Atoi(v); err == nil {
- so.httpStatusCode = uint16(vv)
- }
- }
- return
- }
- if key == string(ext.Error) {
- if v, ok := value.(bool); ok {
- so.err = v
- } else if v, ok := value.(string); ok {
- if vv, err := strconv.ParseBool(v); err == nil {
- so.err = vv
- }
- }
- return
- }
-}
-
-// OnFinish emits the RPC metrics. It only has an effect when operation name
-// is not blank, and the span kind is an RPC server.
-func (so *SpanObserver) OnFinish(options opentracing.FinishOptions) {
- so.mux.Lock()
- defer so.mux.Unlock()
-
- if so.operationName == "" || so.kind != Inbound {
- return
- }
-
- mets := so.metricsByEndpoint.get(so.operationName)
- latency := options.FinishTime.Sub(so.startTime)
- if so.err {
- mets.RequestCountFailures.Inc(1)
- mets.RequestLatencyFailures.Record(latency)
- } else {
- mets.RequestCountSuccess.Inc(1)
- mets.RequestLatencySuccess.Record(latency)
- }
- mets.recordHTTPStatusCode(so.httpStatusCode)
-}
-
-// OnSetOperationName records new operation name.
-func (so *SpanObserver) OnSetOperationName(operationName string) {
- so.mux.Lock()
- so.operationName = operationName
- so.mux.Unlock()
-}
-
-// OnSetTag implements SpanObserver
-func (so *SpanObserver) OnSetTag(key string, value interface{}) {
- so.mux.Lock()
- so.handleTagInLock(key, value)
- so.mux.Unlock()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/sampler.go b/vendor/github.com/uber/jaeger-client-go/sampler.go
deleted file mode 100644
index e6a32b383..000000000
--- a/vendor/github.com/uber/jaeger-client-go/sampler.go
+++ /dev/null
@@ -1,556 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
- "math"
- "net/url"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/uber/jaeger-client-go/log"
- "github.com/uber/jaeger-client-go/thrift-gen/sampling"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-const (
- defaultSamplingServerURL = "http://localhost:5778/sampling"
- defaultSamplingRefreshInterval = time.Minute
- defaultMaxOperations = 2000
-)
-
-// Sampler decides whether a new trace should be sampled or not.
-type Sampler interface {
- // IsSampled decides whether a trace with given `id` and `operation`
- // should be sampled. This function will also return the tags that
- // can be used to identify the type of sampling that was applied to
- // the root span. Most simple samplers would return two tags,
- // sampler.type and sampler.param, similar to those used in the Configuration
- IsSampled(id TraceID, operation string) (sampled bool, tags []Tag)
-
- // Close does a clean shutdown of the sampler, stopping any background
- // go-routines it may have started.
- Close()
-
- // Equal checks if the `other` sampler is functionally equivalent
- // to this sampler.
- // TODO remove this function. This function is used to determine if 2 samplers are equivalent
- // which does not bode well with the adaptive sampler which has to create all the composite samplers
- // for the comparison to occur. This is expensive to do if only one sampler has changed.
- Equal(other Sampler) bool
-}
-
-// -----------------------
-
-// ConstSampler is a sampler that always makes the same decision.
-type ConstSampler struct {
- Decision bool
- tags []Tag
-}
-
-// NewConstSampler creates a ConstSampler.
-func NewConstSampler(sample bool) Sampler {
- tags := []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeConst},
- {key: SamplerParamTagKey, value: sample},
- }
- return &ConstSampler{Decision: sample, tags: tags}
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *ConstSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return s.Decision, s.tags
-}
-
-// Close implements Close() of Sampler.
-func (s *ConstSampler) Close() {
- // nothing to do
-}
-
-// Equal implements Equal() of Sampler.
-func (s *ConstSampler) Equal(other Sampler) bool {
- if o, ok := other.(*ConstSampler); ok {
- return s.Decision == o.Decision
- }
- return false
-}
-
-// -----------------------
-
-// ProbabilisticSampler is a sampler that randomly samples a certain percentage
-// of traces.
-type ProbabilisticSampler struct {
- samplingRate float64
- samplingBoundary uint64
- tags []Tag
-}
-
-const maxRandomNumber = ^(uint64(1) << 63) // i.e. 0x7fffffffffffffff
-
-// NewProbabilisticSampler creates a sampler that randomly samples a certain percentage of traces specified by the
-// samplingRate, in the range between 0.0 and 1.0.
-//
-// It relies on the fact that new trace IDs are 63bit random numbers themselves, thus making the sampling decision
-// without generating a new random number, but simply calculating if traceID < (samplingRate * 2^63).
-// TODO remove the error from this function for next major release
-func NewProbabilisticSampler(samplingRate float64) (*ProbabilisticSampler, error) {
- if samplingRate < 0.0 || samplingRate > 1.0 {
- return nil, fmt.Errorf("Sampling Rate must be between 0.0 and 1.0, received %f", samplingRate)
- }
- return newProbabilisticSampler(samplingRate), nil
-}
-
-func newProbabilisticSampler(samplingRate float64) *ProbabilisticSampler {
- samplingRate = math.Max(0.0, math.Min(samplingRate, 1.0))
- tags := []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeProbabilistic},
- {key: SamplerParamTagKey, value: samplingRate},
- }
- return &ProbabilisticSampler{
- samplingRate: samplingRate,
- samplingBoundary: uint64(float64(maxRandomNumber) * samplingRate),
- tags: tags,
- }
-}
-
-// SamplingRate returns the sampling probability this sampled was constructed with.
-func (s *ProbabilisticSampler) SamplingRate() float64 {
- return s.samplingRate
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *ProbabilisticSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return s.samplingBoundary >= id.Low, s.tags
-}
-
-// Close implements Close() of Sampler.
-func (s *ProbabilisticSampler) Close() {
- // nothing to do
-}
-
-// Equal implements Equal() of Sampler.
-func (s *ProbabilisticSampler) Equal(other Sampler) bool {
- if o, ok := other.(*ProbabilisticSampler); ok {
- return s.samplingBoundary == o.samplingBoundary
- }
- return false
-}
-
-// -----------------------
-
-type rateLimitingSampler struct {
- maxTracesPerSecond float64
- rateLimiter utils.RateLimiter
- tags []Tag
-}
-
-// NewRateLimitingSampler creates a sampler that samples at most maxTracesPerSecond. The distribution of sampled
-// traces follows burstiness of the service, i.e. a service with uniformly distributed requests will have those
-// requests sampled uniformly as well, but if requests are bursty, especially sub-second, then a number of
-// sequential requests can be sampled each second.
-func NewRateLimitingSampler(maxTracesPerSecond float64) Sampler {
- tags := []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeRateLimiting},
- {key: SamplerParamTagKey, value: maxTracesPerSecond},
- }
- return &rateLimitingSampler{
- maxTracesPerSecond: maxTracesPerSecond,
- rateLimiter: utils.NewRateLimiter(maxTracesPerSecond, math.Max(maxTracesPerSecond, 1.0)),
- tags: tags,
- }
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *rateLimitingSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return s.rateLimiter.CheckCredit(1.0), s.tags
-}
-
-func (s *rateLimitingSampler) Close() {
- // nothing to do
-}
-
-func (s *rateLimitingSampler) Equal(other Sampler) bool {
- if o, ok := other.(*rateLimitingSampler); ok {
- return s.maxTracesPerSecond == o.maxTracesPerSecond
- }
- return false
-}
-
-// -----------------------
-
-// GuaranteedThroughputProbabilisticSampler is a sampler that leverages both probabilisticSampler and
-// rateLimitingSampler. The rateLimitingSampler is used as a guaranteed lower bound sampler such that
-// every operation is sampled at least once in a time interval defined by the lowerBound. ie a lowerBound
-// of 1.0 / (60 * 10) will sample an operation at least once every 10 minutes.
-//
-// The probabilisticSampler is given higher priority when tags are emitted, ie. if IsSampled() for both
-// samplers return true, the tags for probabilisticSampler will be used.
-type GuaranteedThroughputProbabilisticSampler struct {
- probabilisticSampler *ProbabilisticSampler
- lowerBoundSampler Sampler
- tags []Tag
- samplingRate float64
- lowerBound float64
-}
-
-// NewGuaranteedThroughputProbabilisticSampler returns a delegating sampler that applies both
-// probabilisticSampler and rateLimitingSampler.
-func NewGuaranteedThroughputProbabilisticSampler(
- lowerBound, samplingRate float64,
-) (*GuaranteedThroughputProbabilisticSampler, error) {
- return newGuaranteedThroughputProbabilisticSampler(lowerBound, samplingRate), nil
-}
-
-func newGuaranteedThroughputProbabilisticSampler(lowerBound, samplingRate float64) *GuaranteedThroughputProbabilisticSampler {
- s := &GuaranteedThroughputProbabilisticSampler{
- lowerBoundSampler: NewRateLimitingSampler(lowerBound),
- lowerBound: lowerBound,
- }
- s.setProbabilisticSampler(samplingRate)
- return s
-}
-
-func (s *GuaranteedThroughputProbabilisticSampler) setProbabilisticSampler(samplingRate float64) {
- if s.probabilisticSampler == nil || s.samplingRate != samplingRate {
- s.probabilisticSampler = newProbabilisticSampler(samplingRate)
- s.samplingRate = s.probabilisticSampler.SamplingRate()
- s.tags = []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeLowerBound},
- {key: SamplerParamTagKey, value: s.samplingRate},
- }
- }
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *GuaranteedThroughputProbabilisticSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- if sampled, tags := s.probabilisticSampler.IsSampled(id, operation); sampled {
- s.lowerBoundSampler.IsSampled(id, operation)
- return true, tags
- }
- sampled, _ := s.lowerBoundSampler.IsSampled(id, operation)
- return sampled, s.tags
-}
-
-// Close implements Close() of Sampler.
-func (s *GuaranteedThroughputProbabilisticSampler) Close() {
- s.probabilisticSampler.Close()
- s.lowerBoundSampler.Close()
-}
-
-// Equal implements Equal() of Sampler.
-func (s *GuaranteedThroughputProbabilisticSampler) Equal(other Sampler) bool {
- // NB The Equal() function is expensive and will be removed. See adaptiveSampler.Equal() for
- // more information.
- return false
-}
-
-// this function should only be called while holding a Write lock
-func (s *GuaranteedThroughputProbabilisticSampler) update(lowerBound, samplingRate float64) {
- s.setProbabilisticSampler(samplingRate)
- if s.lowerBound != lowerBound {
- s.lowerBoundSampler = NewRateLimitingSampler(lowerBound)
- s.lowerBound = lowerBound
- }
-}
-
-// -----------------------
-
-type adaptiveSampler struct {
- sync.RWMutex
-
- samplers map[string]*GuaranteedThroughputProbabilisticSampler
- defaultSampler *ProbabilisticSampler
- lowerBound float64
- maxOperations int
-}
-
-// NewAdaptiveSampler returns a delegating sampler that applies both probabilisticSampler and
-// rateLimitingSampler via the guaranteedThroughputProbabilisticSampler. This sampler keeps track of all
-// operations and delegates calls to the respective guaranteedThroughputProbabilisticSampler.
-func NewAdaptiveSampler(strategies *sampling.PerOperationSamplingStrategies, maxOperations int) (Sampler, error) {
- return newAdaptiveSampler(strategies, maxOperations), nil
-}
-
-func newAdaptiveSampler(strategies *sampling.PerOperationSamplingStrategies, maxOperations int) Sampler {
- samplers := make(map[string]*GuaranteedThroughputProbabilisticSampler)
- for _, strategy := range strategies.PerOperationStrategies {
- sampler := newGuaranteedThroughputProbabilisticSampler(
- strategies.DefaultLowerBoundTracesPerSecond,
- strategy.ProbabilisticSampling.SamplingRate,
- )
- samplers[strategy.Operation] = sampler
- }
- return &adaptiveSampler{
- samplers: samplers,
- defaultSampler: newProbabilisticSampler(strategies.DefaultSamplingProbability),
- lowerBound: strategies.DefaultLowerBoundTracesPerSecond,
- maxOperations: maxOperations,
- }
-}
-
-func (s *adaptiveSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- s.RLock()
- sampler, ok := s.samplers[operation]
- if ok {
- defer s.RUnlock()
- return sampler.IsSampled(id, operation)
- }
- s.RUnlock()
- s.Lock()
- defer s.Unlock()
-
- // Check if sampler has already been created
- sampler, ok = s.samplers[operation]
- if ok {
- return sampler.IsSampled(id, operation)
- }
- // Store only up to maxOperations of unique ops.
- if len(s.samplers) >= s.maxOperations {
- return s.defaultSampler.IsSampled(id, operation)
- }
- newSampler := newGuaranteedThroughputProbabilisticSampler(s.lowerBound, s.defaultSampler.SamplingRate())
- s.samplers[operation] = newSampler
- return newSampler.IsSampled(id, operation)
-}
-
-func (s *adaptiveSampler) Close() {
- s.Lock()
- defer s.Unlock()
- for _, sampler := range s.samplers {
- sampler.Close()
- }
- s.defaultSampler.Close()
-}
-
-func (s *adaptiveSampler) Equal(other Sampler) bool {
- // NB The Equal() function is overly expensive for adaptiveSampler since it's composed of multiple
- // samplers which all need to be initialized before this function can be called for a comparison.
- // Therefore, adaptiveSampler uses the update() function to only alter the samplers that need
- // changing. Hence this function always returns false so that the update function can be called.
- // Once the Equal() function is removed from the Sampler API, this will no longer be needed.
- return false
-}
-
-func (s *adaptiveSampler) update(strategies *sampling.PerOperationSamplingStrategies) {
- s.Lock()
- defer s.Unlock()
- for _, strategy := range strategies.PerOperationStrategies {
- operation := strategy.Operation
- samplingRate := strategy.ProbabilisticSampling.SamplingRate
- lowerBound := strategies.DefaultLowerBoundTracesPerSecond
- if sampler, ok := s.samplers[operation]; ok {
- sampler.update(lowerBound, samplingRate)
- } else {
- sampler := newGuaranteedThroughputProbabilisticSampler(
- lowerBound,
- samplingRate,
- )
- s.samplers[operation] = sampler
- }
- }
- s.lowerBound = strategies.DefaultLowerBoundTracesPerSecond
- if s.defaultSampler.SamplingRate() != strategies.DefaultSamplingProbability {
- s.defaultSampler = newProbabilisticSampler(strategies.DefaultSamplingProbability)
- }
-}
-
-// -----------------------
-
-// RemotelyControlledSampler is a delegating sampler that polls a remote server
-// for the appropriate sampling strategy, constructs a corresponding sampler and
-// delegates to it for sampling decisions.
-type RemotelyControlledSampler struct {
- // These fields must be first in the struct because `sync/atomic` expects 64-bit alignment.
- // Cf. https://github.com/uber/jaeger-client-go/issues/155, https://goo.gl/zW7dgq
- closed int64 // 0 - not closed, 1 - closed
-
- sync.RWMutex
- samplerOptions
-
- serviceName string
- manager sampling.SamplingManager
- doneChan chan *sync.WaitGroup
-}
-
-type httpSamplingManager struct {
- serverURL string
-}
-
-func (s *httpSamplingManager) GetSamplingStrategy(serviceName string) (*sampling.SamplingStrategyResponse, error) {
- var out sampling.SamplingStrategyResponse
- v := url.Values{}
- v.Set("service", serviceName)
- if err := utils.GetJSON(s.serverURL+"?"+v.Encode(), &out); err != nil {
- return nil, err
- }
- return &out, nil
-}
-
-// NewRemotelyControlledSampler creates a sampler that periodically pulls
-// the sampling strategy from an HTTP sampling server (e.g. jaeger-agent).
-func NewRemotelyControlledSampler(
- serviceName string,
- opts ...SamplerOption,
-) *RemotelyControlledSampler {
- options := applySamplerOptions(opts...)
- sampler := &RemotelyControlledSampler{
- samplerOptions: options,
- serviceName: serviceName,
- manager: &httpSamplingManager{serverURL: options.samplingServerURL},
- doneChan: make(chan *sync.WaitGroup),
- }
- go sampler.pollController()
- return sampler
-}
-
-func applySamplerOptions(opts ...SamplerOption) samplerOptions {
- options := samplerOptions{}
- for _, option := range opts {
- option(&options)
- }
- if options.sampler == nil {
- options.sampler = newProbabilisticSampler(0.001)
- }
- if options.logger == nil {
- options.logger = log.NullLogger
- }
- if options.maxOperations <= 0 {
- options.maxOperations = defaultMaxOperations
- }
- if options.samplingServerURL == "" {
- options.samplingServerURL = defaultSamplingServerURL
- }
- if options.metrics == nil {
- options.metrics = NewNullMetrics()
- }
- if options.samplingRefreshInterval <= 0 {
- options.samplingRefreshInterval = defaultSamplingRefreshInterval
- }
- return options
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *RemotelyControlledSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- s.RLock()
- defer s.RUnlock()
- return s.sampler.IsSampled(id, operation)
-}
-
-// Close implements Close() of Sampler.
-func (s *RemotelyControlledSampler) Close() {
- if swapped := atomic.CompareAndSwapInt64(&s.closed, 0, 1); !swapped {
- s.logger.Error("Repeated attempt to close the sampler is ignored")
- return
- }
-
- var wg sync.WaitGroup
- wg.Add(1)
- s.doneChan <- &wg
- wg.Wait()
-}
-
-// Equal implements Equal() of Sampler.
-func (s *RemotelyControlledSampler) Equal(other Sampler) bool {
- // NB The Equal() function is expensive and will be removed. See adaptiveSampler.Equal() for
- // more information.
- if o, ok := other.(*RemotelyControlledSampler); ok {
- s.RLock()
- o.RLock()
- defer s.RUnlock()
- defer o.RUnlock()
- return s.sampler.Equal(o.sampler)
- }
- return false
-}
-
-func (s *RemotelyControlledSampler) pollController() {
- ticker := time.NewTicker(s.samplingRefreshInterval)
- defer ticker.Stop()
- s.pollControllerWithTicker(ticker)
-}
-
-func (s *RemotelyControlledSampler) pollControllerWithTicker(ticker *time.Ticker) {
- for {
- select {
- case <-ticker.C:
- s.updateSampler()
- case wg := <-s.doneChan:
- wg.Done()
- return
- }
- }
-}
-
-func (s *RemotelyControlledSampler) getSampler() Sampler {
- s.Lock()
- defer s.Unlock()
- return s.sampler
-}
-
-func (s *RemotelyControlledSampler) setSampler(sampler Sampler) {
- s.Lock()
- defer s.Unlock()
- s.sampler = sampler
-}
-
-func (s *RemotelyControlledSampler) updateSampler() {
- res, err := s.manager.GetSamplingStrategy(s.serviceName)
- if err != nil {
- s.metrics.SamplerQueryFailure.Inc(1)
- return
- }
- s.Lock()
- defer s.Unlock()
-
- s.metrics.SamplerRetrieved.Inc(1)
- if strategies := res.GetOperationSampling(); strategies != nil {
- s.updateAdaptiveSampler(strategies)
- } else {
- err = s.updateRateLimitingOrProbabilisticSampler(res)
- }
- if err != nil {
- s.metrics.SamplerUpdateFailure.Inc(1)
- s.logger.Infof("Unable to handle sampling strategy response %+v. Got error: %v", res, err)
- return
- }
- s.metrics.SamplerUpdated.Inc(1)
-}
-
-// NB: this function should only be called while holding a Write lock
-func (s *RemotelyControlledSampler) updateAdaptiveSampler(strategies *sampling.PerOperationSamplingStrategies) {
- if adaptiveSampler, ok := s.sampler.(*adaptiveSampler); ok {
- adaptiveSampler.update(strategies)
- } else {
- s.sampler = newAdaptiveSampler(strategies, s.maxOperations)
- }
-}
-
-// NB: this function should only be called while holding a Write lock
-func (s *RemotelyControlledSampler) updateRateLimitingOrProbabilisticSampler(res *sampling.SamplingStrategyResponse) error {
- var newSampler Sampler
- if probabilistic := res.GetProbabilisticSampling(); probabilistic != nil {
- newSampler = newProbabilisticSampler(probabilistic.SamplingRate)
- } else if rateLimiting := res.GetRateLimitingSampling(); rateLimiting != nil {
- newSampler = NewRateLimitingSampler(float64(rateLimiting.MaxTracesPerSecond))
- } else {
- return fmt.Errorf("Unsupported sampling strategy type %v", res.GetStrategyType())
- }
- if !s.sampler.Equal(newSampler) {
- s.sampler = newSampler
- }
- return nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/sampler_options.go b/vendor/github.com/uber/jaeger-client-go/sampler_options.go
deleted file mode 100644
index 75d28a561..000000000
--- a/vendor/github.com/uber/jaeger-client-go/sampler_options.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-)
-
-// SamplerOption is a function that sets some option on the sampler
-type SamplerOption func(options *samplerOptions)
-
-// SamplerOptions is a factory for all available SamplerOption's
-var SamplerOptions samplerOptions
-
-type samplerOptions struct {
- metrics *Metrics
- maxOperations int
- sampler Sampler
- logger Logger
- samplingServerURL string
- samplingRefreshInterval time.Duration
-}
-
-// Metrics creates a SamplerOption that initializes Metrics on the sampler,
-// which is used to emit statistics.
-func (samplerOptions) Metrics(m *Metrics) SamplerOption {
- return func(o *samplerOptions) {
- o.metrics = m
- }
-}
-
-// MaxOperations creates a SamplerOption that sets the maximum number of
-// operations the sampler will keep track of.
-func (samplerOptions) MaxOperations(maxOperations int) SamplerOption {
- return func(o *samplerOptions) {
- o.maxOperations = maxOperations
- }
-}
-
-// InitialSampler creates a SamplerOption that sets the initial sampler
-// to use before a remote sampler is created and used.
-func (samplerOptions) InitialSampler(sampler Sampler) SamplerOption {
- return func(o *samplerOptions) {
- o.sampler = sampler
- }
-}
-
-// Logger creates a SamplerOption that sets the logger used by the sampler.
-func (samplerOptions) Logger(logger Logger) SamplerOption {
- return func(o *samplerOptions) {
- o.logger = logger
- }
-}
-
-// SamplingServerURL creates a SamplerOption that sets the sampling server url
-// of the local agent that contains the sampling strategies.
-func (samplerOptions) SamplingServerURL(samplingServerURL string) SamplerOption {
- return func(o *samplerOptions) {
- o.samplingServerURL = samplingServerURL
- }
-}
-
-// SamplingRefreshInterval creates a SamplerOption that sets how often the
-// sampler will poll local agent for the appropriate sampling strategy.
-func (samplerOptions) SamplingRefreshInterval(samplingRefreshInterval time.Duration) SamplerOption {
- return func(o *samplerOptions) {
- o.samplingRefreshInterval = samplingRefreshInterval
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/span.go b/vendor/github.com/uber/jaeger-client-go/span.go
deleted file mode 100644
index f0b497a90..000000000
--- a/vendor/github.com/uber/jaeger-client-go/span.go
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "sync"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
- "github.com/opentracing/opentracing-go/log"
-)
-
-// Span implements opentracing.Span
-type Span struct {
- sync.RWMutex
-
- tracer *Tracer
-
- context SpanContext
-
- // The name of the "operation" this span is an instance of.
- // Known as a "span name" in some implementations.
- operationName string
-
- // firstInProcess, if true, indicates that this span is the root of the (sub)tree
- // of spans in the current process. In other words it's true for the root spans,
- // and the ingress spans when the process joins another trace.
- firstInProcess bool
-
- // startTime is the timestamp indicating when the span began, with microseconds precision.
- startTime time.Time
-
- // duration returns duration of the span with microseconds precision.
- // Zero value means duration is unknown.
- duration time.Duration
-
- // tags attached to this span
- tags []Tag
-
- // The span's "micro-log"
- logs []opentracing.LogRecord
-
- // references for this span
- references []Reference
-
- observer ContribSpanObserver
-}
-
-// Tag is a simple key value wrapper.
-// TODO deprecate in the next major release, use opentracing.Tag instead.
-type Tag struct {
- key string
- value interface{}
-}
-
-// SetOperationName sets or changes the operation name.
-func (s *Span) SetOperationName(operationName string) opentracing.Span {
- s.Lock()
- defer s.Unlock()
- if s.context.IsSampled() {
- s.operationName = operationName
- }
- s.observer.OnSetOperationName(operationName)
- return s
-}
-
-// SetTag implements SetTag() of opentracing.Span
-func (s *Span) SetTag(key string, value interface{}) opentracing.Span {
- s.observer.OnSetTag(key, value)
- if key == string(ext.SamplingPriority) && !setSamplingPriority(s, value) {
- return s
- }
- s.Lock()
- defer s.Unlock()
- if s.context.IsSampled() {
- s.setTagNoLocking(key, value)
- }
- return s
-}
-
-func (s *Span) setTagNoLocking(key string, value interface{}) {
- s.tags = append(s.tags, Tag{key: key, value: value})
-}
-
-// LogFields implements opentracing.Span API
-func (s *Span) LogFields(fields ...log.Field) {
- s.Lock()
- defer s.Unlock()
- if !s.context.IsSampled() {
- return
- }
- s.logFieldsNoLocking(fields...)
-}
-
-// this function should only be called while holding a Write lock
-func (s *Span) logFieldsNoLocking(fields ...log.Field) {
- lr := opentracing.LogRecord{
- Fields: fields,
- Timestamp: time.Now(),
- }
- s.appendLog(lr)
-}
-
-// LogKV implements opentracing.Span API
-func (s *Span) LogKV(alternatingKeyValues ...interface{}) {
- s.RLock()
- sampled := s.context.IsSampled()
- s.RUnlock()
- if !sampled {
- return
- }
- fields, err := log.InterleavedKVToFields(alternatingKeyValues...)
- if err != nil {
- s.LogFields(log.Error(err), log.String("function", "LogKV"))
- return
- }
- s.LogFields(fields...)
-}
-
-// LogEvent implements opentracing.Span API
-func (s *Span) LogEvent(event string) {
- s.Log(opentracing.LogData{Event: event})
-}
-
-// LogEventWithPayload implements opentracing.Span API
-func (s *Span) LogEventWithPayload(event string, payload interface{}) {
- s.Log(opentracing.LogData{Event: event, Payload: payload})
-}
-
-// Log implements opentracing.Span API
-func (s *Span) Log(ld opentracing.LogData) {
- s.Lock()
- defer s.Unlock()
- if s.context.IsSampled() {
- if ld.Timestamp.IsZero() {
- ld.Timestamp = s.tracer.timeNow()
- }
- s.appendLog(ld.ToLogRecord())
- }
-}
-
-// this function should only be called while holding a Write lock
-func (s *Span) appendLog(lr opentracing.LogRecord) {
- // TODO add logic to limit number of logs per span (issue #46)
- s.logs = append(s.logs, lr)
-}
-
-// SetBaggageItem implements SetBaggageItem() of opentracing.SpanContext
-func (s *Span) SetBaggageItem(key, value string) opentracing.Span {
- s.Lock()
- defer s.Unlock()
- s.tracer.setBaggage(s, key, value)
- return s
-}
-
-// BaggageItem implements BaggageItem() of opentracing.SpanContext
-func (s *Span) BaggageItem(key string) string {
- s.RLock()
- defer s.RUnlock()
- return s.context.baggage[key]
-}
-
-// Finish implements opentracing.Span API
-func (s *Span) Finish() {
- s.FinishWithOptions(opentracing.FinishOptions{})
-}
-
-// FinishWithOptions implements opentracing.Span API
-func (s *Span) FinishWithOptions(options opentracing.FinishOptions) {
- if options.FinishTime.IsZero() {
- options.FinishTime = s.tracer.timeNow()
- }
- s.observer.OnFinish(options)
- s.Lock()
- if s.context.IsSampled() {
- s.duration = options.FinishTime.Sub(s.startTime)
- // Note: bulk logs are not subject to maxLogsPerSpan limit
- if options.LogRecords != nil {
- s.logs = append(s.logs, options.LogRecords...)
- }
- for _, ld := range options.BulkLogData {
- s.logs = append(s.logs, ld.ToLogRecord())
- }
- }
- s.Unlock()
- // call reportSpan even for non-sampled traces, to return span to the pool
- s.tracer.reportSpan(s)
-}
-
-// Context implements opentracing.Span API
-func (s *Span) Context() opentracing.SpanContext {
- s.Lock()
- defer s.Unlock()
- return s.context
-}
-
-// Tracer implements opentracing.Span API
-func (s *Span) Tracer() opentracing.Tracer {
- return s.tracer
-}
-
-func (s *Span) String() string {
- s.RLock()
- defer s.RUnlock()
- return s.context.String()
-}
-
-// OperationName allows retrieving current operation name.
-func (s *Span) OperationName() string {
- s.RLock()
- defer s.RUnlock()
- return s.operationName
-}
-
-func (s *Span) serviceName() string {
- return s.tracer.serviceName
-}
-
-// setSamplingPriority returns true if the flag was updated successfully, false otherwise.
-func setSamplingPriority(s *Span, value interface{}) bool {
- s.Lock()
- defer s.Unlock()
- val, ok := value.(uint16)
- if !ok {
- return false
- }
- if val == 0 {
- s.context.flags = s.context.flags & (^flagSampled)
- return true
- }
- if s.tracer.isDebugAllowed(s.operationName) {
- s.context.flags = s.context.flags | flagDebug | flagSampled
- return true
- }
- return false
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/agent.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/agent.go
deleted file mode 100644
index e48811c50..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/agent.go
+++ /dev/null
@@ -1,411 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package agent
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
- "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/thrift-gen/zipkincore"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var _ = jaeger.GoUnusedProtection__
-var _ = zipkincore.GoUnusedProtection__
-
-type Agent interface {
- // Parameters:
- // - Spans
- EmitZipkinBatch(spans []*zipkincore.Span) (err error)
- // Parameters:
- // - Batch
- EmitBatch(batch *jaeger.Batch) (err error)
-}
-
-type AgentClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewAgentClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *AgentClient {
- return &AgentClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewAgentClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *AgentClient {
- return &AgentClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// Parameters:
-// - Spans
-func (p *AgentClient) EmitZipkinBatch(spans []*zipkincore.Span) (err error) {
- if err = p.sendEmitZipkinBatch(spans); err != nil {
- return
- }
- return
-}
-
-func (p *AgentClient) sendEmitZipkinBatch(spans []*zipkincore.Span) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("emitZipkinBatch", thrift.ONEWAY, p.SeqId); err != nil {
- return
- }
- args := AgentEmitZipkinBatchArgs{
- Spans: spans,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-// Parameters:
-// - Batch
-func (p *AgentClient) EmitBatch(batch *jaeger.Batch) (err error) {
- if err = p.sendEmitBatch(batch); err != nil {
- return
- }
- return
-}
-
-func (p *AgentClient) sendEmitBatch(batch *jaeger.Batch) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("emitBatch", thrift.ONEWAY, p.SeqId); err != nil {
- return
- }
- args := AgentEmitBatchArgs{
- Batch: batch,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-type AgentProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler Agent
-}
-
-func (p *AgentProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *AgentProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *AgentProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewAgentProcessor(handler Agent) *AgentProcessor {
-
- self0 := &AgentProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self0.processorMap["emitZipkinBatch"] = &agentProcessorEmitZipkinBatch{handler: handler}
- self0.processorMap["emitBatch"] = &agentProcessorEmitBatch{handler: handler}
- return self0
-}
-
-func (p *AgentProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x1 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x1.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x1
-
-}
-
-type agentProcessorEmitZipkinBatch struct {
- handler Agent
-}
-
-func (p *agentProcessorEmitZipkinBatch) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := AgentEmitZipkinBatchArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- var err2 error
- if err2 = p.handler.EmitZipkinBatch(args.Spans); err2 != nil {
- return true, err2
- }
- return true, nil
-}
-
-type agentProcessorEmitBatch struct {
- handler Agent
-}
-
-func (p *agentProcessorEmitBatch) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := AgentEmitBatchArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- var err2 error
- if err2 = p.handler.EmitBatch(args.Batch); err2 != nil {
- return true, err2
- }
- return true, nil
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - Spans
-type AgentEmitZipkinBatchArgs struct {
- Spans []*zipkincore.Span `thrift:"spans,1" json:"spans"`
-}
-
-func NewAgentEmitZipkinBatchArgs() *AgentEmitZipkinBatchArgs {
- return &AgentEmitZipkinBatchArgs{}
-}
-
-func (p *AgentEmitZipkinBatchArgs) GetSpans() []*zipkincore.Span {
- return p.Spans
-}
-func (p *AgentEmitZipkinBatchArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *AgentEmitZipkinBatchArgs) readField1(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*zipkincore.Span, 0, size)
- p.Spans = tSlice
- for i := 0; i < size; i++ {
- _elem2 := &zipkincore.Span{}
- if err := _elem2.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem2), err)
- }
- p.Spans = append(p.Spans, _elem2)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *AgentEmitZipkinBatchArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("emitZipkinBatch_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *AgentEmitZipkinBatchArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("spans", thrift.LIST, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:spans: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Spans)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Spans {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:spans: ", p), err)
- }
- return err
-}
-
-func (p *AgentEmitZipkinBatchArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("AgentEmitZipkinBatchArgs(%+v)", *p)
-}
-
-// Attributes:
-// - Batch
-type AgentEmitBatchArgs struct {
- Batch *jaeger.Batch `thrift:"batch,1" json:"batch"`
-}
-
-func NewAgentEmitBatchArgs() *AgentEmitBatchArgs {
- return &AgentEmitBatchArgs{}
-}
-
-var AgentEmitBatchArgs_Batch_DEFAULT *jaeger.Batch
-
-func (p *AgentEmitBatchArgs) GetBatch() *jaeger.Batch {
- if !p.IsSetBatch() {
- return AgentEmitBatchArgs_Batch_DEFAULT
- }
- return p.Batch
-}
-func (p *AgentEmitBatchArgs) IsSetBatch() bool {
- return p.Batch != nil
-}
-
-func (p *AgentEmitBatchArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *AgentEmitBatchArgs) readField1(iprot thrift.TProtocol) error {
- p.Batch = &jaeger.Batch{}
- if err := p.Batch.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Batch), err)
- }
- return nil
-}
-
-func (p *AgentEmitBatchArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("emitBatch_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *AgentEmitBatchArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("batch", thrift.STRUCT, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:batch: ", p), err)
- }
- if err := p.Batch.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Batch), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:batch: ", p), err)
- }
- return err
-}
-
-func (p *AgentEmitBatchArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("AgentEmitBatchArgs(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/constants.go
deleted file mode 100644
index aa9857bb8..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/constants.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package agent
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
- "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/thrift-gen/zipkincore"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var _ = jaeger.GoUnusedProtection__
-var _ = zipkincore.GoUnusedProtection__
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/ttypes.go
deleted file mode 100644
index 9c28f11c1..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/ttypes.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package agent
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
- "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/thrift-gen/zipkincore"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var _ = jaeger.GoUnusedProtection__
-var _ = zipkincore.GoUnusedProtection__
-var GoUnusedProtection__ int
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go
deleted file mode 100644
index 1f79c1255..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go
+++ /dev/null
@@ -1,435 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package baggage
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-type BaggageRestrictionManager interface {
- // getBaggageRestrictions retrieves the baggage restrictions for a specific service.
- // Usually, baggageRestrictions apply to all services however there may be situations
- // where a baggageKey might only be allowed to be set by a specific service.
- //
- // Parameters:
- // - ServiceName
- GetBaggageRestrictions(serviceName string) (r []*BaggageRestriction, err error)
-}
-
-type BaggageRestrictionManagerClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewBaggageRestrictionManagerClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *BaggageRestrictionManagerClient {
- return &BaggageRestrictionManagerClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewBaggageRestrictionManagerClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *BaggageRestrictionManagerClient {
- return &BaggageRestrictionManagerClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// getBaggageRestrictions retrieves the baggage restrictions for a specific service.
-// Usually, baggageRestrictions apply to all services however there may be situations
-// where a baggageKey might only be allowed to be set by a specific service.
-//
-// Parameters:
-// - ServiceName
-func (p *BaggageRestrictionManagerClient) GetBaggageRestrictions(serviceName string) (r []*BaggageRestriction, err error) {
- if err = p.sendGetBaggageRestrictions(serviceName); err != nil {
- return
- }
- return p.recvGetBaggageRestrictions()
-}
-
-func (p *BaggageRestrictionManagerClient) sendGetBaggageRestrictions(serviceName string) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("getBaggageRestrictions", thrift.CALL, p.SeqId); err != nil {
- return
- }
- args := BaggageRestrictionManagerGetBaggageRestrictionsArgs{
- ServiceName: serviceName,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-func (p *BaggageRestrictionManagerClient) recvGetBaggageRestrictions() (value []*BaggageRestriction, err error) {
- iprot := p.InputProtocol
- if iprot == nil {
- iprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.InputProtocol = iprot
- }
- method, mTypeId, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return
- }
- if method != "getBaggageRestrictions" {
- err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getBaggageRestrictions failed: wrong method name")
- return
- }
- if p.SeqId != seqId {
- err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getBaggageRestrictions failed: out of sequence response")
- return
- }
- if mTypeId == thrift.EXCEPTION {
- error0 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
- var error1 error
- error1, err = error0.Read(iprot)
- if err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- err = error1
- return
- }
- if mTypeId != thrift.REPLY {
- err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getBaggageRestrictions failed: invalid message type")
- return
- }
- result := BaggageRestrictionManagerGetBaggageRestrictionsResult{}
- if err = result.Read(iprot); err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- value = result.GetSuccess()
- return
-}
-
-type BaggageRestrictionManagerProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler BaggageRestrictionManager
-}
-
-func (p *BaggageRestrictionManagerProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *BaggageRestrictionManagerProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *BaggageRestrictionManagerProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewBaggageRestrictionManagerProcessor(handler BaggageRestrictionManager) *BaggageRestrictionManagerProcessor {
-
- self2 := &BaggageRestrictionManagerProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self2.processorMap["getBaggageRestrictions"] = &baggageRestrictionManagerProcessorGetBaggageRestrictions{handler: handler}
- return self2
-}
-
-func (p *BaggageRestrictionManagerProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x3 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x3.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x3
-
-}
-
-type baggageRestrictionManagerProcessorGetBaggageRestrictions struct {
- handler BaggageRestrictionManager
-}
-
-func (p *baggageRestrictionManagerProcessorGetBaggageRestrictions) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := BaggageRestrictionManagerGetBaggageRestrictionsArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
- oprot.WriteMessageBegin("getBaggageRestrictions", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- result := BaggageRestrictionManagerGetBaggageRestrictionsResult{}
- var retval []*BaggageRestriction
- var err2 error
- if retval, err2 = p.handler.GetBaggageRestrictions(args.ServiceName); err2 != nil {
- x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getBaggageRestrictions: "+err2.Error())
- oprot.WriteMessageBegin("getBaggageRestrictions", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return true, err2
- } else {
- result.Success = retval
- }
- if err2 = oprot.WriteMessageBegin("getBaggageRestrictions", thrift.REPLY, seqId); err2 != nil {
- err = err2
- }
- if err2 = result.Write(oprot); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.Flush(); err == nil && err2 != nil {
- err = err2
- }
- if err != nil {
- return
- }
- return true, err
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - ServiceName
-type BaggageRestrictionManagerGetBaggageRestrictionsArgs struct {
- ServiceName string `thrift:"serviceName,1" json:"serviceName"`
-}
-
-func NewBaggageRestrictionManagerGetBaggageRestrictionsArgs() *BaggageRestrictionManagerGetBaggageRestrictionsArgs {
- return &BaggageRestrictionManagerGetBaggageRestrictionsArgs{}
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) GetServiceName() string {
- return p.ServiceName
-}
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.ServiceName = v
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getBaggageRestrictions_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("serviceName", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:serviceName: ", p), err)
- }
- if err := oprot.WriteString(string(p.ServiceName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.serviceName (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:serviceName: ", p), err)
- }
- return err
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BaggageRestrictionManagerGetBaggageRestrictionsArgs(%+v)", *p)
-}
-
-// Attributes:
-// - Success
-type BaggageRestrictionManagerGetBaggageRestrictionsResult struct {
- Success []*BaggageRestriction `thrift:"success,0" json:"success,omitempty"`
-}
-
-func NewBaggageRestrictionManagerGetBaggageRestrictionsResult() *BaggageRestrictionManagerGetBaggageRestrictionsResult {
- return &BaggageRestrictionManagerGetBaggageRestrictionsResult{}
-}
-
-var BaggageRestrictionManagerGetBaggageRestrictionsResult_Success_DEFAULT []*BaggageRestriction
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) GetSuccess() []*BaggageRestriction {
- return p.Success
-}
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) IsSetSuccess() bool {
- return p.Success != nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 0:
- if err := p.readField0(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) readField0(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*BaggageRestriction, 0, size)
- p.Success = tSlice
- for i := 0; i < size; i++ {
- _elem4 := &BaggageRestriction{}
- if err := _elem4.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem4), err)
- }
- p.Success = append(p.Success, _elem4)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getBaggageRestrictions_result"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField0(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) writeField0(oprot thrift.TProtocol) (err error) {
- if p.IsSetSuccess() {
- if err := oprot.WriteFieldBegin("success", thrift.LIST, 0); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Success)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Success {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
- }
- }
- return err
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BaggageRestrictionManagerGetBaggageRestrictionsResult(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go
deleted file mode 100644
index ed35ce9ab..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package baggage
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go
deleted file mode 100644
index 7888892f6..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package baggage
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var GoUnusedProtection__ int
-
-// Attributes:
-// - BaggageKey
-// - MaxValueLength
-type BaggageRestriction struct {
- BaggageKey string `thrift:"baggageKey,1,required" json:"baggageKey"`
- MaxValueLength int32 `thrift:"maxValueLength,2,required" json:"maxValueLength"`
-}
-
-func NewBaggageRestriction() *BaggageRestriction {
- return &BaggageRestriction{}
-}
-
-func (p *BaggageRestriction) GetBaggageKey() string {
- return p.BaggageKey
-}
-
-func (p *BaggageRestriction) GetMaxValueLength() int32 {
- return p.MaxValueLength
-}
-func (p *BaggageRestriction) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetBaggageKey bool = false
- var issetMaxValueLength bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetBaggageKey = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetMaxValueLength = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetBaggageKey {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field BaggageKey is not set"))
- }
- if !issetMaxValueLength {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field MaxValueLength is not set"))
- }
- return nil
-}
-
-func (p *BaggageRestriction) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.BaggageKey = v
- }
- return nil
-}
-
-func (p *BaggageRestriction) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.MaxValueLength = v
- }
- return nil
-}
-
-func (p *BaggageRestriction) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("BaggageRestriction"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestriction) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("baggageKey", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:baggageKey: ", p), err)
- }
- if err := oprot.WriteString(string(p.BaggageKey)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.baggageKey (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:baggageKey: ", p), err)
- }
- return err
-}
-
-func (p *BaggageRestriction) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("maxValueLength", thrift.I32, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:maxValueLength: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.MaxValueLength)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.maxValueLength (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:maxValueLength: ", p), err)
- }
- return err
-}
-
-func (p *BaggageRestriction) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BaggageRestriction(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/agent.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/agent.go
deleted file mode 100644
index b32c37dd2..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/agent.go
+++ /dev/null
@@ -1,242 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package jaeger
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-type Agent interface {
- // Parameters:
- // - Batch
- EmitBatch(batch *Batch) (err error)
-}
-
-type AgentClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewAgentClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *AgentClient {
- return &AgentClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewAgentClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *AgentClient {
- return &AgentClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// Parameters:
-// - Batch
-func (p *AgentClient) EmitBatch(batch *Batch) (err error) {
- if err = p.sendEmitBatch(batch); err != nil {
- return
- }
- return
-}
-
-func (p *AgentClient) sendEmitBatch(batch *Batch) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("emitBatch", thrift.ONEWAY, p.SeqId); err != nil {
- return
- }
- args := AgentEmitBatchArgs{
- Batch: batch,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-type AgentProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler Agent
-}
-
-func (p *AgentProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *AgentProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *AgentProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewAgentProcessor(handler Agent) *AgentProcessor {
-
- self6 := &AgentProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self6.processorMap["emitBatch"] = &agentProcessorEmitBatch{handler: handler}
- return self6
-}
-
-func (p *AgentProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x7 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x7.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x7
-
-}
-
-type agentProcessorEmitBatch struct {
- handler Agent
-}
-
-func (p *agentProcessorEmitBatch) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := AgentEmitBatchArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- var err2 error
- if err2 = p.handler.EmitBatch(args.Batch); err2 != nil {
- return true, err2
- }
- return true, nil
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - Batch
-type AgentEmitBatchArgs struct {
- Batch *Batch `thrift:"batch,1" json:"batch"`
-}
-
-func NewAgentEmitBatchArgs() *AgentEmitBatchArgs {
- return &AgentEmitBatchArgs{}
-}
-
-var AgentEmitBatchArgs_Batch_DEFAULT *Batch
-
-func (p *AgentEmitBatchArgs) GetBatch() *Batch {
- if !p.IsSetBatch() {
- return AgentEmitBatchArgs_Batch_DEFAULT
- }
- return p.Batch
-}
-func (p *AgentEmitBatchArgs) IsSetBatch() bool {
- return p.Batch != nil
-}
-
-func (p *AgentEmitBatchArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *AgentEmitBatchArgs) readField1(iprot thrift.TProtocol) error {
- p.Batch = &Batch{}
- if err := p.Batch.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Batch), err)
- }
- return nil
-}
-
-func (p *AgentEmitBatchArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("emitBatch_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *AgentEmitBatchArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("batch", thrift.STRUCT, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:batch: ", p), err)
- }
- if err := p.Batch.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Batch), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:batch: ", p), err)
- }
- return err
-}
-
-func (p *AgentEmitBatchArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("AgentEmitBatchArgs(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/constants.go
deleted file mode 100644
index 621b8b1c2..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/constants.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package jaeger
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/ttypes.go
deleted file mode 100644
index d23ed2fc2..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/ttypes.go
+++ /dev/null
@@ -1,1838 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package jaeger
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var GoUnusedProtection__ int
-
-type TagType int64
-
-const (
- TagType_STRING TagType = 0
- TagType_DOUBLE TagType = 1
- TagType_BOOL TagType = 2
- TagType_LONG TagType = 3
- TagType_BINARY TagType = 4
-)
-
-func (p TagType) String() string {
- switch p {
- case TagType_STRING:
- return "STRING"
- case TagType_DOUBLE:
- return "DOUBLE"
- case TagType_BOOL:
- return "BOOL"
- case TagType_LONG:
- return "LONG"
- case TagType_BINARY:
- return "BINARY"
- }
- return "<UNSET>"
-}
-
-func TagTypeFromString(s string) (TagType, error) {
- switch s {
- case "STRING":
- return TagType_STRING, nil
- case "DOUBLE":
- return TagType_DOUBLE, nil
- case "BOOL":
- return TagType_BOOL, nil
- case "LONG":
- return TagType_LONG, nil
- case "BINARY":
- return TagType_BINARY, nil
- }
- return TagType(0), fmt.Errorf("not a valid TagType string")
-}
-
-func TagTypePtr(v TagType) *TagType { return &v }
-
-func (p TagType) MarshalText() ([]byte, error) {
- return []byte(p.String()), nil
-}
-
-func (p *TagType) UnmarshalText(text []byte) error {
- q, err := TagTypeFromString(string(text))
- if err != nil {
- return err
- }
- *p = q
- return nil
-}
-
-type SpanRefType int64
-
-const (
- SpanRefType_CHILD_OF SpanRefType = 0
- SpanRefType_FOLLOWS_FROM SpanRefType = 1
-)
-
-func (p SpanRefType) String() string {
- switch p {
- case SpanRefType_CHILD_OF:
- return "CHILD_OF"
- case SpanRefType_FOLLOWS_FROM:
- return "FOLLOWS_FROM"
- }
- return "<UNSET>"
-}
-
-func SpanRefTypeFromString(s string) (SpanRefType, error) {
- switch s {
- case "CHILD_OF":
- return SpanRefType_CHILD_OF, nil
- case "FOLLOWS_FROM":
- return SpanRefType_FOLLOWS_FROM, nil
- }
- return SpanRefType(0), fmt.Errorf("not a valid SpanRefType string")
-}
-
-func SpanRefTypePtr(v SpanRefType) *SpanRefType { return &v }
-
-func (p SpanRefType) MarshalText() ([]byte, error) {
- return []byte(p.String()), nil
-}
-
-func (p *SpanRefType) UnmarshalText(text []byte) error {
- q, err := SpanRefTypeFromString(string(text))
- if err != nil {
- return err
- }
- *p = q
- return nil
-}
-
-// Attributes:
-// - Key
-// - VType
-// - VStr
-// - VDouble
-// - VBool
-// - VLong
-// - VBinary
-type Tag struct {
- Key string `thrift:"key,1,required" json:"key"`
- VType TagType `thrift:"vType,2,required" json:"vType"`
- VStr *string `thrift:"vStr,3" json:"vStr,omitempty"`
- VDouble *float64 `thrift:"vDouble,4" json:"vDouble,omitempty"`
- VBool *bool `thrift:"vBool,5" json:"vBool,omitempty"`
- VLong *int64 `thrift:"vLong,6" json:"vLong,omitempty"`
- VBinary []byte `thrift:"vBinary,7" json:"vBinary,omitempty"`
-}
-
-func NewTag() *Tag {
- return &Tag{}
-}
-
-func (p *Tag) GetKey() string {
- return p.Key
-}
-
-func (p *Tag) GetVType() TagType {
- return p.VType
-}
-
-var Tag_VStr_DEFAULT string
-
-func (p *Tag) GetVStr() string {
- if !p.IsSetVStr() {
- return Tag_VStr_DEFAULT
- }
- return *p.VStr
-}
-
-var Tag_VDouble_DEFAULT float64
-
-func (p *Tag) GetVDouble() float64 {
- if !p.IsSetVDouble() {
- return Tag_VDouble_DEFAULT
- }
- return *p.VDouble
-}
-
-var Tag_VBool_DEFAULT bool
-
-func (p *Tag) GetVBool() bool {
- if !p.IsSetVBool() {
- return Tag_VBool_DEFAULT
- }
- return *p.VBool
-}
-
-var Tag_VLong_DEFAULT int64
-
-func (p *Tag) GetVLong() int64 {
- if !p.IsSetVLong() {
- return Tag_VLong_DEFAULT
- }
- return *p.VLong
-}
-
-var Tag_VBinary_DEFAULT []byte
-
-func (p *Tag) GetVBinary() []byte {
- return p.VBinary
-}
-func (p *Tag) IsSetVStr() bool {
- return p.VStr != nil
-}
-
-func (p *Tag) IsSetVDouble() bool {
- return p.VDouble != nil
-}
-
-func (p *Tag) IsSetVBool() bool {
- return p.VBool != nil
-}
-
-func (p *Tag) IsSetVLong() bool {
- return p.VLong != nil
-}
-
-func (p *Tag) IsSetVBinary() bool {
- return p.VBinary != nil
-}
-
-func (p *Tag) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetKey bool = false
- var issetVType bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetKey = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetVType = true
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- case 5:
- if err := p.readField5(iprot); err != nil {
- return err
- }
- case 6:
- if err := p.readField6(iprot); err != nil {
- return err
- }
- case 7:
- if err := p.readField7(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetKey {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Key is not set"))
- }
- if !issetVType {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field VType is not set"))
- }
- return nil
-}
-
-func (p *Tag) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Key = v
- }
- return nil
-}
-
-func (p *Tag) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- temp := TagType(v)
- p.VType = temp
- }
- return nil
-}
-
-func (p *Tag) readField3(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 3: ", err)
- } else {
- p.VStr = &v
- }
- return nil
-}
-
-func (p *Tag) readField4(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 4: ", err)
- } else {
- p.VDouble = &v
- }
- return nil
-}
-
-func (p *Tag) readField5(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadBool(); err != nil {
- return thrift.PrependError("error reading field 5: ", err)
- } else {
- p.VBool = &v
- }
- return nil
-}
-
-func (p *Tag) readField6(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 6: ", err)
- } else {
- p.VLong = &v
- }
- return nil
-}
-
-func (p *Tag) readField7(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadBinary(); err != nil {
- return thrift.PrependError("error reading field 7: ", err)
- } else {
- p.VBinary = v
- }
- return nil
-}
-
-func (p *Tag) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Tag"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := p.writeField5(oprot); err != nil {
- return err
- }
- if err := p.writeField6(oprot); err != nil {
- return err
- }
- if err := p.writeField7(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Tag) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
- }
- if err := oprot.WriteString(string(p.Key)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.key (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
- }
- return err
-}
-
-func (p *Tag) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("vType", thrift.I32, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:vType: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.VType)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.vType (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:vType: ", p), err)
- }
- return err
-}
-
-func (p *Tag) writeField3(oprot thrift.TProtocol) (err error) {
- if p.IsSetVStr() {
- if err := oprot.WriteFieldBegin("vStr", thrift.STRING, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:vStr: ", p), err)
- }
- if err := oprot.WriteString(string(*p.VStr)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.vStr (3) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:vStr: ", p), err)
- }
- }
- return err
-}
-
-func (p *Tag) writeField4(oprot thrift.TProtocol) (err error) {
- if p.IsSetVDouble() {
- if err := oprot.WriteFieldBegin("vDouble", thrift.DOUBLE, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:vDouble: ", p), err)
- }
- if err := oprot.WriteDouble(float64(*p.VDouble)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.vDouble (4) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:vDouble: ", p), err)
- }
- }
- return err
-}
-
-func (p *Tag) writeField5(oprot thrift.TProtocol) (err error) {
- if p.IsSetVBool() {
- if err := oprot.WriteFieldBegin("vBool", thrift.BOOL, 5); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:vBool: ", p), err)
- }
- if err := oprot.WriteBool(bool(*p.VBool)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.vBool (5) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 5:vBool: ", p), err)
- }
- }
- return err
-}
-
-func (p *Tag) writeField6(oprot thrift.TProtocol) (err error) {
- if p.IsSetVLong() {
- if err := oprot.WriteFieldBegin("vLong", thrift.I64, 6); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:vLong: ", p), err)
- }
- if err := oprot.WriteI64(int64(*p.VLong)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.vLong (6) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 6:vLong: ", p), err)
- }
- }
- return err
-}
-
-func (p *Tag) writeField7(oprot thrift.TProtocol) (err error) {
- if p.IsSetVBinary() {
- if err := oprot.WriteFieldBegin("vBinary", thrift.STRING, 7); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:vBinary: ", p), err)
- }
- if err := oprot.WriteBinary(p.VBinary); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.vBinary (7) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 7:vBinary: ", p), err)
- }
- }
- return err
-}
-
-func (p *Tag) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Tag(%+v)", *p)
-}
-
-// Attributes:
-// - Timestamp
-// - Fields
-type Log struct {
- Timestamp int64 `thrift:"timestamp,1,required" json:"timestamp"`
- Fields []*Tag `thrift:"fields,2,required" json:"fields"`
-}
-
-func NewLog() *Log {
- return &Log{}
-}
-
-func (p *Log) GetTimestamp() int64 {
- return p.Timestamp
-}
-
-func (p *Log) GetFields() []*Tag {
- return p.Fields
-}
-func (p *Log) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetTimestamp bool = false
- var issetFields bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetTimestamp = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetFields = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetTimestamp {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Timestamp is not set"))
- }
- if !issetFields {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Fields is not set"))
- }
- return nil
-}
-
-func (p *Log) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Timestamp = v
- }
- return nil
-}
-
-func (p *Log) readField2(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Tag, 0, size)
- p.Fields = tSlice
- for i := 0; i < size; i++ {
- _elem0 := &Tag{}
- if err := _elem0.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem0), err)
- }
- p.Fields = append(p.Fields, _elem0)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Log) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Log"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Log) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("timestamp", thrift.I64, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:timestamp: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.Timestamp)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.timestamp (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:timestamp: ", p), err)
- }
- return err
-}
-
-func (p *Log) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("fields", thrift.LIST, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:fields: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Fields)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Fields {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:fields: ", p), err)
- }
- return err
-}
-
-func (p *Log) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Log(%+v)", *p)
-}
-
-// Attributes:
-// - RefType
-// - TraceIdLow
-// - TraceIdHigh
-// - SpanId
-type SpanRef struct {
- RefType SpanRefType `thrift:"refType,1,required" json:"refType"`
- TraceIdLow int64 `thrift:"traceIdLow,2,required" json:"traceIdLow"`
- TraceIdHigh int64 `thrift:"traceIdHigh,3,required" json:"traceIdHigh"`
- SpanId int64 `thrift:"spanId,4,required" json:"spanId"`
-}
-
-func NewSpanRef() *SpanRef {
- return &SpanRef{}
-}
-
-func (p *SpanRef) GetRefType() SpanRefType {
- return p.RefType
-}
-
-func (p *SpanRef) GetTraceIdLow() int64 {
- return p.TraceIdLow
-}
-
-func (p *SpanRef) GetTraceIdHigh() int64 {
- return p.TraceIdHigh
-}
-
-func (p *SpanRef) GetSpanId() int64 {
- return p.SpanId
-}
-func (p *SpanRef) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetRefType bool = false
- var issetTraceIdLow bool = false
- var issetTraceIdHigh bool = false
- var issetSpanId bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetRefType = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetTraceIdLow = true
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- issetTraceIdHigh = true
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- issetSpanId = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetRefType {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field RefType is not set"))
- }
- if !issetTraceIdLow {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TraceIdLow is not set"))
- }
- if !issetTraceIdHigh {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TraceIdHigh is not set"))
- }
- if !issetSpanId {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field SpanId is not set"))
- }
- return nil
-}
-
-func (p *SpanRef) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- temp := SpanRefType(v)
- p.RefType = temp
- }
- return nil
-}
-
-func (p *SpanRef) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.TraceIdLow = v
- }
- return nil
-}
-
-func (p *SpanRef) readField3(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 3: ", err)
- } else {
- p.TraceIdHigh = v
- }
- return nil
-}
-
-func (p *SpanRef) readField4(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 4: ", err)
- } else {
- p.SpanId = v
- }
- return nil
-}
-
-func (p *SpanRef) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("SpanRef"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SpanRef) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("refType", thrift.I32, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:refType: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.RefType)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.refType (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:refType: ", p), err)
- }
- return err
-}
-
-func (p *SpanRef) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("traceIdLow", thrift.I64, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:traceIdLow: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.TraceIdLow)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.traceIdLow (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:traceIdLow: ", p), err)
- }
- return err
-}
-
-func (p *SpanRef) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("traceIdHigh", thrift.I64, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:traceIdHigh: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.TraceIdHigh)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.traceIdHigh (3) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:traceIdHigh: ", p), err)
- }
- return err
-}
-
-func (p *SpanRef) writeField4(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("spanId", thrift.I64, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:spanId: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.SpanId)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.spanId (4) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:spanId: ", p), err)
- }
- return err
-}
-
-func (p *SpanRef) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SpanRef(%+v)", *p)
-}
-
-// Attributes:
-// - TraceIdLow
-// - TraceIdHigh
-// - SpanId
-// - ParentSpanId
-// - OperationName
-// - References
-// - Flags
-// - StartTime
-// - Duration
-// - Tags
-// - Logs
-type Span struct {
- TraceIdLow int64 `thrift:"traceIdLow,1,required" json:"traceIdLow"`
- TraceIdHigh int64 `thrift:"traceIdHigh,2,required" json:"traceIdHigh"`
- SpanId int64 `thrift:"spanId,3,required" json:"spanId"`
- ParentSpanId int64 `thrift:"parentSpanId,4,required" json:"parentSpanId"`
- OperationName string `thrift:"operationName,5,required" json:"operationName"`
- References []*SpanRef `thrift:"references,6" json:"references,omitempty"`
- Flags int32 `thrift:"flags,7,required" json:"flags"`
- StartTime int64 `thrift:"startTime,8,required" json:"startTime"`
- Duration int64 `thrift:"duration,9,required" json:"duration"`
- Tags []*Tag `thrift:"tags,10" json:"tags,omitempty"`
- Logs []*Log `thrift:"logs,11" json:"logs,omitempty"`
-}
-
-func NewSpan() *Span {
- return &Span{}
-}
-
-func (p *Span) GetTraceIdLow() int64 {
- return p.TraceIdLow
-}
-
-func (p *Span) GetTraceIdHigh() int64 {
- return p.TraceIdHigh
-}
-
-func (p *Span) GetSpanId() int64 {
- return p.SpanId
-}
-
-func (p *Span) GetParentSpanId() int64 {
- return p.ParentSpanId
-}
-
-func (p *Span) GetOperationName() string {
- return p.OperationName
-}
-
-var Span_References_DEFAULT []*SpanRef
-
-func (p *Span) GetReferences() []*SpanRef {
- return p.References
-}
-
-func (p *Span) GetFlags() int32 {
- return p.Flags
-}
-
-func (p *Span) GetStartTime() int64 {
- return p.StartTime
-}
-
-func (p *Span) GetDuration() int64 {
- return p.Duration
-}
-
-var Span_Tags_DEFAULT []*Tag
-
-func (p *Span) GetTags() []*Tag {
- return p.Tags
-}
-
-var Span_Logs_DEFAULT []*Log
-
-func (p *Span) GetLogs() []*Log {
- return p.Logs
-}
-func (p *Span) IsSetReferences() bool {
- return p.References != nil
-}
-
-func (p *Span) IsSetTags() bool {
- return p.Tags != nil
-}
-
-func (p *Span) IsSetLogs() bool {
- return p.Logs != nil
-}
-
-func (p *Span) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetTraceIdLow bool = false
- var issetTraceIdHigh bool = false
- var issetSpanId bool = false
- var issetParentSpanId bool = false
- var issetOperationName bool = false
- var issetFlags bool = false
- var issetStartTime bool = false
- var issetDuration bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetTraceIdLow = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetTraceIdHigh = true
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- issetSpanId = true
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- issetParentSpanId = true
- case 5:
- if err := p.readField5(iprot); err != nil {
- return err
- }
- issetOperationName = true
- case 6:
- if err := p.readField6(iprot); err != nil {
- return err
- }
- case 7:
- if err := p.readField7(iprot); err != nil {
- return err
- }
- issetFlags = true
- case 8:
- if err := p.readField8(iprot); err != nil {
- return err
- }
- issetStartTime = true
- case 9:
- if err := p.readField9(iprot); err != nil {
- return err
- }
- issetDuration = true
- case 10:
- if err := p.readField10(iprot); err != nil {
- return err
- }
- case 11:
- if err := p.readField11(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetTraceIdLow {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TraceIdLow is not set"))
- }
- if !issetTraceIdHigh {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TraceIdHigh is not set"))
- }
- if !issetSpanId {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field SpanId is not set"))
- }
- if !issetParentSpanId {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field ParentSpanId is not set"))
- }
- if !issetOperationName {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field OperationName is not set"))
- }
- if !issetFlags {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Flags is not set"))
- }
- if !issetStartTime {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field StartTime is not set"))
- }
- if !issetDuration {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Duration is not set"))
- }
- return nil
-}
-
-func (p *Span) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.TraceIdLow = v
- }
- return nil
-}
-
-func (p *Span) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.TraceIdHigh = v
- }
- return nil
-}
-
-func (p *Span) readField3(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 3: ", err)
- } else {
- p.SpanId = v
- }
- return nil
-}
-
-func (p *Span) readField4(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 4: ", err)
- } else {
- p.ParentSpanId = v
- }
- return nil
-}
-
-func (p *Span) readField5(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 5: ", err)
- } else {
- p.OperationName = v
- }
- return nil
-}
-
-func (p *Span) readField6(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*SpanRef, 0, size)
- p.References = tSlice
- for i := 0; i < size; i++ {
- _elem1 := &SpanRef{}
- if err := _elem1.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem1), err)
- }
- p.References = append(p.References, _elem1)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Span) readField7(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 7: ", err)
- } else {
- p.Flags = v
- }
- return nil
-}
-
-func (p *Span) readField8(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 8: ", err)
- } else {
- p.StartTime = v
- }
- return nil
-}
-
-func (p *Span) readField9(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 9: ", err)
- } else {
- p.Duration = v
- }
- return nil
-}
-
-func (p *Span) readField10(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Tag, 0, size)
- p.Tags = tSlice
- for i := 0; i < size; i++ {
- _elem2 := &Tag{}
- if err := _elem2.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem2), err)
- }
- p.Tags = append(p.Tags, _elem2)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Span) readField11(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Log, 0, size)
- p.Logs = tSlice
- for i := 0; i < size; i++ {
- _elem3 := &Log{}
- if err := _elem3.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem3), err)
- }
- p.Logs = append(p.Logs, _elem3)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Span) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Span"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := p.writeField5(oprot); err != nil {
- return err
- }
- if err := p.writeField6(oprot); err != nil {
- return err
- }
- if err := p.writeField7(oprot); err != nil {
- return err
- }
- if err := p.writeField8(oprot); err != nil {
- return err
- }
- if err := p.writeField9(oprot); err != nil {
- return err
- }
- if err := p.writeField10(oprot); err != nil {
- return err
- }
- if err := p.writeField11(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Span) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("traceIdLow", thrift.I64, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:traceIdLow: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.TraceIdLow)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.traceIdLow (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:traceIdLow: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("traceIdHigh", thrift.I64, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:traceIdHigh: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.TraceIdHigh)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.traceIdHigh (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:traceIdHigh: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("spanId", thrift.I64, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:spanId: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.SpanId)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.spanId (3) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:spanId: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField4(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("parentSpanId", thrift.I64, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:parentSpanId: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.ParentSpanId)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.parentSpanId (4) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:parentSpanId: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField5(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("operationName", thrift.STRING, 5); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:operationName: ", p), err)
- }
- if err := oprot.WriteString(string(p.OperationName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.operationName (5) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 5:operationName: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField6(oprot thrift.TProtocol) (err error) {
- if p.IsSetReferences() {
- if err := oprot.WriteFieldBegin("references", thrift.LIST, 6); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:references: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.References)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.References {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 6:references: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) writeField7(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("flags", thrift.I32, 7); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:flags: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.Flags)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.flags (7) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 7:flags: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField8(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("startTime", thrift.I64, 8); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:startTime: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.StartTime)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.startTime (8) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 8:startTime: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField9(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("duration", thrift.I64, 9); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:duration: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.Duration)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.duration (9) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 9:duration: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField10(oprot thrift.TProtocol) (err error) {
- if p.IsSetTags() {
- if err := oprot.WriteFieldBegin("tags", thrift.LIST, 10); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:tags: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Tags)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Tags {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 10:tags: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) writeField11(oprot thrift.TProtocol) (err error) {
- if p.IsSetLogs() {
- if err := oprot.WriteFieldBegin("logs", thrift.LIST, 11); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:logs: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Logs)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Logs {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 11:logs: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Span(%+v)", *p)
-}
-
-// Attributes:
-// - ServiceName
-// - Tags
-type Process struct {
- ServiceName string `thrift:"serviceName,1,required" json:"serviceName"`
- Tags []*Tag `thrift:"tags,2" json:"tags,omitempty"`
-}
-
-func NewProcess() *Process {
- return &Process{}
-}
-
-func (p *Process) GetServiceName() string {
- return p.ServiceName
-}
-
-var Process_Tags_DEFAULT []*Tag
-
-func (p *Process) GetTags() []*Tag {
- return p.Tags
-}
-func (p *Process) IsSetTags() bool {
- return p.Tags != nil
-}
-
-func (p *Process) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetServiceName bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetServiceName = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetServiceName {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field ServiceName is not set"))
- }
- return nil
-}
-
-func (p *Process) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.ServiceName = v
- }
- return nil
-}
-
-func (p *Process) readField2(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Tag, 0, size)
- p.Tags = tSlice
- for i := 0; i < size; i++ {
- _elem4 := &Tag{}
- if err := _elem4.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem4), err)
- }
- p.Tags = append(p.Tags, _elem4)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Process) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Process"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Process) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("serviceName", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:serviceName: ", p), err)
- }
- if err := oprot.WriteString(string(p.ServiceName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.serviceName (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:serviceName: ", p), err)
- }
- return err
-}
-
-func (p *Process) writeField2(oprot thrift.TProtocol) (err error) {
- if p.IsSetTags() {
- if err := oprot.WriteFieldBegin("tags", thrift.LIST, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:tags: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Tags)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Tags {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:tags: ", p), err)
- }
- }
- return err
-}
-
-func (p *Process) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Process(%+v)", *p)
-}
-
-// Attributes:
-// - Process
-// - Spans
-type Batch struct {
- Process *Process `thrift:"process,1,required" json:"process"`
- Spans []*Span `thrift:"spans,2,required" json:"spans"`
-}
-
-func NewBatch() *Batch {
- return &Batch{}
-}
-
-var Batch_Process_DEFAULT *Process
-
-func (p *Batch) GetProcess() *Process {
- if !p.IsSetProcess() {
- return Batch_Process_DEFAULT
- }
- return p.Process
-}
-
-func (p *Batch) GetSpans() []*Span {
- return p.Spans
-}
-func (p *Batch) IsSetProcess() bool {
- return p.Process != nil
-}
-
-func (p *Batch) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetProcess bool = false
- var issetSpans bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetProcess = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetSpans = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetProcess {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Process is not set"))
- }
- if !issetSpans {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Spans is not set"))
- }
- return nil
-}
-
-func (p *Batch) readField1(iprot thrift.TProtocol) error {
- p.Process = &Process{}
- if err := p.Process.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Process), err)
- }
- return nil
-}
-
-func (p *Batch) readField2(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Span, 0, size)
- p.Spans = tSlice
- for i := 0; i < size; i++ {
- _elem5 := &Span{}
- if err := _elem5.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem5), err)
- }
- p.Spans = append(p.Spans, _elem5)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Batch) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Batch"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Batch) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("process", thrift.STRUCT, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:process: ", p), err)
- }
- if err := p.Process.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Process), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:process: ", p), err)
- }
- return err
-}
-
-func (p *Batch) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("spans", thrift.LIST, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:spans: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Spans)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Spans {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:spans: ", p), err)
- }
- return err
-}
-
-func (p *Batch) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Batch(%+v)", *p)
-}
-
-// Attributes:
-// - Ok
-type BatchSubmitResponse struct {
- Ok bool `thrift:"ok,1,required" json:"ok"`
-}
-
-func NewBatchSubmitResponse() *BatchSubmitResponse {
- return &BatchSubmitResponse{}
-}
-
-func (p *BatchSubmitResponse) GetOk() bool {
- return p.Ok
-}
-func (p *BatchSubmitResponse) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetOk bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetOk = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetOk {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Ok is not set"))
- }
- return nil
-}
-
-func (p *BatchSubmitResponse) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadBool(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Ok = v
- }
- return nil
-}
-
-func (p *BatchSubmitResponse) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("BatchSubmitResponse"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BatchSubmitResponse) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("ok", thrift.BOOL, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ok: ", p), err)
- }
- if err := oprot.WriteBool(bool(p.Ok)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.ok (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ok: ", p), err)
- }
- return err
-}
-
-func (p *BatchSubmitResponse) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BatchSubmitResponse(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go
deleted file mode 100644
index 0f6e3a884..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package sampling
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go
deleted file mode 100644
index 33179cfeb..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go
+++ /dev/null
@@ -1,410 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package sampling
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-type SamplingManager interface {
- // Parameters:
- // - ServiceName
- GetSamplingStrategy(serviceName string) (r *SamplingStrategyResponse, err error)
-}
-
-type SamplingManagerClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewSamplingManagerClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *SamplingManagerClient {
- return &SamplingManagerClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewSamplingManagerClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *SamplingManagerClient {
- return &SamplingManagerClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// Parameters:
-// - ServiceName
-func (p *SamplingManagerClient) GetSamplingStrategy(serviceName string) (r *SamplingStrategyResponse, err error) {
- if err = p.sendGetSamplingStrategy(serviceName); err != nil {
- return
- }
- return p.recvGetSamplingStrategy()
-}
-
-func (p *SamplingManagerClient) sendGetSamplingStrategy(serviceName string) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("getSamplingStrategy", thrift.CALL, p.SeqId); err != nil {
- return
- }
- args := SamplingManagerGetSamplingStrategyArgs{
- ServiceName: serviceName,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-func (p *SamplingManagerClient) recvGetSamplingStrategy() (value *SamplingStrategyResponse, err error) {
- iprot := p.InputProtocol
- if iprot == nil {
- iprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.InputProtocol = iprot
- }
- method, mTypeId, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return
- }
- if method != "getSamplingStrategy" {
- err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getSamplingStrategy failed: wrong method name")
- return
- }
- if p.SeqId != seqId {
- err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getSamplingStrategy failed: out of sequence response")
- return
- }
- if mTypeId == thrift.EXCEPTION {
- error1 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
- var error2 error
- error2, err = error1.Read(iprot)
- if err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- err = error2
- return
- }
- if mTypeId != thrift.REPLY {
- err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getSamplingStrategy failed: invalid message type")
- return
- }
- result := SamplingManagerGetSamplingStrategyResult{}
- if err = result.Read(iprot); err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- value = result.GetSuccess()
- return
-}
-
-type SamplingManagerProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler SamplingManager
-}
-
-func (p *SamplingManagerProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *SamplingManagerProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *SamplingManagerProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewSamplingManagerProcessor(handler SamplingManager) *SamplingManagerProcessor {
-
- self3 := &SamplingManagerProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self3.processorMap["getSamplingStrategy"] = &samplingManagerProcessorGetSamplingStrategy{handler: handler}
- return self3
-}
-
-func (p *SamplingManagerProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x4 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x4.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x4
-
-}
-
-type samplingManagerProcessorGetSamplingStrategy struct {
- handler SamplingManager
-}
-
-func (p *samplingManagerProcessorGetSamplingStrategy) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := SamplingManagerGetSamplingStrategyArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
- oprot.WriteMessageBegin("getSamplingStrategy", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- result := SamplingManagerGetSamplingStrategyResult{}
- var retval *SamplingStrategyResponse
- var err2 error
- if retval, err2 = p.handler.GetSamplingStrategy(args.ServiceName); err2 != nil {
- x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getSamplingStrategy: "+err2.Error())
- oprot.WriteMessageBegin("getSamplingStrategy", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return true, err2
- } else {
- result.Success = retval
- }
- if err2 = oprot.WriteMessageBegin("getSamplingStrategy", thrift.REPLY, seqId); err2 != nil {
- err = err2
- }
- if err2 = result.Write(oprot); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.Flush(); err == nil && err2 != nil {
- err = err2
- }
- if err != nil {
- return
- }
- return true, err
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - ServiceName
-type SamplingManagerGetSamplingStrategyArgs struct {
- ServiceName string `thrift:"serviceName,1" json:"serviceName"`
-}
-
-func NewSamplingManagerGetSamplingStrategyArgs() *SamplingManagerGetSamplingStrategyArgs {
- return &SamplingManagerGetSamplingStrategyArgs{}
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) GetServiceName() string {
- return p.ServiceName
-}
-func (p *SamplingManagerGetSamplingStrategyArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.ServiceName = v
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getSamplingStrategy_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("serviceName", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:serviceName: ", p), err)
- }
- if err := oprot.WriteString(string(p.ServiceName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.serviceName (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:serviceName: ", p), err)
- }
- return err
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SamplingManagerGetSamplingStrategyArgs(%+v)", *p)
-}
-
-// Attributes:
-// - Success
-type SamplingManagerGetSamplingStrategyResult struct {
- Success *SamplingStrategyResponse `thrift:"success,0" json:"success,omitempty"`
-}
-
-func NewSamplingManagerGetSamplingStrategyResult() *SamplingManagerGetSamplingStrategyResult {
- return &SamplingManagerGetSamplingStrategyResult{}
-}
-
-var SamplingManagerGetSamplingStrategyResult_Success_DEFAULT *SamplingStrategyResponse
-
-func (p *SamplingManagerGetSamplingStrategyResult) GetSuccess() *SamplingStrategyResponse {
- if !p.IsSetSuccess() {
- return SamplingManagerGetSamplingStrategyResult_Success_DEFAULT
- }
- return p.Success
-}
-func (p *SamplingManagerGetSamplingStrategyResult) IsSetSuccess() bool {
- return p.Success != nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 0:
- if err := p.readField0(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) readField0(iprot thrift.TProtocol) error {
- p.Success = &SamplingStrategyResponse{}
- if err := p.Success.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getSamplingStrategy_result"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField0(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) writeField0(oprot thrift.TProtocol) (err error) {
- if p.IsSetSuccess() {
- if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
- }
- if err := p.Success.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SamplingManagerGetSamplingStrategyResult(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go
deleted file mode 100644
index 9abaf0542..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go
+++ /dev/null
@@ -1,873 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package sampling
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var GoUnusedProtection__ int
-
-type SamplingStrategyType int64
-
-const (
- SamplingStrategyType_PROBABILISTIC SamplingStrategyType = 0
- SamplingStrategyType_RATE_LIMITING SamplingStrategyType = 1
-)
-
-func (p SamplingStrategyType) String() string {
- switch p {
- case SamplingStrategyType_PROBABILISTIC:
- return "PROBABILISTIC"
- case SamplingStrategyType_RATE_LIMITING:
- return "RATE_LIMITING"
- }
- return "<UNSET>"
-}
-
-func SamplingStrategyTypeFromString(s string) (SamplingStrategyType, error) {
- switch s {
- case "PROBABILISTIC":
- return SamplingStrategyType_PROBABILISTIC, nil
- case "RATE_LIMITING":
- return SamplingStrategyType_RATE_LIMITING, nil
- }
- return SamplingStrategyType(0), fmt.Errorf("not a valid SamplingStrategyType string")
-}
-
-func SamplingStrategyTypePtr(v SamplingStrategyType) *SamplingStrategyType { return &v }
-
-func (p SamplingStrategyType) MarshalText() ([]byte, error) {
- return []byte(p.String()), nil
-}
-
-func (p *SamplingStrategyType) UnmarshalText(text []byte) error {
- q, err := SamplingStrategyTypeFromString(string(text))
- if err != nil {
- return err
- }
- *p = q
- return nil
-}
-
-// Attributes:
-// - SamplingRate
-type ProbabilisticSamplingStrategy struct {
- SamplingRate float64 `thrift:"samplingRate,1,required" json:"samplingRate"`
-}
-
-func NewProbabilisticSamplingStrategy() *ProbabilisticSamplingStrategy {
- return &ProbabilisticSamplingStrategy{}
-}
-
-func (p *ProbabilisticSamplingStrategy) GetSamplingRate() float64 {
- return p.SamplingRate
-}
-func (p *ProbabilisticSamplingStrategy) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetSamplingRate bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetSamplingRate = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetSamplingRate {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field SamplingRate is not set"))
- }
- return nil
-}
-
-func (p *ProbabilisticSamplingStrategy) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.SamplingRate = v
- }
- return nil
-}
-
-func (p *ProbabilisticSamplingStrategy) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("ProbabilisticSamplingStrategy"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *ProbabilisticSamplingStrategy) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("samplingRate", thrift.DOUBLE, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:samplingRate: ", p), err)
- }
- if err := oprot.WriteDouble(float64(p.SamplingRate)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.samplingRate (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:samplingRate: ", p), err)
- }
- return err
-}
-
-func (p *ProbabilisticSamplingStrategy) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("ProbabilisticSamplingStrategy(%+v)", *p)
-}
-
-// Attributes:
-// - MaxTracesPerSecond
-type RateLimitingSamplingStrategy struct {
- MaxTracesPerSecond int16 `thrift:"maxTracesPerSecond,1,required" json:"maxTracesPerSecond"`
-}
-
-func NewRateLimitingSamplingStrategy() *RateLimitingSamplingStrategy {
- return &RateLimitingSamplingStrategy{}
-}
-
-func (p *RateLimitingSamplingStrategy) GetMaxTracesPerSecond() int16 {
- return p.MaxTracesPerSecond
-}
-func (p *RateLimitingSamplingStrategy) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetMaxTracesPerSecond bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetMaxTracesPerSecond = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetMaxTracesPerSecond {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field MaxTracesPerSecond is not set"))
- }
- return nil
-}
-
-func (p *RateLimitingSamplingStrategy) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI16(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.MaxTracesPerSecond = v
- }
- return nil
-}
-
-func (p *RateLimitingSamplingStrategy) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("RateLimitingSamplingStrategy"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *RateLimitingSamplingStrategy) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("maxTracesPerSecond", thrift.I16, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:maxTracesPerSecond: ", p), err)
- }
- if err := oprot.WriteI16(int16(p.MaxTracesPerSecond)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.maxTracesPerSecond (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:maxTracesPerSecond: ", p), err)
- }
- return err
-}
-
-func (p *RateLimitingSamplingStrategy) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("RateLimitingSamplingStrategy(%+v)", *p)
-}
-
-// Attributes:
-// - Operation
-// - ProbabilisticSampling
-type OperationSamplingStrategy struct {
- Operation string `thrift:"operation,1,required" json:"operation"`
- ProbabilisticSampling *ProbabilisticSamplingStrategy `thrift:"probabilisticSampling,2,required" json:"probabilisticSampling"`
-}
-
-func NewOperationSamplingStrategy() *OperationSamplingStrategy {
- return &OperationSamplingStrategy{}
-}
-
-func (p *OperationSamplingStrategy) GetOperation() string {
- return p.Operation
-}
-
-var OperationSamplingStrategy_ProbabilisticSampling_DEFAULT *ProbabilisticSamplingStrategy
-
-func (p *OperationSamplingStrategy) GetProbabilisticSampling() *ProbabilisticSamplingStrategy {
- if !p.IsSetProbabilisticSampling() {
- return OperationSamplingStrategy_ProbabilisticSampling_DEFAULT
- }
- return p.ProbabilisticSampling
-}
-func (p *OperationSamplingStrategy) IsSetProbabilisticSampling() bool {
- return p.ProbabilisticSampling != nil
-}
-
-func (p *OperationSamplingStrategy) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetOperation bool = false
- var issetProbabilisticSampling bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetOperation = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetProbabilisticSampling = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetOperation {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Operation is not set"))
- }
- if !issetProbabilisticSampling {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field ProbabilisticSampling is not set"))
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Operation = v
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) readField2(iprot thrift.TProtocol) error {
- p.ProbabilisticSampling = &ProbabilisticSamplingStrategy{}
- if err := p.ProbabilisticSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ProbabilisticSampling), err)
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("OperationSamplingStrategy"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("operation", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:operation: ", p), err)
- }
- if err := oprot.WriteString(string(p.Operation)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.operation (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:operation: ", p), err)
- }
- return err
-}
-
-func (p *OperationSamplingStrategy) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("probabilisticSampling", thrift.STRUCT, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:probabilisticSampling: ", p), err)
- }
- if err := p.ProbabilisticSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ProbabilisticSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:probabilisticSampling: ", p), err)
- }
- return err
-}
-
-func (p *OperationSamplingStrategy) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("OperationSamplingStrategy(%+v)", *p)
-}
-
-// Attributes:
-// - DefaultSamplingProbability
-// - DefaultLowerBoundTracesPerSecond
-// - PerOperationStrategies
-// - DefaultUpperBoundTracesPerSecond
-type PerOperationSamplingStrategies struct {
- DefaultSamplingProbability float64 `thrift:"defaultSamplingProbability,1,required" json:"defaultSamplingProbability"`
- DefaultLowerBoundTracesPerSecond float64 `thrift:"defaultLowerBoundTracesPerSecond,2,required" json:"defaultLowerBoundTracesPerSecond"`
- PerOperationStrategies []*OperationSamplingStrategy `thrift:"perOperationStrategies,3,required" json:"perOperationStrategies"`
- DefaultUpperBoundTracesPerSecond *float64 `thrift:"defaultUpperBoundTracesPerSecond,4" json:"defaultUpperBoundTracesPerSecond,omitempty"`
-}
-
-func NewPerOperationSamplingStrategies() *PerOperationSamplingStrategies {
- return &PerOperationSamplingStrategies{}
-}
-
-func (p *PerOperationSamplingStrategies) GetDefaultSamplingProbability() float64 {
- return p.DefaultSamplingProbability
-}
-
-func (p *PerOperationSamplingStrategies) GetDefaultLowerBoundTracesPerSecond() float64 {
- return p.DefaultLowerBoundTracesPerSecond
-}
-
-func (p *PerOperationSamplingStrategies) GetPerOperationStrategies() []*OperationSamplingStrategy {
- return p.PerOperationStrategies
-}
-
-var PerOperationSamplingStrategies_DefaultUpperBoundTracesPerSecond_DEFAULT float64
-
-func (p *PerOperationSamplingStrategies) GetDefaultUpperBoundTracesPerSecond() float64 {
- if !p.IsSetDefaultUpperBoundTracesPerSecond() {
- return PerOperationSamplingStrategies_DefaultUpperBoundTracesPerSecond_DEFAULT
- }
- return *p.DefaultUpperBoundTracesPerSecond
-}
-func (p *PerOperationSamplingStrategies) IsSetDefaultUpperBoundTracesPerSecond() bool {
- return p.DefaultUpperBoundTracesPerSecond != nil
-}
-
-func (p *PerOperationSamplingStrategies) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetDefaultSamplingProbability bool = false
- var issetDefaultLowerBoundTracesPerSecond bool = false
- var issetPerOperationStrategies bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetDefaultSamplingProbability = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetDefaultLowerBoundTracesPerSecond = true
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- issetPerOperationStrategies = true
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetDefaultSamplingProbability {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DefaultSamplingProbability is not set"))
- }
- if !issetDefaultLowerBoundTracesPerSecond {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DefaultLowerBoundTracesPerSecond is not set"))
- }
- if !issetPerOperationStrategies {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field PerOperationStrategies is not set"))
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.DefaultSamplingProbability = v
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.DefaultLowerBoundTracesPerSecond = v
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField3(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*OperationSamplingStrategy, 0, size)
- p.PerOperationStrategies = tSlice
- for i := 0; i < size; i++ {
- _elem0 := &OperationSamplingStrategy{}
- if err := _elem0.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem0), err)
- }
- p.PerOperationStrategies = append(p.PerOperationStrategies, _elem0)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField4(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 4: ", err)
- } else {
- p.DefaultUpperBoundTracesPerSecond = &v
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("PerOperationSamplingStrategies"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("defaultSamplingProbability", thrift.DOUBLE, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:defaultSamplingProbability: ", p), err)
- }
- if err := oprot.WriteDouble(float64(p.DefaultSamplingProbability)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.defaultSamplingProbability (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:defaultSamplingProbability: ", p), err)
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("defaultLowerBoundTracesPerSecond", thrift.DOUBLE, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:defaultLowerBoundTracesPerSecond: ", p), err)
- }
- if err := oprot.WriteDouble(float64(p.DefaultLowerBoundTracesPerSecond)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.defaultLowerBoundTracesPerSecond (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:defaultLowerBoundTracesPerSecond: ", p), err)
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("perOperationStrategies", thrift.LIST, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:perOperationStrategies: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.PerOperationStrategies)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.PerOperationStrategies {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:perOperationStrategies: ", p), err)
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) writeField4(oprot thrift.TProtocol) (err error) {
- if p.IsSetDefaultUpperBoundTracesPerSecond() {
- if err := oprot.WriteFieldBegin("defaultUpperBoundTracesPerSecond", thrift.DOUBLE, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:defaultUpperBoundTracesPerSecond: ", p), err)
- }
- if err := oprot.WriteDouble(float64(*p.DefaultUpperBoundTracesPerSecond)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.defaultUpperBoundTracesPerSecond (4) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:defaultUpperBoundTracesPerSecond: ", p), err)
- }
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("PerOperationSamplingStrategies(%+v)", *p)
-}
-
-// Attributes:
-// - StrategyType
-// - ProbabilisticSampling
-// - RateLimitingSampling
-// - OperationSampling
-type SamplingStrategyResponse struct {
- StrategyType SamplingStrategyType `thrift:"strategyType,1,required" json:"strategyType"`
- ProbabilisticSampling *ProbabilisticSamplingStrategy `thrift:"probabilisticSampling,2" json:"probabilisticSampling,omitempty"`
- RateLimitingSampling *RateLimitingSamplingStrategy `thrift:"rateLimitingSampling,3" json:"rateLimitingSampling,omitempty"`
- OperationSampling *PerOperationSamplingStrategies `thrift:"operationSampling,4" json:"operationSampling,omitempty"`
-}
-
-func NewSamplingStrategyResponse() *SamplingStrategyResponse {
- return &SamplingStrategyResponse{}
-}
-
-func (p *SamplingStrategyResponse) GetStrategyType() SamplingStrategyType {
- return p.StrategyType
-}
-
-var SamplingStrategyResponse_ProbabilisticSampling_DEFAULT *ProbabilisticSamplingStrategy
-
-func (p *SamplingStrategyResponse) GetProbabilisticSampling() *ProbabilisticSamplingStrategy {
- if !p.IsSetProbabilisticSampling() {
- return SamplingStrategyResponse_ProbabilisticSampling_DEFAULT
- }
- return p.ProbabilisticSampling
-}
-
-var SamplingStrategyResponse_RateLimitingSampling_DEFAULT *RateLimitingSamplingStrategy
-
-func (p *SamplingStrategyResponse) GetRateLimitingSampling() *RateLimitingSamplingStrategy {
- if !p.IsSetRateLimitingSampling() {
- return SamplingStrategyResponse_RateLimitingSampling_DEFAULT
- }
- return p.RateLimitingSampling
-}
-
-var SamplingStrategyResponse_OperationSampling_DEFAULT *PerOperationSamplingStrategies
-
-func (p *SamplingStrategyResponse) GetOperationSampling() *PerOperationSamplingStrategies {
- if !p.IsSetOperationSampling() {
- return SamplingStrategyResponse_OperationSampling_DEFAULT
- }
- return p.OperationSampling
-}
-func (p *SamplingStrategyResponse) IsSetProbabilisticSampling() bool {
- return p.ProbabilisticSampling != nil
-}
-
-func (p *SamplingStrategyResponse) IsSetRateLimitingSampling() bool {
- return p.RateLimitingSampling != nil
-}
-
-func (p *SamplingStrategyResponse) IsSetOperationSampling() bool {
- return p.OperationSampling != nil
-}
-
-func (p *SamplingStrategyResponse) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetStrategyType bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetStrategyType = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetStrategyType {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field StrategyType is not set"))
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- temp := SamplingStrategyType(v)
- p.StrategyType = temp
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField2(iprot thrift.TProtocol) error {
- p.ProbabilisticSampling = &ProbabilisticSamplingStrategy{}
- if err := p.ProbabilisticSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ProbabilisticSampling), err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField3(iprot thrift.TProtocol) error {
- p.RateLimitingSampling = &RateLimitingSamplingStrategy{}
- if err := p.RateLimitingSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.RateLimitingSampling), err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField4(iprot thrift.TProtocol) error {
- p.OperationSampling = &PerOperationSamplingStrategies{}
- if err := p.OperationSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.OperationSampling), err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("SamplingStrategyResponse"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("strategyType", thrift.I32, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:strategyType: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.StrategyType)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.strategyType (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:strategyType: ", p), err)
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) writeField2(oprot thrift.TProtocol) (err error) {
- if p.IsSetProbabilisticSampling() {
- if err := oprot.WriteFieldBegin("probabilisticSampling", thrift.STRUCT, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:probabilisticSampling: ", p), err)
- }
- if err := p.ProbabilisticSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ProbabilisticSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:probabilisticSampling: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) writeField3(oprot thrift.TProtocol) (err error) {
- if p.IsSetRateLimitingSampling() {
- if err := oprot.WriteFieldBegin("rateLimitingSampling", thrift.STRUCT, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:rateLimitingSampling: ", p), err)
- }
- if err := p.RateLimitingSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.RateLimitingSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:rateLimitingSampling: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) writeField4(oprot thrift.TProtocol) (err error) {
- if p.IsSetOperationSampling() {
- if err := oprot.WriteFieldBegin("operationSampling", thrift.STRUCT, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:operationSampling: ", p), err)
- }
- if err := p.OperationSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.OperationSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:operationSampling: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SamplingStrategyResponse(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/constants.go
deleted file mode 100644
index f05144bfc..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/constants.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package zipkincore
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-const CLIENT_SEND = "cs"
-const CLIENT_RECV = "cr"
-const SERVER_SEND = "ss"
-const SERVER_RECV = "sr"
-const WIRE_SEND = "ws"
-const WIRE_RECV = "wr"
-const CLIENT_SEND_FRAGMENT = "csf"
-const CLIENT_RECV_FRAGMENT = "crf"
-const SERVER_SEND_FRAGMENT = "ssf"
-const SERVER_RECV_FRAGMENT = "srf"
-const LOCAL_COMPONENT = "lc"
-const CLIENT_ADDR = "ca"
-const SERVER_ADDR = "sa"
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/ttypes.go
deleted file mode 100644
index 34b2b267e..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/ttypes.go
+++ /dev/null
@@ -1,1247 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package zipkincore
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var GoUnusedProtection__ int
-
-type AnnotationType int64
-
-const (
- AnnotationType_BOOL AnnotationType = 0
- AnnotationType_BYTES AnnotationType = 1
- AnnotationType_I16 AnnotationType = 2
- AnnotationType_I32 AnnotationType = 3
- AnnotationType_I64 AnnotationType = 4
- AnnotationType_DOUBLE AnnotationType = 5
- AnnotationType_STRING AnnotationType = 6
-)
-
-func (p AnnotationType) String() string {
- switch p {
- case AnnotationType_BOOL:
- return "BOOL"
- case AnnotationType_BYTES:
- return "BYTES"
- case AnnotationType_I16:
- return "I16"
- case AnnotationType_I32:
- return "I32"
- case AnnotationType_I64:
- return "I64"
- case AnnotationType_DOUBLE:
- return "DOUBLE"
- case AnnotationType_STRING:
- return "STRING"
- }
- return "<UNSET>"
-}
-
-func AnnotationTypeFromString(s string) (AnnotationType, error) {
- switch s {
- case "BOOL":
- return AnnotationType_BOOL, nil
- case "BYTES":
- return AnnotationType_BYTES, nil
- case "I16":
- return AnnotationType_I16, nil
- case "I32":
- return AnnotationType_I32, nil
- case "I64":
- return AnnotationType_I64, nil
- case "DOUBLE":
- return AnnotationType_DOUBLE, nil
- case "STRING":
- return AnnotationType_STRING, nil
- }
- return AnnotationType(0), fmt.Errorf("not a valid AnnotationType string")
-}
-
-func AnnotationTypePtr(v AnnotationType) *AnnotationType { return &v }
-
-func (p AnnotationType) MarshalText() ([]byte, error) {
- return []byte(p.String()), nil
-}
-
-func (p *AnnotationType) UnmarshalText(text []byte) error {
- q, err := AnnotationTypeFromString(string(text))
- if err != nil {
- return err
- }
- *p = q
- return nil
-}
-
-// Indicates the network context of a service recording an annotation with two
-// exceptions.
-//
-// When a BinaryAnnotation, and key is CLIENT_ADDR or SERVER_ADDR,
-// the endpoint indicates the source or destination of an RPC. This exception
-// allows zipkin to display network context of uninstrumented services, or
-// clients such as web browsers.
-//
-// Attributes:
-// - Ipv4: IPv4 host address packed into 4 bytes.
-//
-// Ex for the ip 1.2.3.4, it would be (1 << 24) | (2 << 16) | (3 << 8) | 4
-// - Port: IPv4 port
-//
-// Note: this is to be treated as an unsigned integer, so watch for negatives.
-//
-// Conventionally, when the port isn't known, port = 0.
-// - ServiceName: Service name in lowercase, such as "memcache" or "zipkin-web"
-//
-// Conventionally, when the service name isn't known, service_name = "unknown".
-type Endpoint struct {
- Ipv4 int32 `thrift:"ipv4,1" json:"ipv4"`
- Port int16 `thrift:"port,2" json:"port"`
- ServiceName string `thrift:"service_name,3" json:"service_name"`
-}
-
-func NewEndpoint() *Endpoint {
- return &Endpoint{}
-}
-
-func (p *Endpoint) GetIpv4() int32 {
- return p.Ipv4
-}
-
-func (p *Endpoint) GetPort() int16 {
- return p.Port
-}
-
-func (p *Endpoint) GetServiceName() string {
- return p.ServiceName
-}
-func (p *Endpoint) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *Endpoint) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Ipv4 = v
- }
- return nil
-}
-
-func (p *Endpoint) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI16(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.Port = v
- }
- return nil
-}
-
-func (p *Endpoint) readField3(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 3: ", err)
- } else {
- p.ServiceName = v
- }
- return nil
-}
-
-func (p *Endpoint) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Endpoint"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Endpoint) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("ipv4", thrift.I32, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ipv4: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.Ipv4)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.ipv4 (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ipv4: ", p), err)
- }
- return err
-}
-
-func (p *Endpoint) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("port", thrift.I16, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:port: ", p), err)
- }
- if err := oprot.WriteI16(int16(p.Port)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.port (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:port: ", p), err)
- }
- return err
-}
-
-func (p *Endpoint) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("service_name", thrift.STRING, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:service_name: ", p), err)
- }
- if err := oprot.WriteString(string(p.ServiceName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.service_name (3) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:service_name: ", p), err)
- }
- return err
-}
-
-func (p *Endpoint) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Endpoint(%+v)", *p)
-}
-
-// An annotation is similar to a log statement. It includes a host field which
-// allows these events to be attributed properly, and also aggregatable.
-//
-// Attributes:
-// - Timestamp: Microseconds from epoch.
-//
-// This value should use the most precise value possible. For example,
-// gettimeofday or syncing nanoTime against a tick of currentTimeMillis.
-// - Value
-// - Host: Always the host that recorded the event. By specifying the host you allow
-// rollup of all events (such as client requests to a service) by IP address.
-type Annotation struct {
- Timestamp int64 `thrift:"timestamp,1" json:"timestamp"`
- Value string `thrift:"value,2" json:"value"`
- Host *Endpoint `thrift:"host,3" json:"host,omitempty"`
-}
-
-func NewAnnotation() *Annotation {
- return &Annotation{}
-}
-
-func (p *Annotation) GetTimestamp() int64 {
- return p.Timestamp
-}
-
-func (p *Annotation) GetValue() string {
- return p.Value
-}
-
-var Annotation_Host_DEFAULT *Endpoint
-
-func (p *Annotation) GetHost() *Endpoint {
- if !p.IsSetHost() {
- return Annotation_Host_DEFAULT
- }
- return p.Host
-}
-func (p *Annotation) IsSetHost() bool {
- return p.Host != nil
-}
-
-func (p *Annotation) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *Annotation) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Timestamp = v
- }
- return nil
-}
-
-func (p *Annotation) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.Value = v
- }
- return nil
-}
-
-func (p *Annotation) readField3(iprot thrift.TProtocol) error {
- p.Host = &Endpoint{}
- if err := p.Host.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Host), err)
- }
- return nil
-}
-
-func (p *Annotation) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Annotation"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Annotation) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("timestamp", thrift.I64, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:timestamp: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.Timestamp)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.timestamp (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:timestamp: ", p), err)
- }
- return err
-}
-
-func (p *Annotation) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("value", thrift.STRING, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", p), err)
- }
- if err := oprot.WriteString(string(p.Value)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", p), err)
- }
- return err
-}
-
-func (p *Annotation) writeField3(oprot thrift.TProtocol) (err error) {
- if p.IsSetHost() {
- if err := oprot.WriteFieldBegin("host", thrift.STRUCT, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:host: ", p), err)
- }
- if err := p.Host.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Host), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:host: ", p), err)
- }
- }
- return err
-}
-
-func (p *Annotation) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Annotation(%+v)", *p)
-}
-
-// Binary annotations are tags applied to a Span to give it context. For
-// example, a binary annotation of "http.uri" could the path to a resource in a
-// RPC call.
-//
-// Binary annotations of type STRING are always queryable, though more a
-// historical implementation detail than a structural concern.
-//
-// Binary annotations can repeat, and vary on the host. Similar to Annotation,
-// the host indicates who logged the event. This allows you to tell the
-// difference between the client and server side of the same key. For example,
-// the key "http.uri" might be different on the client and server side due to
-// rewriting, like "/api/v1/myresource" vs "/myresource. Via the host field,
-// you can see the different points of view, which often help in debugging.
-//
-// Attributes:
-// - Key
-// - Value
-// - AnnotationType
-// - Host: The host that recorded tag, which allows you to differentiate between
-// multiple tags with the same key. There are two exceptions to this.
-//
-// When the key is CLIENT_ADDR or SERVER_ADDR, host indicates the source or
-// destination of an RPC. This exception allows zipkin to display network
-// context of uninstrumented services, or clients such as web browsers.
-type BinaryAnnotation struct {
- Key string `thrift:"key,1" json:"key"`
- Value []byte `thrift:"value,2" json:"value"`
- AnnotationType AnnotationType `thrift:"annotation_type,3" json:"annotation_type"`
- Host *Endpoint `thrift:"host,4" json:"host,omitempty"`
-}
-
-func NewBinaryAnnotation() *BinaryAnnotation {
- return &BinaryAnnotation{}
-}
-
-func (p *BinaryAnnotation) GetKey() string {
- return p.Key
-}
-
-func (p *BinaryAnnotation) GetValue() []byte {
- return p.Value
-}
-
-func (p *BinaryAnnotation) GetAnnotationType() AnnotationType {
- return p.AnnotationType
-}
-
-var BinaryAnnotation_Host_DEFAULT *Endpoint
-
-func (p *BinaryAnnotation) GetHost() *Endpoint {
- if !p.IsSetHost() {
- return BinaryAnnotation_Host_DEFAULT
- }
- return p.Host
-}
-func (p *BinaryAnnotation) IsSetHost() bool {
- return p.Host != nil
-}
-
-func (p *BinaryAnnotation) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *BinaryAnnotation) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Key = v
- }
- return nil
-}
-
-func (p *BinaryAnnotation) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadBinary(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.Value = v
- }
- return nil
-}
-
-func (p *BinaryAnnotation) readField3(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 3: ", err)
- } else {
- temp := AnnotationType(v)
- p.AnnotationType = temp
- }
- return nil
-}
-
-func (p *BinaryAnnotation) readField4(iprot thrift.TProtocol) error {
- p.Host = &Endpoint{}
- if err := p.Host.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Host), err)
- }
- return nil
-}
-
-func (p *BinaryAnnotation) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("BinaryAnnotation"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BinaryAnnotation) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("key", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", p), err)
- }
- if err := oprot.WriteString(string(p.Key)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.key (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", p), err)
- }
- return err
-}
-
-func (p *BinaryAnnotation) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("value", thrift.STRING, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", p), err)
- }
- if err := oprot.WriteBinary(p.Value); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", p), err)
- }
- return err
-}
-
-func (p *BinaryAnnotation) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("annotation_type", thrift.I32, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:annotation_type: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.AnnotationType)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.annotation_type (3) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:annotation_type: ", p), err)
- }
- return err
-}
-
-func (p *BinaryAnnotation) writeField4(oprot thrift.TProtocol) (err error) {
- if p.IsSetHost() {
- if err := oprot.WriteFieldBegin("host", thrift.STRUCT, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:host: ", p), err)
- }
- if err := p.Host.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Host), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:host: ", p), err)
- }
- }
- return err
-}
-
-func (p *BinaryAnnotation) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BinaryAnnotation(%+v)", *p)
-}
-
-// A trace is a series of spans (often RPC calls) which form a latency tree.
-//
-// The root span is where trace_id = id and parent_id = Nil. The root span is
-// usually the longest interval in the trace, starting with a SERVER_RECV
-// annotation and ending with a SERVER_SEND.
-//
-// Attributes:
-// - TraceID
-// - Name: Span name in lowercase, rpc method for example
-//
-// Conventionally, when the span name isn't known, name = "unknown".
-// - ID
-// - ParentID
-// - Annotations
-// - BinaryAnnotations
-// - Debug
-// - Timestamp: Microseconds from epoch of the creation of this span.
-//
-// This value should be set directly by instrumentation, using the most
-// precise value possible. For example, gettimeofday or syncing nanoTime
-// against a tick of currentTimeMillis.
-//
-// For compatibilty with instrumentation that precede this field, collectors
-// or span stores can derive this via Annotation.timestamp.
-// For example, SERVER_RECV.timestamp or CLIENT_SEND.timestamp.
-//
-// This field is optional for compatibility with old data: first-party span
-// stores are expected to support this at time of introduction.
-// - Duration: Measurement of duration in microseconds, used to support queries.
-//
-// This value should be set directly, where possible. Doing so encourages
-// precise measurement decoupled from problems of clocks, such as skew or NTP
-// updates causing time to move backwards.
-//
-// For compatibilty with instrumentation that precede this field, collectors
-// or span stores can derive this by subtracting Annotation.timestamp.
-// For example, SERVER_SEND.timestamp - SERVER_RECV.timestamp.
-//
-// If this field is persisted as unset, zipkin will continue to work, except
-// duration query support will be implementation-specific. Similarly, setting
-// this field non-atomically is implementation-specific.
-//
-// This field is i64 vs i32 to support spans longer than 35 minutes.
-type Span struct {
- TraceID int64 `thrift:"trace_id,1" json:"trace_id"`
- // unused field # 2
- Name string `thrift:"name,3" json:"name"`
- ID int64 `thrift:"id,4" json:"id"`
- ParentID *int64 `thrift:"parent_id,5" json:"parent_id,omitempty"`
- Annotations []*Annotation `thrift:"annotations,6" json:"annotations"`
- // unused field # 7
- BinaryAnnotations []*BinaryAnnotation `thrift:"binary_annotations,8" json:"binary_annotations"`
- Debug bool `thrift:"debug,9" json:"debug,omitempty"`
- Timestamp *int64 `thrift:"timestamp,10" json:"timestamp,omitempty"`
- Duration *int64 `thrift:"duration,11" json:"duration,omitempty"`
-}
-
-func NewSpan() *Span {
- return &Span{}
-}
-
-func (p *Span) GetTraceID() int64 {
- return p.TraceID
-}
-
-func (p *Span) GetName() string {
- return p.Name
-}
-
-func (p *Span) GetID() int64 {
- return p.ID
-}
-
-var Span_ParentID_DEFAULT int64
-
-func (p *Span) GetParentID() int64 {
- if !p.IsSetParentID() {
- return Span_ParentID_DEFAULT
- }
- return *p.ParentID
-}
-
-func (p *Span) GetAnnotations() []*Annotation {
- return p.Annotations
-}
-
-func (p *Span) GetBinaryAnnotations() []*BinaryAnnotation {
- return p.BinaryAnnotations
-}
-
-var Span_Debug_DEFAULT bool = false
-
-func (p *Span) GetDebug() bool {
- return p.Debug
-}
-
-var Span_Timestamp_DEFAULT int64
-
-func (p *Span) GetTimestamp() int64 {
- if !p.IsSetTimestamp() {
- return Span_Timestamp_DEFAULT
- }
- return *p.Timestamp
-}
-
-var Span_Duration_DEFAULT int64
-
-func (p *Span) GetDuration() int64 {
- if !p.IsSetDuration() {
- return Span_Duration_DEFAULT
- }
- return *p.Duration
-}
-func (p *Span) IsSetParentID() bool {
- return p.ParentID != nil
-}
-
-func (p *Span) IsSetDebug() bool {
- return p.Debug != Span_Debug_DEFAULT
-}
-
-func (p *Span) IsSetTimestamp() bool {
- return p.Timestamp != nil
-}
-
-func (p *Span) IsSetDuration() bool {
- return p.Duration != nil
-}
-
-func (p *Span) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- case 5:
- if err := p.readField5(iprot); err != nil {
- return err
- }
- case 6:
- if err := p.readField6(iprot); err != nil {
- return err
- }
- case 8:
- if err := p.readField8(iprot); err != nil {
- return err
- }
- case 9:
- if err := p.readField9(iprot); err != nil {
- return err
- }
- case 10:
- if err := p.readField10(iprot); err != nil {
- return err
- }
- case 11:
- if err := p.readField11(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *Span) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.TraceID = v
- }
- return nil
-}
-
-func (p *Span) readField3(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 3: ", err)
- } else {
- p.Name = v
- }
- return nil
-}
-
-func (p *Span) readField4(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 4: ", err)
- } else {
- p.ID = v
- }
- return nil
-}
-
-func (p *Span) readField5(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 5: ", err)
- } else {
- p.ParentID = &v
- }
- return nil
-}
-
-func (p *Span) readField6(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Annotation, 0, size)
- p.Annotations = tSlice
- for i := 0; i < size; i++ {
- _elem0 := &Annotation{}
- if err := _elem0.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem0), err)
- }
- p.Annotations = append(p.Annotations, _elem0)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Span) readField8(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*BinaryAnnotation, 0, size)
- p.BinaryAnnotations = tSlice
- for i := 0; i < size; i++ {
- _elem1 := &BinaryAnnotation{}
- if err := _elem1.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem1), err)
- }
- p.BinaryAnnotations = append(p.BinaryAnnotations, _elem1)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *Span) readField9(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadBool(); err != nil {
- return thrift.PrependError("error reading field 9: ", err)
- } else {
- p.Debug = v
- }
- return nil
-}
-
-func (p *Span) readField10(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 10: ", err)
- } else {
- p.Timestamp = &v
- }
- return nil
-}
-
-func (p *Span) readField11(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI64(); err != nil {
- return thrift.PrependError("error reading field 11: ", err)
- } else {
- p.Duration = &v
- }
- return nil
-}
-
-func (p *Span) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Span"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := p.writeField5(oprot); err != nil {
- return err
- }
- if err := p.writeField6(oprot); err != nil {
- return err
- }
- if err := p.writeField8(oprot); err != nil {
- return err
- }
- if err := p.writeField9(oprot); err != nil {
- return err
- }
- if err := p.writeField10(oprot); err != nil {
- return err
- }
- if err := p.writeField11(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Span) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("trace_id", thrift.I64, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:trace_id: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.TraceID)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.trace_id (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:trace_id: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("name", thrift.STRING, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:name: ", p), err)
- }
- if err := oprot.WriteString(string(p.Name)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.name (3) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:name: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField4(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("id", thrift.I64, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:id: ", p), err)
- }
- if err := oprot.WriteI64(int64(p.ID)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.id (4) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:id: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField5(oprot thrift.TProtocol) (err error) {
- if p.IsSetParentID() {
- if err := oprot.WriteFieldBegin("parent_id", thrift.I64, 5); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:parent_id: ", p), err)
- }
- if err := oprot.WriteI64(int64(*p.ParentID)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.parent_id (5) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 5:parent_id: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) writeField6(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("annotations", thrift.LIST, 6); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:annotations: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Annotations)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Annotations {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 6:annotations: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField8(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("binary_annotations", thrift.LIST, 8); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:binary_annotations: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.BinaryAnnotations)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.BinaryAnnotations {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 8:binary_annotations: ", p), err)
- }
- return err
-}
-
-func (p *Span) writeField9(oprot thrift.TProtocol) (err error) {
- if p.IsSetDebug() {
- if err := oprot.WriteFieldBegin("debug", thrift.BOOL, 9); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:debug: ", p), err)
- }
- if err := oprot.WriteBool(bool(p.Debug)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.debug (9) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 9:debug: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) writeField10(oprot thrift.TProtocol) (err error) {
- if p.IsSetTimestamp() {
- if err := oprot.WriteFieldBegin("timestamp", thrift.I64, 10); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:timestamp: ", p), err)
- }
- if err := oprot.WriteI64(int64(*p.Timestamp)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.timestamp (10) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 10:timestamp: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) writeField11(oprot thrift.TProtocol) (err error) {
- if p.IsSetDuration() {
- if err := oprot.WriteFieldBegin("duration", thrift.I64, 11); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:duration: ", p), err)
- }
- if err := oprot.WriteI64(int64(*p.Duration)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.duration (11) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 11:duration: ", p), err)
- }
- }
- return err
-}
-
-func (p *Span) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Span(%+v)", *p)
-}
-
-// Attributes:
-// - Ok
-type Response struct {
- Ok bool `thrift:"ok,1,required" json:"ok"`
-}
-
-func NewResponse() *Response {
- return &Response{}
-}
-
-func (p *Response) GetOk() bool {
- return p.Ok
-}
-func (p *Response) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetOk bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetOk = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetOk {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Ok is not set"))
- }
- return nil
-}
-
-func (p *Response) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadBool(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Ok = v
- }
- return nil
-}
-
-func (p *Response) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("Response"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *Response) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("ok", thrift.BOOL, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ok: ", p), err)
- }
- if err := oprot.WriteBool(bool(p.Ok)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.ok (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ok: ", p), err)
- }
- return err
-}
-
-func (p *Response) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("Response(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/zipkincollector.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/zipkincollector.go
deleted file mode 100644
index 417e883d0..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/zipkincollector.go
+++ /dev/null
@@ -1,446 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package zipkincore
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-type ZipkinCollector interface {
- // Parameters:
- // - Spans
- SubmitZipkinBatch(spans []*Span) (r []*Response, err error)
-}
-
-type ZipkinCollectorClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewZipkinCollectorClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *ZipkinCollectorClient {
- return &ZipkinCollectorClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewZipkinCollectorClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *ZipkinCollectorClient {
- return &ZipkinCollectorClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// Parameters:
-// - Spans
-func (p *ZipkinCollectorClient) SubmitZipkinBatch(spans []*Span) (r []*Response, err error) {
- if err = p.sendSubmitZipkinBatch(spans); err != nil {
- return
- }
- return p.recvSubmitZipkinBatch()
-}
-
-func (p *ZipkinCollectorClient) sendSubmitZipkinBatch(spans []*Span) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("submitZipkinBatch", thrift.CALL, p.SeqId); err != nil {
- return
- }
- args := ZipkinCollectorSubmitZipkinBatchArgs{
- Spans: spans,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-func (p *ZipkinCollectorClient) recvSubmitZipkinBatch() (value []*Response, err error) {
- iprot := p.InputProtocol
- if iprot == nil {
- iprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.InputProtocol = iprot
- }
- method, mTypeId, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return
- }
- if method != "submitZipkinBatch" {
- err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "submitZipkinBatch failed: wrong method name")
- return
- }
- if p.SeqId != seqId {
- err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "submitZipkinBatch failed: out of sequence response")
- return
- }
- if mTypeId == thrift.EXCEPTION {
- error2 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
- var error3 error
- error3, err = error2.Read(iprot)
- if err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- err = error3
- return
- }
- if mTypeId != thrift.REPLY {
- err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "submitZipkinBatch failed: invalid message type")
- return
- }
- result := ZipkinCollectorSubmitZipkinBatchResult{}
- if err = result.Read(iprot); err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- value = result.GetSuccess()
- return
-}
-
-type ZipkinCollectorProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler ZipkinCollector
-}
-
-func (p *ZipkinCollectorProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *ZipkinCollectorProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *ZipkinCollectorProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewZipkinCollectorProcessor(handler ZipkinCollector) *ZipkinCollectorProcessor {
-
- self4 := &ZipkinCollectorProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self4.processorMap["submitZipkinBatch"] = &zipkinCollectorProcessorSubmitZipkinBatch{handler: handler}
- return self4
-}
-
-func (p *ZipkinCollectorProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x5 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x5.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x5
-
-}
-
-type zipkinCollectorProcessorSubmitZipkinBatch struct {
- handler ZipkinCollector
-}
-
-func (p *zipkinCollectorProcessorSubmitZipkinBatch) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := ZipkinCollectorSubmitZipkinBatchArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
- oprot.WriteMessageBegin("submitZipkinBatch", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- result := ZipkinCollectorSubmitZipkinBatchResult{}
- var retval []*Response
- var err2 error
- if retval, err2 = p.handler.SubmitZipkinBatch(args.Spans); err2 != nil {
- x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing submitZipkinBatch: "+err2.Error())
- oprot.WriteMessageBegin("submitZipkinBatch", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return true, err2
- } else {
- result.Success = retval
- }
- if err2 = oprot.WriteMessageBegin("submitZipkinBatch", thrift.REPLY, seqId); err2 != nil {
- err = err2
- }
- if err2 = result.Write(oprot); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.Flush(); err == nil && err2 != nil {
- err = err2
- }
- if err != nil {
- return
- }
- return true, err
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - Spans
-type ZipkinCollectorSubmitZipkinBatchArgs struct {
- Spans []*Span `thrift:"spans,1" json:"spans"`
-}
-
-func NewZipkinCollectorSubmitZipkinBatchArgs() *ZipkinCollectorSubmitZipkinBatchArgs {
- return &ZipkinCollectorSubmitZipkinBatchArgs{}
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchArgs) GetSpans() []*Span {
- return p.Spans
-}
-func (p *ZipkinCollectorSubmitZipkinBatchArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchArgs) readField1(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Span, 0, size)
- p.Spans = tSlice
- for i := 0; i < size; i++ {
- _elem6 := &Span{}
- if err := _elem6.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem6), err)
- }
- p.Spans = append(p.Spans, _elem6)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("submitZipkinBatch_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("spans", thrift.LIST, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:spans: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Spans)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Spans {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:spans: ", p), err)
- }
- return err
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("ZipkinCollectorSubmitZipkinBatchArgs(%+v)", *p)
-}
-
-// Attributes:
-// - Success
-type ZipkinCollectorSubmitZipkinBatchResult struct {
- Success []*Response `thrift:"success,0" json:"success,omitempty"`
-}
-
-func NewZipkinCollectorSubmitZipkinBatchResult() *ZipkinCollectorSubmitZipkinBatchResult {
- return &ZipkinCollectorSubmitZipkinBatchResult{}
-}
-
-var ZipkinCollectorSubmitZipkinBatchResult_Success_DEFAULT []*Response
-
-func (p *ZipkinCollectorSubmitZipkinBatchResult) GetSuccess() []*Response {
- return p.Success
-}
-func (p *ZipkinCollectorSubmitZipkinBatchResult) IsSetSuccess() bool {
- return p.Success != nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchResult) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 0:
- if err := p.readField0(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchResult) readField0(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*Response, 0, size)
- p.Success = tSlice
- for i := 0; i < size; i++ {
- _elem7 := &Response{}
- if err := _elem7.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem7), err)
- }
- p.Success = append(p.Success, _elem7)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchResult) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("submitZipkinBatch_result"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField0(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchResult) writeField0(oprot thrift.TProtocol) (err error) {
- if p.IsSetSuccess() {
- if err := oprot.WriteFieldBegin("success", thrift.LIST, 0); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Success)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Success {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
- }
- }
- return err
-}
-
-func (p *ZipkinCollectorSubmitZipkinBatchResult) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("ZipkinCollectorSubmitZipkinBatchResult(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/README.md b/vendor/github.com/uber/jaeger-client-go/thrift/README.md
deleted file mode 100644
index 1d8e642e0..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Apache Thrift
-
-This is a partial copy of Apache Thrift v0.10 (https://github.com/apache/thrift/commit/b2a4d4ae21c789b689dd162deb819665567f481c).
-
-It is vendored code to avoid compatibility issues introduced in Thrift v0.11.
-
-See https://github.com/jaegertracing/jaeger-client-go/pull/303.
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/application_exception.go b/vendor/github.com/uber/jaeger-client-go/thrift/application_exception.go
deleted file mode 100644
index 6655cc5a9..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/application_exception.go
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-const (
- UNKNOWN_APPLICATION_EXCEPTION = 0
- UNKNOWN_METHOD = 1
- INVALID_MESSAGE_TYPE_EXCEPTION = 2
- WRONG_METHOD_NAME = 3
- BAD_SEQUENCE_ID = 4
- MISSING_RESULT = 5
- INTERNAL_ERROR = 6
- PROTOCOL_ERROR = 7
-)
-
-// Application level Thrift exception
-type TApplicationException interface {
- TException
- TypeId() int32
- Read(iprot TProtocol) (TApplicationException, error)
- Write(oprot TProtocol) error
-}
-
-type tApplicationException struct {
- message string
- type_ int32
-}
-
-func (e tApplicationException) Error() string {
- return e.message
-}
-
-func NewTApplicationException(type_ int32, message string) TApplicationException {
- return &tApplicationException{message, type_}
-}
-
-func (p *tApplicationException) TypeId() int32 {
- return p.type_
-}
-
-func (p *tApplicationException) Read(iprot TProtocol) (TApplicationException, error) {
- _, err := iprot.ReadStructBegin()
- if err != nil {
- return nil, err
- }
-
- message := ""
- type_ := int32(UNKNOWN_APPLICATION_EXCEPTION)
-
- for {
- _, ttype, id, err := iprot.ReadFieldBegin()
- if err != nil {
- return nil, err
- }
- if ttype == STOP {
- break
- }
- switch id {
- case 1:
- if ttype == STRING {
- if message, err = iprot.ReadString(); err != nil {
- return nil, err
- }
- } else {
- if err = SkipDefaultDepth(iprot, ttype); err != nil {
- return nil, err
- }
- }
- case 2:
- if ttype == I32 {
- if type_, err = iprot.ReadI32(); err != nil {
- return nil, err
- }
- } else {
- if err = SkipDefaultDepth(iprot, ttype); err != nil {
- return nil, err
- }
- }
- default:
- if err = SkipDefaultDepth(iprot, ttype); err != nil {
- return nil, err
- }
- }
- if err = iprot.ReadFieldEnd(); err != nil {
- return nil, err
- }
- }
- return NewTApplicationException(type_, message), iprot.ReadStructEnd()
-}
-
-func (p *tApplicationException) Write(oprot TProtocol) (err error) {
- err = oprot.WriteStructBegin("TApplicationException")
- if len(p.Error()) > 0 {
- err = oprot.WriteFieldBegin("message", STRING, 1)
- if err != nil {
- return
- }
- err = oprot.WriteString(p.Error())
- if err != nil {
- return
- }
- err = oprot.WriteFieldEnd()
- if err != nil {
- return
- }
- }
- err = oprot.WriteFieldBegin("type", I32, 2)
- if err != nil {
- return
- }
- err = oprot.WriteI32(p.type_)
- if err != nil {
- return
- }
- err = oprot.WriteFieldEnd()
- if err != nil {
- return
- }
- err = oprot.WriteFieldStop()
- if err != nil {
- return
- }
- err = oprot.WriteStructEnd()
- return
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/binary_protocol.go b/vendor/github.com/uber/jaeger-client-go/thrift/binary_protocol.go
deleted file mode 100644
index 690d34111..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/binary_protocol.go
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "bytes"
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "math"
-)
-
-type TBinaryProtocol struct {
- trans TRichTransport
- origTransport TTransport
- reader io.Reader
- writer io.Writer
- strictRead bool
- strictWrite bool
- buffer [64]byte
-}
-
-type TBinaryProtocolFactory struct {
- strictRead bool
- strictWrite bool
-}
-
-func NewTBinaryProtocolTransport(t TTransport) *TBinaryProtocol {
- return NewTBinaryProtocol(t, false, true)
-}
-
-func NewTBinaryProtocol(t TTransport, strictRead, strictWrite bool) *TBinaryProtocol {
- p := &TBinaryProtocol{origTransport: t, strictRead: strictRead, strictWrite: strictWrite}
- if et, ok := t.(TRichTransport); ok {
- p.trans = et
- } else {
- p.trans = NewTRichTransport(t)
- }
- p.reader = p.trans
- p.writer = p.trans
- return p
-}
-
-func NewTBinaryProtocolFactoryDefault() *TBinaryProtocolFactory {
- return NewTBinaryProtocolFactory(false, true)
-}
-
-func NewTBinaryProtocolFactory(strictRead, strictWrite bool) *TBinaryProtocolFactory {
- return &TBinaryProtocolFactory{strictRead: strictRead, strictWrite: strictWrite}
-}
-
-func (p *TBinaryProtocolFactory) GetProtocol(t TTransport) TProtocol {
- return NewTBinaryProtocol(t, p.strictRead, p.strictWrite)
-}
-
-/**
- * Writing Methods
- */
-
-func (p *TBinaryProtocol) WriteMessageBegin(name string, typeId TMessageType, seqId int32) error {
- if p.strictWrite {
- version := uint32(VERSION_1) | uint32(typeId)
- e := p.WriteI32(int32(version))
- if e != nil {
- return e
- }
- e = p.WriteString(name)
- if e != nil {
- return e
- }
- e = p.WriteI32(seqId)
- return e
- } else {
- e := p.WriteString(name)
- if e != nil {
- return e
- }
- e = p.WriteByte(int8(typeId))
- if e != nil {
- return e
- }
- e = p.WriteI32(seqId)
- return e
- }
- return nil
-}
-
-func (p *TBinaryProtocol) WriteMessageEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteStructBegin(name string) error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteStructEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteFieldBegin(name string, typeId TType, id int16) error {
- e := p.WriteByte(int8(typeId))
- if e != nil {
- return e
- }
- e = p.WriteI16(id)
- return e
-}
-
-func (p *TBinaryProtocol) WriteFieldEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteFieldStop() error {
- e := p.WriteByte(STOP)
- return e
-}
-
-func (p *TBinaryProtocol) WriteMapBegin(keyType TType, valueType TType, size int) error {
- e := p.WriteByte(int8(keyType))
- if e != nil {
- return e
- }
- e = p.WriteByte(int8(valueType))
- if e != nil {
- return e
- }
- e = p.WriteI32(int32(size))
- return e
-}
-
-func (p *TBinaryProtocol) WriteMapEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteListBegin(elemType TType, size int) error {
- e := p.WriteByte(int8(elemType))
- if e != nil {
- return e
- }
- e = p.WriteI32(int32(size))
- return e
-}
-
-func (p *TBinaryProtocol) WriteListEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteSetBegin(elemType TType, size int) error {
- e := p.WriteByte(int8(elemType))
- if e != nil {
- return e
- }
- e = p.WriteI32(int32(size))
- return e
-}
-
-func (p *TBinaryProtocol) WriteSetEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) WriteBool(value bool) error {
- if value {
- return p.WriteByte(1)
- }
- return p.WriteByte(0)
-}
-
-func (p *TBinaryProtocol) WriteByte(value int8) error {
- e := p.trans.WriteByte(byte(value))
- return NewTProtocolException(e)
-}
-
-func (p *TBinaryProtocol) WriteI16(value int16) error {
- v := p.buffer[0:2]
- binary.BigEndian.PutUint16(v, uint16(value))
- _, e := p.writer.Write(v)
- return NewTProtocolException(e)
-}
-
-func (p *TBinaryProtocol) WriteI32(value int32) error {
- v := p.buffer[0:4]
- binary.BigEndian.PutUint32(v, uint32(value))
- _, e := p.writer.Write(v)
- return NewTProtocolException(e)
-}
-
-func (p *TBinaryProtocol) WriteI64(value int64) error {
- v := p.buffer[0:8]
- binary.BigEndian.PutUint64(v, uint64(value))
- _, err := p.writer.Write(v)
- return NewTProtocolException(err)
-}
-
-func (p *TBinaryProtocol) WriteDouble(value float64) error {
- return p.WriteI64(int64(math.Float64bits(value)))
-}
-
-func (p *TBinaryProtocol) WriteString(value string) error {
- e := p.WriteI32(int32(len(value)))
- if e != nil {
- return e
- }
- _, err := p.trans.WriteString(value)
- return NewTProtocolException(err)
-}
-
-func (p *TBinaryProtocol) WriteBinary(value []byte) error {
- e := p.WriteI32(int32(len(value)))
- if e != nil {
- return e
- }
- _, err := p.writer.Write(value)
- return NewTProtocolException(err)
-}
-
-/**
- * Reading methods
- */
-
-func (p *TBinaryProtocol) ReadMessageBegin() (name string, typeId TMessageType, seqId int32, err error) {
- size, e := p.ReadI32()
- if e != nil {
- return "", typeId, 0, NewTProtocolException(e)
- }
- if size < 0 {
- typeId = TMessageType(size & 0x0ff)
- version := int64(int64(size) & VERSION_MASK)
- if version != VERSION_1 {
- return name, typeId, seqId, NewTProtocolExceptionWithType(BAD_VERSION, fmt.Errorf("Bad version in ReadMessageBegin"))
- }
- name, e = p.ReadString()
- if e != nil {
- return name, typeId, seqId, NewTProtocolException(e)
- }
- seqId, e = p.ReadI32()
- if e != nil {
- return name, typeId, seqId, NewTProtocolException(e)
- }
- return name, typeId, seqId, nil
- }
- if p.strictRead {
- return name, typeId, seqId, NewTProtocolExceptionWithType(BAD_VERSION, fmt.Errorf("Missing version in ReadMessageBegin"))
- }
- name, e2 := p.readStringBody(size)
- if e2 != nil {
- return name, typeId, seqId, e2
- }
- b, e3 := p.ReadByte()
- if e3 != nil {
- return name, typeId, seqId, e3
- }
- typeId = TMessageType(b)
- seqId, e4 := p.ReadI32()
- if e4 != nil {
- return name, typeId, seqId, e4
- }
- return name, typeId, seqId, nil
-}
-
-func (p *TBinaryProtocol) ReadMessageEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) ReadStructBegin() (name string, err error) {
- return
-}
-
-func (p *TBinaryProtocol) ReadStructEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) ReadFieldBegin() (name string, typeId TType, seqId int16, err error) {
- t, err := p.ReadByte()
- typeId = TType(t)
- if err != nil {
- return name, typeId, seqId, err
- }
- if t != STOP {
- seqId, err = p.ReadI16()
- }
- return name, typeId, seqId, err
-}
-
-func (p *TBinaryProtocol) ReadFieldEnd() error {
- return nil
-}
-
-var invalidDataLength = NewTProtocolExceptionWithType(INVALID_DATA, errors.New("Invalid data length"))
-
-func (p *TBinaryProtocol) ReadMapBegin() (kType, vType TType, size int, err error) {
- k, e := p.ReadByte()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- kType = TType(k)
- v, e := p.ReadByte()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- vType = TType(v)
- size32, e := p.ReadI32()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- if size32 < 0 {
- err = invalidDataLength
- return
- }
- size = int(size32)
- return kType, vType, size, nil
-}
-
-func (p *TBinaryProtocol) ReadMapEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) ReadListBegin() (elemType TType, size int, err error) {
- b, e := p.ReadByte()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- elemType = TType(b)
- size32, e := p.ReadI32()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- if size32 < 0 {
- err = invalidDataLength
- return
- }
- size = int(size32)
-
- return
-}
-
-func (p *TBinaryProtocol) ReadListEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) ReadSetBegin() (elemType TType, size int, err error) {
- b, e := p.ReadByte()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- elemType = TType(b)
- size32, e := p.ReadI32()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- if size32 < 0 {
- err = invalidDataLength
- return
- }
- size = int(size32)
- return elemType, size, nil
-}
-
-func (p *TBinaryProtocol) ReadSetEnd() error {
- return nil
-}
-
-func (p *TBinaryProtocol) ReadBool() (bool, error) {
- b, e := p.ReadByte()
- v := true
- if b != 1 {
- v = false
- }
- return v, e
-}
-
-func (p *TBinaryProtocol) ReadByte() (int8, error) {
- v, err := p.trans.ReadByte()
- return int8(v), err
-}
-
-func (p *TBinaryProtocol) ReadI16() (value int16, err error) {
- buf := p.buffer[0:2]
- err = p.readAll(buf)
- value = int16(binary.BigEndian.Uint16(buf))
- return value, err
-}
-
-func (p *TBinaryProtocol) ReadI32() (value int32, err error) {
- buf := p.buffer[0:4]
- err = p.readAll(buf)
- value = int32(binary.BigEndian.Uint32(buf))
- return value, err
-}
-
-func (p *TBinaryProtocol) ReadI64() (value int64, err error) {
- buf := p.buffer[0:8]
- err = p.readAll(buf)
- value = int64(binary.BigEndian.Uint64(buf))
- return value, err
-}
-
-func (p *TBinaryProtocol) ReadDouble() (value float64, err error) {
- buf := p.buffer[0:8]
- err = p.readAll(buf)
- value = math.Float64frombits(binary.BigEndian.Uint64(buf))
- return value, err
-}
-
-func (p *TBinaryProtocol) ReadString() (value string, err error) {
- size, e := p.ReadI32()
- if e != nil {
- return "", e
- }
- if size < 0 {
- err = invalidDataLength
- return
- }
-
- return p.readStringBody(size)
-}
-
-func (p *TBinaryProtocol) ReadBinary() ([]byte, error) {
- size, e := p.ReadI32()
- if e != nil {
- return nil, e
- }
- if size < 0 {
- return nil, invalidDataLength
- }
- if uint64(size) > p.trans.RemainingBytes() {
- return nil, invalidDataLength
- }
-
- isize := int(size)
- buf := make([]byte, isize)
- _, err := io.ReadFull(p.trans, buf)
- return buf, NewTProtocolException(err)
-}
-
-func (p *TBinaryProtocol) Flush() (err error) {
- return NewTProtocolException(p.trans.Flush())
-}
-
-func (p *TBinaryProtocol) Skip(fieldType TType) (err error) {
- return SkipDefaultDepth(p, fieldType)
-}
-
-func (p *TBinaryProtocol) Transport() TTransport {
- return p.origTransport
-}
-
-func (p *TBinaryProtocol) readAll(buf []byte) error {
- _, err := io.ReadFull(p.reader, buf)
- return NewTProtocolException(err)
-}
-
-const readLimit = 32768
-
-func (p *TBinaryProtocol) readStringBody(size int32) (value string, err error) {
- if size < 0 {
- return "", nil
- }
- if uint64(size) > p.trans.RemainingBytes() {
- return "", invalidDataLength
- }
-
- var (
- buf bytes.Buffer
- e error
- b []byte
- )
-
- switch {
- case int(size) <= len(p.buffer):
- b = p.buffer[:size] // avoids allocation for small reads
- case int(size) < readLimit:
- b = make([]byte, size)
- default:
- b = make([]byte, readLimit)
- }
-
- for size > 0 {
- _, e = io.ReadFull(p.trans, b)
- buf.Write(b)
- if e != nil {
- break
- }
- size -= readLimit
- if size < readLimit && size > 0 {
- b = b[:size]
- }
- }
- return buf.String(), NewTProtocolException(e)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/compact_protocol.go b/vendor/github.com/uber/jaeger-client-go/thrift/compact_protocol.go
deleted file mode 100644
index b9299f2fa..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/compact_protocol.go
+++ /dev/null
@@ -1,815 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "encoding/binary"
- "fmt"
- "io"
- "math"
-)
-
-const (
- COMPACT_PROTOCOL_ID = 0x082
- COMPACT_VERSION = 1
- COMPACT_VERSION_MASK = 0x1f
- COMPACT_TYPE_MASK = 0x0E0
- COMPACT_TYPE_BITS = 0x07
- COMPACT_TYPE_SHIFT_AMOUNT = 5
-)
-
-type tCompactType byte
-
-const (
- COMPACT_BOOLEAN_TRUE = 0x01
- COMPACT_BOOLEAN_FALSE = 0x02
- COMPACT_BYTE = 0x03
- COMPACT_I16 = 0x04
- COMPACT_I32 = 0x05
- COMPACT_I64 = 0x06
- COMPACT_DOUBLE = 0x07
- COMPACT_BINARY = 0x08
- COMPACT_LIST = 0x09
- COMPACT_SET = 0x0A
- COMPACT_MAP = 0x0B
- COMPACT_STRUCT = 0x0C
-)
-
-var (
- ttypeToCompactType map[TType]tCompactType
-)
-
-func init() {
- ttypeToCompactType = map[TType]tCompactType{
- STOP: STOP,
- BOOL: COMPACT_BOOLEAN_TRUE,
- BYTE: COMPACT_BYTE,
- I16: COMPACT_I16,
- I32: COMPACT_I32,
- I64: COMPACT_I64,
- DOUBLE: COMPACT_DOUBLE,
- STRING: COMPACT_BINARY,
- LIST: COMPACT_LIST,
- SET: COMPACT_SET,
- MAP: COMPACT_MAP,
- STRUCT: COMPACT_STRUCT,
- }
-}
-
-type TCompactProtocolFactory struct{}
-
-func NewTCompactProtocolFactory() *TCompactProtocolFactory {
- return &TCompactProtocolFactory{}
-}
-
-func (p *TCompactProtocolFactory) GetProtocol(trans TTransport) TProtocol {
- return NewTCompactProtocol(trans)
-}
-
-type TCompactProtocol struct {
- trans TRichTransport
- origTransport TTransport
-
- // Used to keep track of the last field for the current and previous structs,
- // so we can do the delta stuff.
- lastField []int
- lastFieldId int
-
- // If we encounter a boolean field begin, save the TField here so it can
- // have the value incorporated.
- booleanFieldName string
- booleanFieldId int16
- booleanFieldPending bool
-
- // If we read a field header, and it's a boolean field, save the boolean
- // value here so that readBool can use it.
- boolValue bool
- boolValueIsNotNull bool
- buffer [64]byte
-}
-
-// Create a TCompactProtocol given a TTransport
-func NewTCompactProtocol(trans TTransport) *TCompactProtocol {
- p := &TCompactProtocol{origTransport: trans, lastField: []int{}}
- if et, ok := trans.(TRichTransport); ok {
- p.trans = et
- } else {
- p.trans = NewTRichTransport(trans)
- }
-
- return p
-
-}
-
-//
-// Public Writing methods.
-//
-
-// Write a message header to the wire. Compact Protocol messages contain the
-// protocol version so we can migrate forwards in the future if need be.
-func (p *TCompactProtocol) WriteMessageBegin(name string, typeId TMessageType, seqid int32) error {
- err := p.writeByteDirect(COMPACT_PROTOCOL_ID)
- if err != nil {
- return NewTProtocolException(err)
- }
- err = p.writeByteDirect((COMPACT_VERSION & COMPACT_VERSION_MASK) | ((byte(typeId) << COMPACT_TYPE_SHIFT_AMOUNT) & COMPACT_TYPE_MASK))
- if err != nil {
- return NewTProtocolException(err)
- }
- _, err = p.writeVarint32(seqid)
- if err != nil {
- return NewTProtocolException(err)
- }
- e := p.WriteString(name)
- return e
-
-}
-
-func (p *TCompactProtocol) WriteMessageEnd() error { return nil }
-
-// Write a struct begin. This doesn't actually put anything on the wire. We
-// use it as an opportunity to put special placeholder markers on the field
-// stack so we can get the field id deltas correct.
-func (p *TCompactProtocol) WriteStructBegin(name string) error {
- p.lastField = append(p.lastField, p.lastFieldId)
- p.lastFieldId = 0
- return nil
-}
-
-// Write a struct end. This doesn't actually put anything on the wire. We use
-// this as an opportunity to pop the last field from the current struct off
-// of the field stack.
-func (p *TCompactProtocol) WriteStructEnd() error {
- p.lastFieldId = p.lastField[len(p.lastField)-1]
- p.lastField = p.lastField[:len(p.lastField)-1]
- return nil
-}
-
-func (p *TCompactProtocol) WriteFieldBegin(name string, typeId TType, id int16) error {
- if typeId == BOOL {
- // we want to possibly include the value, so we'll wait.
- p.booleanFieldName, p.booleanFieldId, p.booleanFieldPending = name, id, true
- return nil
- }
- _, err := p.writeFieldBeginInternal(name, typeId, id, 0xFF)
- return NewTProtocolException(err)
-}
-
-// The workhorse of writeFieldBegin. It has the option of doing a
-// 'type override' of the type header. This is used specifically in the
-// boolean field case.
-func (p *TCompactProtocol) writeFieldBeginInternal(name string, typeId TType, id int16, typeOverride byte) (int, error) {
- // short lastField = lastField_.pop();
-
- // if there's a type override, use that.
- var typeToWrite byte
- if typeOverride == 0xFF {
- typeToWrite = byte(p.getCompactType(typeId))
- } else {
- typeToWrite = typeOverride
- }
- // check if we can use delta encoding for the field id
- fieldId := int(id)
- written := 0
- if fieldId > p.lastFieldId && fieldId-p.lastFieldId <= 15 {
- // write them together
- err := p.writeByteDirect(byte((fieldId-p.lastFieldId)<<4) | typeToWrite)
- if err != nil {
- return 0, err
- }
- } else {
- // write them separate
- err := p.writeByteDirect(typeToWrite)
- if err != nil {
- return 0, err
- }
- err = p.WriteI16(id)
- written = 1 + 2
- if err != nil {
- return 0, err
- }
- }
-
- p.lastFieldId = fieldId
- // p.lastField.Push(field.id);
- return written, nil
-}
-
-func (p *TCompactProtocol) WriteFieldEnd() error { return nil }
-
-func (p *TCompactProtocol) WriteFieldStop() error {
- err := p.writeByteDirect(STOP)
- return NewTProtocolException(err)
-}
-
-func (p *TCompactProtocol) WriteMapBegin(keyType TType, valueType TType, size int) error {
- if size == 0 {
- err := p.writeByteDirect(0)
- return NewTProtocolException(err)
- }
- _, err := p.writeVarint32(int32(size))
- if err != nil {
- return NewTProtocolException(err)
- }
- err = p.writeByteDirect(byte(p.getCompactType(keyType))<<4 | byte(p.getCompactType(valueType)))
- return NewTProtocolException(err)
-}
-
-func (p *TCompactProtocol) WriteMapEnd() error { return nil }
-
-// Write a list header.
-func (p *TCompactProtocol) WriteListBegin(elemType TType, size int) error {
- _, err := p.writeCollectionBegin(elemType, size)
- return NewTProtocolException(err)
-}
-
-func (p *TCompactProtocol) WriteListEnd() error { return nil }
-
-// Write a set header.
-func (p *TCompactProtocol) WriteSetBegin(elemType TType, size int) error {
- _, err := p.writeCollectionBegin(elemType, size)
- return NewTProtocolException(err)
-}
-
-func (p *TCompactProtocol) WriteSetEnd() error { return nil }
-
-func (p *TCompactProtocol) WriteBool(value bool) error {
- v := byte(COMPACT_BOOLEAN_FALSE)
- if value {
- v = byte(COMPACT_BOOLEAN_TRUE)
- }
- if p.booleanFieldPending {
- // we haven't written the field header yet
- _, err := p.writeFieldBeginInternal(p.booleanFieldName, BOOL, p.booleanFieldId, v)
- p.booleanFieldPending = false
- return NewTProtocolException(err)
- }
- // we're not part of a field, so just write the value.
- err := p.writeByteDirect(v)
- return NewTProtocolException(err)
-}
-
-// Write a byte. Nothing to see here!
-func (p *TCompactProtocol) WriteByte(value int8) error {
- err := p.writeByteDirect(byte(value))
- return NewTProtocolException(err)
-}
-
-// Write an I16 as a zigzag varint.
-func (p *TCompactProtocol) WriteI16(value int16) error {
- _, err := p.writeVarint32(p.int32ToZigzag(int32(value)))
- return NewTProtocolException(err)
-}
-
-// Write an i32 as a zigzag varint.
-func (p *TCompactProtocol) WriteI32(value int32) error {
- _, err := p.writeVarint32(p.int32ToZigzag(value))
- return NewTProtocolException(err)
-}
-
-// Write an i64 as a zigzag varint.
-func (p *TCompactProtocol) WriteI64(value int64) error {
- _, err := p.writeVarint64(p.int64ToZigzag(value))
- return NewTProtocolException(err)
-}
-
-// Write a double to the wire as 8 bytes.
-func (p *TCompactProtocol) WriteDouble(value float64) error {
- buf := p.buffer[0:8]
- binary.LittleEndian.PutUint64(buf, math.Float64bits(value))
- _, err := p.trans.Write(buf)
- return NewTProtocolException(err)
-}
-
-// Write a string to the wire with a varint size preceding.
-func (p *TCompactProtocol) WriteString(value string) error {
- _, e := p.writeVarint32(int32(len(value)))
- if e != nil {
- return NewTProtocolException(e)
- }
- if len(value) > 0 {
- }
- _, e = p.trans.WriteString(value)
- return e
-}
-
-// Write a byte array, using a varint for the size.
-func (p *TCompactProtocol) WriteBinary(bin []byte) error {
- _, e := p.writeVarint32(int32(len(bin)))
- if e != nil {
- return NewTProtocolException(e)
- }
- if len(bin) > 0 {
- _, e = p.trans.Write(bin)
- return NewTProtocolException(e)
- }
- return nil
-}
-
-//
-// Reading methods.
-//
-
-// Read a message header.
-func (p *TCompactProtocol) ReadMessageBegin() (name string, typeId TMessageType, seqId int32, err error) {
-
- protocolId, err := p.readByteDirect()
- if err != nil {
- return
- }
-
- if protocolId != COMPACT_PROTOCOL_ID {
- e := fmt.Errorf("Expected protocol id %02x but got %02x", COMPACT_PROTOCOL_ID, protocolId)
- return "", typeId, seqId, NewTProtocolExceptionWithType(BAD_VERSION, e)
- }
-
- versionAndType, err := p.readByteDirect()
- if err != nil {
- return
- }
-
- version := versionAndType & COMPACT_VERSION_MASK
- typeId = TMessageType((versionAndType >> COMPACT_TYPE_SHIFT_AMOUNT) & COMPACT_TYPE_BITS)
- if version != COMPACT_VERSION {
- e := fmt.Errorf("Expected version %02x but got %02x", COMPACT_VERSION, version)
- err = NewTProtocolExceptionWithType(BAD_VERSION, e)
- return
- }
- seqId, e := p.readVarint32()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- name, err = p.ReadString()
- return
-}
-
-func (p *TCompactProtocol) ReadMessageEnd() error { return nil }
-
-// Read a struct begin. There's nothing on the wire for this, but it is our
-// opportunity to push a new struct begin marker onto the field stack.
-func (p *TCompactProtocol) ReadStructBegin() (name string, err error) {
- p.lastField = append(p.lastField, p.lastFieldId)
- p.lastFieldId = 0
- return
-}
-
-// Doesn't actually consume any wire data, just removes the last field for
-// this struct from the field stack.
-func (p *TCompactProtocol) ReadStructEnd() error {
- // consume the last field we read off the wire.
- p.lastFieldId = p.lastField[len(p.lastField)-1]
- p.lastField = p.lastField[:len(p.lastField)-1]
- return nil
-}
-
-// Read a field header off the wire.
-func (p *TCompactProtocol) ReadFieldBegin() (name string, typeId TType, id int16, err error) {
- t, err := p.readByteDirect()
- if err != nil {
- return
- }
-
- // if it's a stop, then we can return immediately, as the struct is over.
- if (t & 0x0f) == STOP {
- return "", STOP, 0, nil
- }
-
- // mask off the 4 MSB of the type header. it could contain a field id delta.
- modifier := int16((t & 0xf0) >> 4)
- if modifier == 0 {
- // not a delta. look ahead for the zigzag varint field id.
- id, err = p.ReadI16()
- if err != nil {
- return
- }
- } else {
- // has a delta. add the delta to the last read field id.
- id = int16(p.lastFieldId) + modifier
- }
- typeId, e := p.getTType(tCompactType(t & 0x0f))
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
-
- // if this happens to be a boolean field, the value is encoded in the type
- if p.isBoolType(t) {
- // save the boolean value in a special instance variable.
- p.boolValue = (byte(t)&0x0f == COMPACT_BOOLEAN_TRUE)
- p.boolValueIsNotNull = true
- }
-
- // push the new field onto the field stack so we can keep the deltas going.
- p.lastFieldId = int(id)
- return
-}
-
-func (p *TCompactProtocol) ReadFieldEnd() error { return nil }
-
-// Read a map header off the wire. If the size is zero, skip reading the key
-// and value type. This means that 0-length maps will yield TMaps without the
-// "correct" types.
-func (p *TCompactProtocol) ReadMapBegin() (keyType TType, valueType TType, size int, err error) {
- size32, e := p.readVarint32()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- if size32 < 0 {
- err = invalidDataLength
- return
- }
- size = int(size32)
-
- keyAndValueType := byte(STOP)
- if size != 0 {
- keyAndValueType, err = p.readByteDirect()
- if err != nil {
- return
- }
- }
- keyType, _ = p.getTType(tCompactType(keyAndValueType >> 4))
- valueType, _ = p.getTType(tCompactType(keyAndValueType & 0xf))
- return
-}
-
-func (p *TCompactProtocol) ReadMapEnd() error { return nil }
-
-// Read a list header off the wire. If the list size is 0-14, the size will
-// be packed into the element type header. If it's a longer list, the 4 MSB
-// of the element type header will be 0xF, and a varint will follow with the
-// true size.
-func (p *TCompactProtocol) ReadListBegin() (elemType TType, size int, err error) {
- size_and_type, err := p.readByteDirect()
- if err != nil {
- return
- }
- size = int((size_and_type >> 4) & 0x0f)
- if size == 15 {
- size2, e := p.readVarint32()
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- if size2 < 0 {
- err = invalidDataLength
- return
- }
- size = int(size2)
- }
- elemType, e := p.getTType(tCompactType(size_and_type))
- if e != nil {
- err = NewTProtocolException(e)
- return
- }
- return
-}
-
-func (p *TCompactProtocol) ReadListEnd() error { return nil }
-
-// Read a set header off the wire. If the set size is 0-14, the size will
-// be packed into the element type header. If it's a longer set, the 4 MSB
-// of the element type header will be 0xF, and a varint will follow with the
-// true size.
-func (p *TCompactProtocol) ReadSetBegin() (elemType TType, size int, err error) {
- return p.ReadListBegin()
-}
-
-func (p *TCompactProtocol) ReadSetEnd() error { return nil }
-
-// Read a boolean off the wire. If this is a boolean field, the value should
-// already have been read during readFieldBegin, so we'll just consume the
-// pre-stored value. Otherwise, read a byte.
-func (p *TCompactProtocol) ReadBool() (value bool, err error) {
- if p.boolValueIsNotNull {
- p.boolValueIsNotNull = false
- return p.boolValue, nil
- }
- v, err := p.readByteDirect()
- return v == COMPACT_BOOLEAN_TRUE, err
-}
-
-// Read a single byte off the wire. Nothing interesting here.
-func (p *TCompactProtocol) ReadByte() (int8, error) {
- v, err := p.readByteDirect()
- if err != nil {
- return 0, NewTProtocolException(err)
- }
- return int8(v), err
-}
-
-// Read an i16 from the wire as a zigzag varint.
-func (p *TCompactProtocol) ReadI16() (value int16, err error) {
- v, err := p.ReadI32()
- return int16(v), err
-}
-
-// Read an i32 from the wire as a zigzag varint.
-func (p *TCompactProtocol) ReadI32() (value int32, err error) {
- v, e := p.readVarint32()
- if e != nil {
- return 0, NewTProtocolException(e)
- }
- value = p.zigzagToInt32(v)
- return value, nil
-}
-
-// Read an i64 from the wire as a zigzag varint.
-func (p *TCompactProtocol) ReadI64() (value int64, err error) {
- v, e := p.readVarint64()
- if e != nil {
- return 0, NewTProtocolException(e)
- }
- value = p.zigzagToInt64(v)
- return value, nil
-}
-
-// No magic here - just read a double off the wire.
-func (p *TCompactProtocol) ReadDouble() (value float64, err error) {
- longBits := p.buffer[0:8]
- _, e := io.ReadFull(p.trans, longBits)
- if e != nil {
- return 0.0, NewTProtocolException(e)
- }
- return math.Float64frombits(p.bytesToUint64(longBits)), nil
-}
-
-// Reads a []byte (via readBinary), and then UTF-8 decodes it.
-func (p *TCompactProtocol) ReadString() (value string, err error) {
- length, e := p.readVarint32()
- if e != nil {
- return "", NewTProtocolException(e)
- }
- if length < 0 {
- return "", invalidDataLength
- }
- if uint64(length) > p.trans.RemainingBytes() {
- return "", invalidDataLength
- }
-
- if length == 0 {
- return "", nil
- }
- var buf []byte
- if length <= int32(len(p.buffer)) {
- buf = p.buffer[0:length]
- } else {
- buf = make([]byte, length)
- }
- _, e = io.ReadFull(p.trans, buf)
- return string(buf), NewTProtocolException(e)
-}
-
-// Read a []byte from the wire.
-func (p *TCompactProtocol) ReadBinary() (value []byte, err error) {
- length, e := p.readVarint32()
- if e != nil {
- return nil, NewTProtocolException(e)
- }
- if length == 0 {
- return []byte{}, nil
- }
- if length < 0 {
- return nil, invalidDataLength
- }
- if uint64(length) > p.trans.RemainingBytes() {
- return nil, invalidDataLength
- }
-
- buf := make([]byte, length)
- _, e = io.ReadFull(p.trans, buf)
- return buf, NewTProtocolException(e)
-}
-
-func (p *TCompactProtocol) Flush() (err error) {
- return NewTProtocolException(p.trans.Flush())
-}
-
-func (p *TCompactProtocol) Skip(fieldType TType) (err error) {
- return SkipDefaultDepth(p, fieldType)
-}
-
-func (p *TCompactProtocol) Transport() TTransport {
- return p.origTransport
-}
-
-//
-// Internal writing methods
-//
-
-// Abstract method for writing the start of lists and sets. List and sets on
-// the wire differ only by the type indicator.
-func (p *TCompactProtocol) writeCollectionBegin(elemType TType, size int) (int, error) {
- if size <= 14 {
- return 1, p.writeByteDirect(byte(int32(size<<4) | int32(p.getCompactType(elemType))))
- }
- err := p.writeByteDirect(0xf0 | byte(p.getCompactType(elemType)))
- if err != nil {
- return 0, err
- }
- m, err := p.writeVarint32(int32(size))
- return 1 + m, err
-}
-
-// Write an i32 as a varint. Results in 1-5 bytes on the wire.
-// TODO(pomack): make a permanent buffer like writeVarint64?
-func (p *TCompactProtocol) writeVarint32(n int32) (int, error) {
- i32buf := p.buffer[0:5]
- idx := 0
- for {
- if (n & ^0x7F) == 0 {
- i32buf[idx] = byte(n)
- idx++
- // p.writeByteDirect(byte(n));
- break
- // return;
- } else {
- i32buf[idx] = byte((n & 0x7F) | 0x80)
- idx++
- // p.writeByteDirect(byte(((n & 0x7F) | 0x80)));
- u := uint32(n)
- n = int32(u >> 7)
- }
- }
- return p.trans.Write(i32buf[0:idx])
-}
-
-// Write an i64 as a varint. Results in 1-10 bytes on the wire.
-func (p *TCompactProtocol) writeVarint64(n int64) (int, error) {
- varint64out := p.buffer[0:10]
- idx := 0
- for {
- if (n & ^0x7F) == 0 {
- varint64out[idx] = byte(n)
- idx++
- break
- } else {
- varint64out[idx] = byte((n & 0x7F) | 0x80)
- idx++
- u := uint64(n)
- n = int64(u >> 7)
- }
- }
- return p.trans.Write(varint64out[0:idx])
-}
-
-// Convert l into a zigzag long. This allows negative numbers to be
-// represented compactly as a varint.
-func (p *TCompactProtocol) int64ToZigzag(l int64) int64 {
- return (l << 1) ^ (l >> 63)
-}
-
-// Convert l into a zigzag long. This allows negative numbers to be
-// represented compactly as a varint.
-func (p *TCompactProtocol) int32ToZigzag(n int32) int32 {
- return (n << 1) ^ (n >> 31)
-}
-
-func (p *TCompactProtocol) fixedUint64ToBytes(n uint64, buf []byte) {
- binary.LittleEndian.PutUint64(buf, n)
-}
-
-func (p *TCompactProtocol) fixedInt64ToBytes(n int64, buf []byte) {
- binary.LittleEndian.PutUint64(buf, uint64(n))
-}
-
-// Writes a byte without any possibility of all that field header nonsense.
-// Used internally by other writing methods that know they need to write a byte.
-func (p *TCompactProtocol) writeByteDirect(b byte) error {
- return p.trans.WriteByte(b)
-}
-
-// Writes a byte without any possibility of all that field header nonsense.
-func (p *TCompactProtocol) writeIntAsByteDirect(n int) (int, error) {
- return 1, p.writeByteDirect(byte(n))
-}
-
-//
-// Internal reading methods
-//
-
-// Read an i32 from the wire as a varint. The MSB of each byte is set
-// if there is another byte to follow. This can read up to 5 bytes.
-func (p *TCompactProtocol) readVarint32() (int32, error) {
- // if the wire contains the right stuff, this will just truncate the i64 we
- // read and get us the right sign.
- v, err := p.readVarint64()
- return int32(v), err
-}
-
-// Read an i64 from the wire as a proper varint. The MSB of each byte is set
-// if there is another byte to follow. This can read up to 10 bytes.
-func (p *TCompactProtocol) readVarint64() (int64, error) {
- shift := uint(0)
- result := int64(0)
- for {
- b, err := p.readByteDirect()
- if err != nil {
- return 0, err
- }
- result |= int64(b&0x7f) << shift
- if (b & 0x80) != 0x80 {
- break
- }
- shift += 7
- }
- return result, nil
-}
-
-// Read a byte, unlike ReadByte that reads Thrift-byte that is i8.
-func (p *TCompactProtocol) readByteDirect() (byte, error) {
- return p.trans.ReadByte()
-}
-
-//
-// encoding helpers
-//
-
-// Convert from zigzag int to int.
-func (p *TCompactProtocol) zigzagToInt32(n int32) int32 {
- u := uint32(n)
- return int32(u>>1) ^ -(n & 1)
-}
-
-// Convert from zigzag long to long.
-func (p *TCompactProtocol) zigzagToInt64(n int64) int64 {
- u := uint64(n)
- return int64(u>>1) ^ -(n & 1)
-}
-
-// Note that it's important that the mask bytes are long literals,
-// otherwise they'll default to ints, and when you shift an int left 56 bits,
-// you just get a messed up int.
-func (p *TCompactProtocol) bytesToInt64(b []byte) int64 {
- return int64(binary.LittleEndian.Uint64(b))
-}
-
-// Note that it's important that the mask bytes are long literals,
-// otherwise they'll default to ints, and when you shift an int left 56 bits,
-// you just get a messed up int.
-func (p *TCompactProtocol) bytesToUint64(b []byte) uint64 {
- return binary.LittleEndian.Uint64(b)
-}
-
-//
-// type testing and converting
-//
-
-func (p *TCompactProtocol) isBoolType(b byte) bool {
- return (b&0x0f) == COMPACT_BOOLEAN_TRUE || (b&0x0f) == COMPACT_BOOLEAN_FALSE
-}
-
-// Given a tCompactType constant, convert it to its corresponding
-// TType value.
-func (p *TCompactProtocol) getTType(t tCompactType) (TType, error) {
- switch byte(t) & 0x0f {
- case STOP:
- return STOP, nil
- case COMPACT_BOOLEAN_FALSE, COMPACT_BOOLEAN_TRUE:
- return BOOL, nil
- case COMPACT_BYTE:
- return BYTE, nil
- case COMPACT_I16:
- return I16, nil
- case COMPACT_I32:
- return I32, nil
- case COMPACT_I64:
- return I64, nil
- case COMPACT_DOUBLE:
- return DOUBLE, nil
- case COMPACT_BINARY:
- return STRING, nil
- case COMPACT_LIST:
- return LIST, nil
- case COMPACT_SET:
- return SET, nil
- case COMPACT_MAP:
- return MAP, nil
- case COMPACT_STRUCT:
- return STRUCT, nil
- }
- return STOP, TException(fmt.Errorf("don't know what type: %d", t&0x0f))
-}
-
-// Given a TType value, find the appropriate TCompactProtocol.Types constant.
-func (p *TCompactProtocol) getCompactType(t TType) tCompactType {
- return ttypeToCompactType[t]
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/exception.go b/vendor/github.com/uber/jaeger-client-go/thrift/exception.go
deleted file mode 100644
index ea8d6f661..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/exception.go
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "errors"
-)
-
-// Generic Thrift exception
-type TException interface {
- error
-}
-
-// Prepends additional information to an error without losing the Thrift exception interface
-func PrependError(prepend string, err error) error {
- if t, ok := err.(TTransportException); ok {
- return NewTTransportException(t.TypeId(), prepend+t.Error())
- }
- if t, ok := err.(TProtocolException); ok {
- return NewTProtocolExceptionWithType(t.TypeId(), errors.New(prepend+err.Error()))
- }
- if t, ok := err.(TApplicationException); ok {
- return NewTApplicationException(t.TypeId(), prepend+t.Error())
- }
-
- return errors.New(prepend + err.Error())
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/memory_buffer.go b/vendor/github.com/uber/jaeger-client-go/thrift/memory_buffer.go
deleted file mode 100644
index b62fd56f0..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/memory_buffer.go
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "bytes"
-)
-
-// Memory buffer-based implementation of the TTransport interface.
-type TMemoryBuffer struct {
- *bytes.Buffer
- size int
-}
-
-type TMemoryBufferTransportFactory struct {
- size int
-}
-
-func (p *TMemoryBufferTransportFactory) GetTransport(trans TTransport) TTransport {
- if trans != nil {
- t, ok := trans.(*TMemoryBuffer)
- if ok && t.size > 0 {
- return NewTMemoryBufferLen(t.size)
- }
- }
- return NewTMemoryBufferLen(p.size)
-}
-
-func NewTMemoryBufferTransportFactory(size int) *TMemoryBufferTransportFactory {
- return &TMemoryBufferTransportFactory{size: size}
-}
-
-func NewTMemoryBuffer() *TMemoryBuffer {
- return &TMemoryBuffer{Buffer: &bytes.Buffer{}, size: 0}
-}
-
-func NewTMemoryBufferLen(size int) *TMemoryBuffer {
- buf := make([]byte, 0, size)
- return &TMemoryBuffer{Buffer: bytes.NewBuffer(buf), size: size}
-}
-
-func (p *TMemoryBuffer) IsOpen() bool {
- return true
-}
-
-func (p *TMemoryBuffer) Open() error {
- return nil
-}
-
-func (p *TMemoryBuffer) Close() error {
- p.Buffer.Reset()
- return nil
-}
-
-// Flushing a memory buffer is a no-op
-func (p *TMemoryBuffer) Flush() error {
- return nil
-}
-
-func (p *TMemoryBuffer) RemainingBytes() (num_bytes uint64) {
- return uint64(p.Buffer.Len())
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/messagetype.go b/vendor/github.com/uber/jaeger-client-go/thrift/messagetype.go
deleted file mode 100644
index 25ab2e98a..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/messagetype.go
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-// Message type constants in the Thrift protocol.
-type TMessageType int32
-
-const (
- INVALID_TMESSAGE_TYPE TMessageType = 0
- CALL TMessageType = 1
- REPLY TMessageType = 2
- EXCEPTION TMessageType = 3
- ONEWAY TMessageType = 4
-)
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/numeric.go b/vendor/github.com/uber/jaeger-client-go/thrift/numeric.go
deleted file mode 100644
index aa8daa9b5..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/numeric.go
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "math"
- "strconv"
-)
-
-type Numeric interface {
- Int64() int64
- Int32() int32
- Int16() int16
- Byte() byte
- Int() int
- Float64() float64
- Float32() float32
- String() string
- isNull() bool
-}
-
-type numeric struct {
- iValue int64
- dValue float64
- sValue string
- isNil bool
-}
-
-var (
- INFINITY Numeric
- NEGATIVE_INFINITY Numeric
- NAN Numeric
- ZERO Numeric
- NUMERIC_NULL Numeric
-)
-
-func NewNumericFromDouble(dValue float64) Numeric {
- if math.IsInf(dValue, 1) {
- return INFINITY
- }
- if math.IsInf(dValue, -1) {
- return NEGATIVE_INFINITY
- }
- if math.IsNaN(dValue) {
- return NAN
- }
- iValue := int64(dValue)
- sValue := strconv.FormatFloat(dValue, 'g', 10, 64)
- isNil := false
- return &numeric{iValue: iValue, dValue: dValue, sValue: sValue, isNil: isNil}
-}
-
-func NewNumericFromI64(iValue int64) Numeric {
- dValue := float64(iValue)
- sValue := string(iValue)
- isNil := false
- return &numeric{iValue: iValue, dValue: dValue, sValue: sValue, isNil: isNil}
-}
-
-func NewNumericFromI32(iValue int32) Numeric {
- dValue := float64(iValue)
- sValue := string(iValue)
- isNil := false
- return &numeric{iValue: int64(iValue), dValue: dValue, sValue: sValue, isNil: isNil}
-}
-
-func NewNumericFromString(sValue string) Numeric {
- if sValue == INFINITY.String() {
- return INFINITY
- }
- if sValue == NEGATIVE_INFINITY.String() {
- return NEGATIVE_INFINITY
- }
- if sValue == NAN.String() {
- return NAN
- }
- iValue, _ := strconv.ParseInt(sValue, 10, 64)
- dValue, _ := strconv.ParseFloat(sValue, 64)
- isNil := len(sValue) == 0
- return &numeric{iValue: iValue, dValue: dValue, sValue: sValue, isNil: isNil}
-}
-
-func NewNumericFromJSONString(sValue string, isNull bool) Numeric {
- if isNull {
- return NewNullNumeric()
- }
- if sValue == JSON_INFINITY {
- return INFINITY
- }
- if sValue == JSON_NEGATIVE_INFINITY {
- return NEGATIVE_INFINITY
- }
- if sValue == JSON_NAN {
- return NAN
- }
- iValue, _ := strconv.ParseInt(sValue, 10, 64)
- dValue, _ := strconv.ParseFloat(sValue, 64)
- return &numeric{iValue: iValue, dValue: dValue, sValue: sValue, isNil: isNull}
-}
-
-func NewNullNumeric() Numeric {
- return &numeric{iValue: 0, dValue: 0.0, sValue: "", isNil: true}
-}
-
-func (p *numeric) Int64() int64 {
- return p.iValue
-}
-
-func (p *numeric) Int32() int32 {
- return int32(p.iValue)
-}
-
-func (p *numeric) Int16() int16 {
- return int16(p.iValue)
-}
-
-func (p *numeric) Byte() byte {
- return byte(p.iValue)
-}
-
-func (p *numeric) Int() int {
- return int(p.iValue)
-}
-
-func (p *numeric) Float64() float64 {
- return p.dValue
-}
-
-func (p *numeric) Float32() float32 {
- return float32(p.dValue)
-}
-
-func (p *numeric) String() string {
- return p.sValue
-}
-
-func (p *numeric) isNull() bool {
- return p.isNil
-}
-
-func init() {
- INFINITY = &numeric{iValue: 0, dValue: math.Inf(1), sValue: "Infinity", isNil: false}
- NEGATIVE_INFINITY = &numeric{iValue: 0, dValue: math.Inf(-1), sValue: "-Infinity", isNil: false}
- NAN = &numeric{iValue: 0, dValue: math.NaN(), sValue: "NaN", isNil: false}
- ZERO = &numeric{iValue: 0, dValue: 0, sValue: "0", isNil: false}
- NUMERIC_NULL = &numeric{iValue: 0, dValue: 0, sValue: "0", isNil: true}
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/processor.go b/vendor/github.com/uber/jaeger-client-go/thrift/processor.go
deleted file mode 100644
index ca0d3faf2..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/processor.go
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-// A processor is a generic object which operates upon an input stream and
-// writes to some output stream.
-type TProcessor interface {
- Process(in, out TProtocol) (bool, TException)
-}
-
-type TProcessorFunction interface {
- Process(seqId int32, in, out TProtocol) (bool, TException)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/protocol.go b/vendor/github.com/uber/jaeger-client-go/thrift/protocol.go
deleted file mode 100644
index 45fa202e7..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/protocol.go
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "errors"
-)
-
-const (
- VERSION_MASK = 0xffff0000
- VERSION_1 = 0x80010000
-)
-
-type TProtocol interface {
- WriteMessageBegin(name string, typeId TMessageType, seqid int32) error
- WriteMessageEnd() error
- WriteStructBegin(name string) error
- WriteStructEnd() error
- WriteFieldBegin(name string, typeId TType, id int16) error
- WriteFieldEnd() error
- WriteFieldStop() error
- WriteMapBegin(keyType TType, valueType TType, size int) error
- WriteMapEnd() error
- WriteListBegin(elemType TType, size int) error
- WriteListEnd() error
- WriteSetBegin(elemType TType, size int) error
- WriteSetEnd() error
- WriteBool(value bool) error
- WriteByte(value int8) error
- WriteI16(value int16) error
- WriteI32(value int32) error
- WriteI64(value int64) error
- WriteDouble(value float64) error
- WriteString(value string) error
- WriteBinary(value []byte) error
-
- ReadMessageBegin() (name string, typeId TMessageType, seqid int32, err error)
- ReadMessageEnd() error
- ReadStructBegin() (name string, err error)
- ReadStructEnd() error
- ReadFieldBegin() (name string, typeId TType, id int16, err error)
- ReadFieldEnd() error
- ReadMapBegin() (keyType TType, valueType TType, size int, err error)
- ReadMapEnd() error
- ReadListBegin() (elemType TType, size int, err error)
- ReadListEnd() error
- ReadSetBegin() (elemType TType, size int, err error)
- ReadSetEnd() error
- ReadBool() (value bool, err error)
- ReadByte() (value int8, err error)
- ReadI16() (value int16, err error)
- ReadI32() (value int32, err error)
- ReadI64() (value int64, err error)
- ReadDouble() (value float64, err error)
- ReadString() (value string, err error)
- ReadBinary() (value []byte, err error)
-
- Skip(fieldType TType) (err error)
- Flush() (err error)
-
- Transport() TTransport
-}
-
-// The maximum recursive depth the skip() function will traverse
-const DEFAULT_RECURSION_DEPTH = 64
-
-// Skips over the next data element from the provided input TProtocol object.
-func SkipDefaultDepth(prot TProtocol, typeId TType) (err error) {
- return Skip(prot, typeId, DEFAULT_RECURSION_DEPTH)
-}
-
-// Skips over the next data element from the provided input TProtocol object.
-func Skip(self TProtocol, fieldType TType, maxDepth int) (err error) {
-
- if maxDepth <= 0 {
- return NewTProtocolExceptionWithType( DEPTH_LIMIT, errors.New("Depth limit exceeded"))
- }
-
- switch fieldType {
- case STOP:
- return
- case BOOL:
- _, err = self.ReadBool()
- return
- case BYTE:
- _, err = self.ReadByte()
- return
- case I16:
- _, err = self.ReadI16()
- return
- case I32:
- _, err = self.ReadI32()
- return
- case I64:
- _, err = self.ReadI64()
- return
- case DOUBLE:
- _, err = self.ReadDouble()
- return
- case STRING:
- _, err = self.ReadString()
- return
- case STRUCT:
- if _, err = self.ReadStructBegin(); err != nil {
- return err
- }
- for {
- _, typeId, _, _ := self.ReadFieldBegin()
- if typeId == STOP {
- break
- }
- err := Skip(self, typeId, maxDepth-1)
- if err != nil {
- return err
- }
- self.ReadFieldEnd()
- }
- return self.ReadStructEnd()
- case MAP:
- keyType, valueType, size, err := self.ReadMapBegin()
- if err != nil {
- return err
- }
- for i := 0; i < size; i++ {
- err := Skip(self, keyType, maxDepth-1)
- if err != nil {
- return err
- }
- self.Skip(valueType)
- }
- return self.ReadMapEnd()
- case SET:
- elemType, size, err := self.ReadSetBegin()
- if err != nil {
- return err
- }
- for i := 0; i < size; i++ {
- err := Skip(self, elemType, maxDepth-1)
- if err != nil {
- return err
- }
- }
- return self.ReadSetEnd()
- case LIST:
- elemType, size, err := self.ReadListBegin()
- if err != nil {
- return err
- }
- for i := 0; i < size; i++ {
- err := Skip(self, elemType, maxDepth-1)
- if err != nil {
- return err
- }
- }
- return self.ReadListEnd()
- }
- return nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/protocol_exception.go b/vendor/github.com/uber/jaeger-client-go/thrift/protocol_exception.go
deleted file mode 100644
index 6e357ee89..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/protocol_exception.go
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "encoding/base64"
-)
-
-// Thrift Protocol exception
-type TProtocolException interface {
- TException
- TypeId() int
-}
-
-const (
- UNKNOWN_PROTOCOL_EXCEPTION = 0
- INVALID_DATA = 1
- NEGATIVE_SIZE = 2
- SIZE_LIMIT = 3
- BAD_VERSION = 4
- NOT_IMPLEMENTED = 5
- DEPTH_LIMIT = 6
-)
-
-type tProtocolException struct {
- typeId int
- message string
-}
-
-func (p *tProtocolException) TypeId() int {
- return p.typeId
-}
-
-func (p *tProtocolException) String() string {
- return p.message
-}
-
-func (p *tProtocolException) Error() string {
- return p.message
-}
-
-func NewTProtocolException(err error) TProtocolException {
- if err == nil {
- return nil
- }
- if e,ok := err.(TProtocolException); ok {
- return e
- }
- if _, ok := err.(base64.CorruptInputError); ok {
- return &tProtocolException{INVALID_DATA, err.Error()}
- }
- return &tProtocolException{UNKNOWN_PROTOCOL_EXCEPTION, err.Error()}
-}
-
-func NewTProtocolExceptionWithType(errType int, err error) TProtocolException {
- if err == nil {
- return nil
- }
- return &tProtocolException{errType, err.Error()}
-}
-
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/protocol_factory.go b/vendor/github.com/uber/jaeger-client-go/thrift/protocol_factory.go
deleted file mode 100644
index c40f796d8..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/protocol_factory.go
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-// Factory interface for constructing protocol instances.
-type TProtocolFactory interface {
- GetProtocol(trans TTransport) TProtocol
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/rich_transport.go b/vendor/github.com/uber/jaeger-client-go/thrift/rich_transport.go
deleted file mode 100644
index 8e296a99b..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/rich_transport.go
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import "io"
-
-type RichTransport struct {
- TTransport
-}
-
-// Wraps Transport to provide TRichTransport interface
-func NewTRichTransport(trans TTransport) *RichTransport {
- return &RichTransport{trans}
-}
-
-func (r *RichTransport) ReadByte() (c byte, err error) {
- return readByte(r.TTransport)
-}
-
-func (r *RichTransport) WriteByte(c byte) error {
- return writeByte(r.TTransport, c)
-}
-
-func (r *RichTransport) WriteString(s string) (n int, err error) {
- return r.Write([]byte(s))
-}
-
-func (r *RichTransport) RemainingBytes() (num_bytes uint64) {
- return r.TTransport.RemainingBytes()
-}
-
-func readByte(r io.Reader) (c byte, err error) {
- v := [1]byte{0}
- n, err := r.Read(v[0:1])
- if n > 0 && (err == nil || err == io.EOF) {
- return v[0], nil
- }
- if n > 0 && err != nil {
- return v[0], err
- }
- if err != nil {
- return 0, err
- }
- return v[0], nil
-}
-
-func writeByte(w io.Writer, c byte) error {
- v := [1]byte{c}
- _, err := w.Write(v[0:1])
- return err
-}
-
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/serializer.go b/vendor/github.com/uber/jaeger-client-go/thrift/serializer.go
deleted file mode 100644
index 771222999..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/serializer.go
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-type TSerializer struct {
- Transport *TMemoryBuffer
- Protocol TProtocol
-}
-
-type TStruct interface {
- Write(p TProtocol) error
- Read(p TProtocol) error
-}
-
-func NewTSerializer() *TSerializer {
- transport := NewTMemoryBufferLen(1024)
- protocol := NewTBinaryProtocolFactoryDefault().GetProtocol(transport)
-
- return &TSerializer{
- transport,
- protocol}
-}
-
-func (t *TSerializer) WriteString(msg TStruct) (s string, err error) {
- t.Transport.Reset()
-
- if err = msg.Write(t.Protocol); err != nil {
- return
- }
-
- if err = t.Protocol.Flush(); err != nil {
- return
- }
- if err = t.Transport.Flush(); err != nil {
- return
- }
-
- return t.Transport.String(), nil
-}
-
-func (t *TSerializer) Write(msg TStruct) (b []byte, err error) {
- t.Transport.Reset()
-
- if err = msg.Write(t.Protocol); err != nil {
- return
- }
-
- if err = t.Protocol.Flush(); err != nil {
- return
- }
-
- if err = t.Transport.Flush(); err != nil {
- return
- }
-
- b = append(b, t.Transport.Bytes()...)
- return
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/simple_json_protocol.go b/vendor/github.com/uber/jaeger-client-go/thrift/simple_json_protocol.go
deleted file mode 100644
index 412a482d0..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/simple_json_protocol.go
+++ /dev/null
@@ -1,1337 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "bufio"
- "bytes"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "io"
- "math"
- "strconv"
-)
-
-type _ParseContext int
-
-const (
- _CONTEXT_IN_TOPLEVEL _ParseContext = 1
- _CONTEXT_IN_LIST_FIRST _ParseContext = 2
- _CONTEXT_IN_LIST _ParseContext = 3
- _CONTEXT_IN_OBJECT_FIRST _ParseContext = 4
- _CONTEXT_IN_OBJECT_NEXT_KEY _ParseContext = 5
- _CONTEXT_IN_OBJECT_NEXT_VALUE _ParseContext = 6
-)
-
-func (p _ParseContext) String() string {
- switch p {
- case _CONTEXT_IN_TOPLEVEL:
- return "TOPLEVEL"
- case _CONTEXT_IN_LIST_FIRST:
- return "LIST-FIRST"
- case _CONTEXT_IN_LIST:
- return "LIST"
- case _CONTEXT_IN_OBJECT_FIRST:
- return "OBJECT-FIRST"
- case _CONTEXT_IN_OBJECT_NEXT_KEY:
- return "OBJECT-NEXT-KEY"
- case _CONTEXT_IN_OBJECT_NEXT_VALUE:
- return "OBJECT-NEXT-VALUE"
- }
- return "UNKNOWN-PARSE-CONTEXT"
-}
-
-// JSON protocol implementation for thrift.
-//
-// This protocol produces/consumes a simple output format
-// suitable for parsing by scripting languages. It should not be
-// confused with the full-featured TJSONProtocol.
-//
-type TSimpleJSONProtocol struct {
- trans TTransport
-
- parseContextStack []int
- dumpContext []int
-
- writer *bufio.Writer
- reader *bufio.Reader
-}
-
-// Constructor
-func NewTSimpleJSONProtocol(t TTransport) *TSimpleJSONProtocol {
- v := &TSimpleJSONProtocol{trans: t,
- writer: bufio.NewWriter(t),
- reader: bufio.NewReader(t),
- }
- v.parseContextStack = append(v.parseContextStack, int(_CONTEXT_IN_TOPLEVEL))
- v.dumpContext = append(v.dumpContext, int(_CONTEXT_IN_TOPLEVEL))
- return v
-}
-
-// Factory
-type TSimpleJSONProtocolFactory struct{}
-
-func (p *TSimpleJSONProtocolFactory) GetProtocol(trans TTransport) TProtocol {
- return NewTSimpleJSONProtocol(trans)
-}
-
-func NewTSimpleJSONProtocolFactory() *TSimpleJSONProtocolFactory {
- return &TSimpleJSONProtocolFactory{}
-}
-
-var (
- JSON_COMMA []byte
- JSON_COLON []byte
- JSON_LBRACE []byte
- JSON_RBRACE []byte
- JSON_LBRACKET []byte
- JSON_RBRACKET []byte
- JSON_QUOTE byte
- JSON_QUOTE_BYTES []byte
- JSON_NULL []byte
- JSON_TRUE []byte
- JSON_FALSE []byte
- JSON_INFINITY string
- JSON_NEGATIVE_INFINITY string
- JSON_NAN string
- JSON_INFINITY_BYTES []byte
- JSON_NEGATIVE_INFINITY_BYTES []byte
- JSON_NAN_BYTES []byte
- json_nonbase_map_elem_bytes []byte
-)
-
-func init() {
- JSON_COMMA = []byte{','}
- JSON_COLON = []byte{':'}
- JSON_LBRACE = []byte{'{'}
- JSON_RBRACE = []byte{'}'}
- JSON_LBRACKET = []byte{'['}
- JSON_RBRACKET = []byte{']'}
- JSON_QUOTE = '"'
- JSON_QUOTE_BYTES = []byte{'"'}
- JSON_NULL = []byte{'n', 'u', 'l', 'l'}
- JSON_TRUE = []byte{'t', 'r', 'u', 'e'}
- JSON_FALSE = []byte{'f', 'a', 'l', 's', 'e'}
- JSON_INFINITY = "Infinity"
- JSON_NEGATIVE_INFINITY = "-Infinity"
- JSON_NAN = "NaN"
- JSON_INFINITY_BYTES = []byte{'I', 'n', 'f', 'i', 'n', 'i', 't', 'y'}
- JSON_NEGATIVE_INFINITY_BYTES = []byte{'-', 'I', 'n', 'f', 'i', 'n', 'i', 't', 'y'}
- JSON_NAN_BYTES = []byte{'N', 'a', 'N'}
- json_nonbase_map_elem_bytes = []byte{']', ',', '['}
-}
-
-func jsonQuote(s string) string {
- b, _ := json.Marshal(s)
- s1 := string(b)
- return s1
-}
-
-func jsonUnquote(s string) (string, bool) {
- s1 := new(string)
- err := json.Unmarshal([]byte(s), s1)
- return *s1, err == nil
-}
-
-func mismatch(expected, actual string) error {
- return fmt.Errorf("Expected '%s' but found '%s' while parsing JSON.", expected, actual)
-}
-
-func (p *TSimpleJSONProtocol) WriteMessageBegin(name string, typeId TMessageType, seqId int32) error {
- p.resetContextStack() // THRIFT-3735
- if e := p.OutputListBegin(); e != nil {
- return e
- }
- if e := p.WriteString(name); e != nil {
- return e
- }
- if e := p.WriteByte(int8(typeId)); e != nil {
- return e
- }
- if e := p.WriteI32(seqId); e != nil {
- return e
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) WriteMessageEnd() error {
- return p.OutputListEnd()
-}
-
-func (p *TSimpleJSONProtocol) WriteStructBegin(name string) error {
- if e := p.OutputObjectBegin(); e != nil {
- return e
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) WriteStructEnd() error {
- return p.OutputObjectEnd()
-}
-
-func (p *TSimpleJSONProtocol) WriteFieldBegin(name string, typeId TType, id int16) error {
- if e := p.WriteString(name); e != nil {
- return e
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) WriteFieldEnd() error {
- //return p.OutputListEnd()
- return nil
-}
-
-func (p *TSimpleJSONProtocol) WriteFieldStop() error { return nil }
-
-func (p *TSimpleJSONProtocol) WriteMapBegin(keyType TType, valueType TType, size int) error {
- if e := p.OutputListBegin(); e != nil {
- return e
- }
- if e := p.WriteByte(int8(keyType)); e != nil {
- return e
- }
- if e := p.WriteByte(int8(valueType)); e != nil {
- return e
- }
- return p.WriteI32(int32(size))
-}
-
-func (p *TSimpleJSONProtocol) WriteMapEnd() error {
- return p.OutputListEnd()
-}
-
-func (p *TSimpleJSONProtocol) WriteListBegin(elemType TType, size int) error {
- return p.OutputElemListBegin(elemType, size)
-}
-
-func (p *TSimpleJSONProtocol) WriteListEnd() error {
- return p.OutputListEnd()
-}
-
-func (p *TSimpleJSONProtocol) WriteSetBegin(elemType TType, size int) error {
- return p.OutputElemListBegin(elemType, size)
-}
-
-func (p *TSimpleJSONProtocol) WriteSetEnd() error {
- return p.OutputListEnd()
-}
-
-func (p *TSimpleJSONProtocol) WriteBool(b bool) error {
- return p.OutputBool(b)
-}
-
-func (p *TSimpleJSONProtocol) WriteByte(b int8) error {
- return p.WriteI32(int32(b))
-}
-
-func (p *TSimpleJSONProtocol) WriteI16(v int16) error {
- return p.WriteI32(int32(v))
-}
-
-func (p *TSimpleJSONProtocol) WriteI32(v int32) error {
- return p.OutputI64(int64(v))
-}
-
-func (p *TSimpleJSONProtocol) WriteI64(v int64) error {
- return p.OutputI64(int64(v))
-}
-
-func (p *TSimpleJSONProtocol) WriteDouble(v float64) error {
- return p.OutputF64(v)
-}
-
-func (p *TSimpleJSONProtocol) WriteString(v string) error {
- return p.OutputString(v)
-}
-
-func (p *TSimpleJSONProtocol) WriteBinary(v []byte) error {
- // JSON library only takes in a string,
- // not an arbitrary byte array, to ensure bytes are transmitted
- // efficiently we must convert this into a valid JSON string
- // therefore we use base64 encoding to avoid excessive escaping/quoting
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- if _, e := p.write(JSON_QUOTE_BYTES); e != nil {
- return NewTProtocolException(e)
- }
- writer := base64.NewEncoder(base64.StdEncoding, p.writer)
- if _, e := writer.Write(v); e != nil {
- p.writer.Reset(p.trans) // THRIFT-3735
- return NewTProtocolException(e)
- }
- if e := writer.Close(); e != nil {
- return NewTProtocolException(e)
- }
- if _, e := p.write(JSON_QUOTE_BYTES); e != nil {
- return NewTProtocolException(e)
- }
- return p.OutputPostValue()
-}
-
-// Reading methods.
-func (p *TSimpleJSONProtocol) ReadMessageBegin() (name string, typeId TMessageType, seqId int32, err error) {
- p.resetContextStack() // THRIFT-3735
- if isNull, err := p.ParseListBegin(); isNull || err != nil {
- return name, typeId, seqId, err
- }
- if name, err = p.ReadString(); err != nil {
- return name, typeId, seqId, err
- }
- bTypeId, err := p.ReadByte()
- typeId = TMessageType(bTypeId)
- if err != nil {
- return name, typeId, seqId, err
- }
- if seqId, err = p.ReadI32(); err != nil {
- return name, typeId, seqId, err
- }
- return name, typeId, seqId, nil
-}
-
-func (p *TSimpleJSONProtocol) ReadMessageEnd() error {
- return p.ParseListEnd()
-}
-
-func (p *TSimpleJSONProtocol) ReadStructBegin() (name string, err error) {
- _, err = p.ParseObjectStart()
- return "", err
-}
-
-func (p *TSimpleJSONProtocol) ReadStructEnd() error {
- return p.ParseObjectEnd()
-}
-
-func (p *TSimpleJSONProtocol) ReadFieldBegin() (string, TType, int16, error) {
- if err := p.ParsePreValue(); err != nil {
- return "", STOP, 0, err
- }
- b, _ := p.reader.Peek(1)
- if len(b) > 0 {
- switch b[0] {
- case JSON_RBRACE[0]:
- return "", STOP, 0, nil
- case JSON_QUOTE:
- p.reader.ReadByte()
- name, err := p.ParseStringBody()
- // simplejson is not meant to be read back into thrift
- // - see http://wiki.apache.org/thrift/ThriftUsageJava
- // - use JSON instead
- if err != nil {
- return name, STOP, 0, err
- }
- return name, STOP, -1, p.ParsePostValue()
- /*
- if err = p.ParsePostValue(); err != nil {
- return name, STOP, 0, err
- }
- if isNull, err := p.ParseListBegin(); isNull || err != nil {
- return name, STOP, 0, err
- }
- bType, err := p.ReadByte()
- thetype := TType(bType)
- if err != nil {
- return name, thetype, 0, err
- }
- id, err := p.ReadI16()
- return name, thetype, id, err
- */
- }
- e := fmt.Errorf("Expected \"}\" or '\"', but found: '%s'", string(b))
- return "", STOP, 0, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return "", STOP, 0, NewTProtocolException(io.EOF)
-}
-
-func (p *TSimpleJSONProtocol) ReadFieldEnd() error {
- return nil
- //return p.ParseListEnd()
-}
-
-func (p *TSimpleJSONProtocol) ReadMapBegin() (keyType TType, valueType TType, size int, e error) {
- if isNull, e := p.ParseListBegin(); isNull || e != nil {
- return VOID, VOID, 0, e
- }
-
- // read keyType
- bKeyType, e := p.ReadByte()
- keyType = TType(bKeyType)
- if e != nil {
- return keyType, valueType, size, e
- }
-
- // read valueType
- bValueType, e := p.ReadByte()
- valueType = TType(bValueType)
- if e != nil {
- return keyType, valueType, size, e
- }
-
- // read size
- iSize, err := p.ReadI64()
- size = int(iSize)
- return keyType, valueType, size, err
-}
-
-func (p *TSimpleJSONProtocol) ReadMapEnd() error {
- return p.ParseListEnd()
-}
-
-func (p *TSimpleJSONProtocol) ReadListBegin() (elemType TType, size int, e error) {
- return p.ParseElemListBegin()
-}
-
-func (p *TSimpleJSONProtocol) ReadListEnd() error {
- return p.ParseListEnd()
-}
-
-func (p *TSimpleJSONProtocol) ReadSetBegin() (elemType TType, size int, e error) {
- return p.ParseElemListBegin()
-}
-
-func (p *TSimpleJSONProtocol) ReadSetEnd() error {
- return p.ParseListEnd()
-}
-
-func (p *TSimpleJSONProtocol) ReadBool() (bool, error) {
- var value bool
-
- if err := p.ParsePreValue(); err != nil {
- return value, err
- }
- f, _ := p.reader.Peek(1)
- if len(f) > 0 {
- switch f[0] {
- case JSON_TRUE[0]:
- b := make([]byte, len(JSON_TRUE))
- _, err := p.reader.Read(b)
- if err != nil {
- return false, NewTProtocolException(err)
- }
- if string(b) == string(JSON_TRUE) {
- value = true
- } else {
- e := fmt.Errorf("Expected \"true\" but found: %s", string(b))
- return value, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- break
- case JSON_FALSE[0]:
- b := make([]byte, len(JSON_FALSE))
- _, err := p.reader.Read(b)
- if err != nil {
- return false, NewTProtocolException(err)
- }
- if string(b) == string(JSON_FALSE) {
- value = false
- } else {
- e := fmt.Errorf("Expected \"false\" but found: %s", string(b))
- return value, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- break
- case JSON_NULL[0]:
- b := make([]byte, len(JSON_NULL))
- _, err := p.reader.Read(b)
- if err != nil {
- return false, NewTProtocolException(err)
- }
- if string(b) == string(JSON_NULL) {
- value = false
- } else {
- e := fmt.Errorf("Expected \"null\" but found: %s", string(b))
- return value, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- default:
- e := fmt.Errorf("Expected \"true\", \"false\", or \"null\" but found: %s", string(f))
- return value, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- }
- return value, p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) ReadByte() (int8, error) {
- v, err := p.ReadI64()
- return int8(v), err
-}
-
-func (p *TSimpleJSONProtocol) ReadI16() (int16, error) {
- v, err := p.ReadI64()
- return int16(v), err
-}
-
-func (p *TSimpleJSONProtocol) ReadI32() (int32, error) {
- v, err := p.ReadI64()
- return int32(v), err
-}
-
-func (p *TSimpleJSONProtocol) ReadI64() (int64, error) {
- v, _, err := p.ParseI64()
- return v, err
-}
-
-func (p *TSimpleJSONProtocol) ReadDouble() (float64, error) {
- v, _, err := p.ParseF64()
- return v, err
-}
-
-func (p *TSimpleJSONProtocol) ReadString() (string, error) {
- var v string
- if err := p.ParsePreValue(); err != nil {
- return v, err
- }
- f, _ := p.reader.Peek(1)
- if len(f) > 0 && f[0] == JSON_QUOTE {
- p.reader.ReadByte()
- value, err := p.ParseStringBody()
- v = value
- if err != nil {
- return v, err
- }
- } else if len(f) > 0 && f[0] == JSON_NULL[0] {
- b := make([]byte, len(JSON_NULL))
- _, err := p.reader.Read(b)
- if err != nil {
- return v, NewTProtocolException(err)
- }
- if string(b) != string(JSON_NULL) {
- e := fmt.Errorf("Expected a JSON string, found unquoted data started with %s", string(b))
- return v, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- } else {
- e := fmt.Errorf("Expected a JSON string, found unquoted data started with %s", string(f))
- return v, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return v, p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) ReadBinary() ([]byte, error) {
- var v []byte
- if err := p.ParsePreValue(); err != nil {
- return nil, err
- }
- f, _ := p.reader.Peek(1)
- if len(f) > 0 && f[0] == JSON_QUOTE {
- p.reader.ReadByte()
- value, err := p.ParseBase64EncodedBody()
- v = value
- if err != nil {
- return v, err
- }
- } else if len(f) > 0 && f[0] == JSON_NULL[0] {
- b := make([]byte, len(JSON_NULL))
- _, err := p.reader.Read(b)
- if err != nil {
- return v, NewTProtocolException(err)
- }
- if string(b) != string(JSON_NULL) {
- e := fmt.Errorf("Expected a JSON string, found unquoted data started with %s", string(b))
- return v, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- } else {
- e := fmt.Errorf("Expected a JSON string, found unquoted data started with %s", string(f))
- return v, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
-
- return v, p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) Flush() (err error) {
- return NewTProtocolException(p.writer.Flush())
-}
-
-func (p *TSimpleJSONProtocol) Skip(fieldType TType) (err error) {
- return SkipDefaultDepth(p, fieldType)
-}
-
-func (p *TSimpleJSONProtocol) Transport() TTransport {
- return p.trans
-}
-
-func (p *TSimpleJSONProtocol) OutputPreValue() error {
- cxt := _ParseContext(p.dumpContext[len(p.dumpContext)-1])
- switch cxt {
- case _CONTEXT_IN_LIST, _CONTEXT_IN_OBJECT_NEXT_KEY:
- if _, e := p.write(JSON_COMMA); e != nil {
- return NewTProtocolException(e)
- }
- break
- case _CONTEXT_IN_OBJECT_NEXT_VALUE:
- if _, e := p.write(JSON_COLON); e != nil {
- return NewTProtocolException(e)
- }
- break
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) OutputPostValue() error {
- cxt := _ParseContext(p.dumpContext[len(p.dumpContext)-1])
- switch cxt {
- case _CONTEXT_IN_LIST_FIRST:
- p.dumpContext = p.dumpContext[:len(p.dumpContext)-1]
- p.dumpContext = append(p.dumpContext, int(_CONTEXT_IN_LIST))
- break
- case _CONTEXT_IN_OBJECT_FIRST:
- p.dumpContext = p.dumpContext[:len(p.dumpContext)-1]
- p.dumpContext = append(p.dumpContext, int(_CONTEXT_IN_OBJECT_NEXT_VALUE))
- break
- case _CONTEXT_IN_OBJECT_NEXT_KEY:
- p.dumpContext = p.dumpContext[:len(p.dumpContext)-1]
- p.dumpContext = append(p.dumpContext, int(_CONTEXT_IN_OBJECT_NEXT_VALUE))
- break
- case _CONTEXT_IN_OBJECT_NEXT_VALUE:
- p.dumpContext = p.dumpContext[:len(p.dumpContext)-1]
- p.dumpContext = append(p.dumpContext, int(_CONTEXT_IN_OBJECT_NEXT_KEY))
- break
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) OutputBool(value bool) error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- var v string
- if value {
- v = string(JSON_TRUE)
- } else {
- v = string(JSON_FALSE)
- }
- switch _ParseContext(p.dumpContext[len(p.dumpContext)-1]) {
- case _CONTEXT_IN_OBJECT_FIRST, _CONTEXT_IN_OBJECT_NEXT_KEY:
- v = jsonQuote(v)
- default:
- }
- if e := p.OutputStringData(v); e != nil {
- return e
- }
- return p.OutputPostValue()
-}
-
-func (p *TSimpleJSONProtocol) OutputNull() error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- if _, e := p.write(JSON_NULL); e != nil {
- return NewTProtocolException(e)
- }
- return p.OutputPostValue()
-}
-
-func (p *TSimpleJSONProtocol) OutputF64(value float64) error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- var v string
- if math.IsNaN(value) {
- v = string(JSON_QUOTE) + JSON_NAN + string(JSON_QUOTE)
- } else if math.IsInf(value, 1) {
- v = string(JSON_QUOTE) + JSON_INFINITY + string(JSON_QUOTE)
- } else if math.IsInf(value, -1) {
- v = string(JSON_QUOTE) + JSON_NEGATIVE_INFINITY + string(JSON_QUOTE)
- } else {
- v = strconv.FormatFloat(value, 'g', -1, 64)
- switch _ParseContext(p.dumpContext[len(p.dumpContext)-1]) {
- case _CONTEXT_IN_OBJECT_FIRST, _CONTEXT_IN_OBJECT_NEXT_KEY:
- v = string(JSON_QUOTE) + v + string(JSON_QUOTE)
- default:
- }
- }
- if e := p.OutputStringData(v); e != nil {
- return e
- }
- return p.OutputPostValue()
-}
-
-func (p *TSimpleJSONProtocol) OutputI64(value int64) error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- v := strconv.FormatInt(value, 10)
- switch _ParseContext(p.dumpContext[len(p.dumpContext)-1]) {
- case _CONTEXT_IN_OBJECT_FIRST, _CONTEXT_IN_OBJECT_NEXT_KEY:
- v = jsonQuote(v)
- default:
- }
- if e := p.OutputStringData(v); e != nil {
- return e
- }
- return p.OutputPostValue()
-}
-
-func (p *TSimpleJSONProtocol) OutputString(s string) error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- if e := p.OutputStringData(jsonQuote(s)); e != nil {
- return e
- }
- return p.OutputPostValue()
-}
-
-func (p *TSimpleJSONProtocol) OutputStringData(s string) error {
- _, e := p.write([]byte(s))
- return NewTProtocolException(e)
-}
-
-func (p *TSimpleJSONProtocol) OutputObjectBegin() error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- if _, e := p.write(JSON_LBRACE); e != nil {
- return NewTProtocolException(e)
- }
- p.dumpContext = append(p.dumpContext, int(_CONTEXT_IN_OBJECT_FIRST))
- return nil
-}
-
-func (p *TSimpleJSONProtocol) OutputObjectEnd() error {
- if _, e := p.write(JSON_RBRACE); e != nil {
- return NewTProtocolException(e)
- }
- p.dumpContext = p.dumpContext[:len(p.dumpContext)-1]
- if e := p.OutputPostValue(); e != nil {
- return e
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) OutputListBegin() error {
- if e := p.OutputPreValue(); e != nil {
- return e
- }
- if _, e := p.write(JSON_LBRACKET); e != nil {
- return NewTProtocolException(e)
- }
- p.dumpContext = append(p.dumpContext, int(_CONTEXT_IN_LIST_FIRST))
- return nil
-}
-
-func (p *TSimpleJSONProtocol) OutputListEnd() error {
- if _, e := p.write(JSON_RBRACKET); e != nil {
- return NewTProtocolException(e)
- }
- p.dumpContext = p.dumpContext[:len(p.dumpContext)-1]
- if e := p.OutputPostValue(); e != nil {
- return e
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) OutputElemListBegin(elemType TType, size int) error {
- if e := p.OutputListBegin(); e != nil {
- return e
- }
- if e := p.WriteByte(int8(elemType)); e != nil {
- return e
- }
- if e := p.WriteI64(int64(size)); e != nil {
- return e
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) ParsePreValue() error {
- if e := p.readNonSignificantWhitespace(); e != nil {
- return NewTProtocolException(e)
- }
- cxt := _ParseContext(p.parseContextStack[len(p.parseContextStack)-1])
- b, _ := p.reader.Peek(1)
- switch cxt {
- case _CONTEXT_IN_LIST:
- if len(b) > 0 {
- switch b[0] {
- case JSON_RBRACKET[0]:
- return nil
- case JSON_COMMA[0]:
- p.reader.ReadByte()
- if e := p.readNonSignificantWhitespace(); e != nil {
- return NewTProtocolException(e)
- }
- return nil
- default:
- e := fmt.Errorf("Expected \"]\" or \",\" in list context, but found \"%s\"", string(b))
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- }
- break
- case _CONTEXT_IN_OBJECT_NEXT_KEY:
- if len(b) > 0 {
- switch b[0] {
- case JSON_RBRACE[0]:
- return nil
- case JSON_COMMA[0]:
- p.reader.ReadByte()
- if e := p.readNonSignificantWhitespace(); e != nil {
- return NewTProtocolException(e)
- }
- return nil
- default:
- e := fmt.Errorf("Expected \"}\" or \",\" in object context, but found \"%s\"", string(b))
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- }
- break
- case _CONTEXT_IN_OBJECT_NEXT_VALUE:
- if len(b) > 0 {
- switch b[0] {
- case JSON_COLON[0]:
- p.reader.ReadByte()
- if e := p.readNonSignificantWhitespace(); e != nil {
- return NewTProtocolException(e)
- }
- return nil
- default:
- e := fmt.Errorf("Expected \":\" in object context, but found \"%s\"", string(b))
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- }
- break
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) ParsePostValue() error {
- if e := p.readNonSignificantWhitespace(); e != nil {
- return NewTProtocolException(e)
- }
- cxt := _ParseContext(p.parseContextStack[len(p.parseContextStack)-1])
- switch cxt {
- case _CONTEXT_IN_LIST_FIRST:
- p.parseContextStack = p.parseContextStack[:len(p.parseContextStack)-1]
- p.parseContextStack = append(p.parseContextStack, int(_CONTEXT_IN_LIST))
- break
- case _CONTEXT_IN_OBJECT_FIRST, _CONTEXT_IN_OBJECT_NEXT_KEY:
- p.parseContextStack = p.parseContextStack[:len(p.parseContextStack)-1]
- p.parseContextStack = append(p.parseContextStack, int(_CONTEXT_IN_OBJECT_NEXT_VALUE))
- break
- case _CONTEXT_IN_OBJECT_NEXT_VALUE:
- p.parseContextStack = p.parseContextStack[:len(p.parseContextStack)-1]
- p.parseContextStack = append(p.parseContextStack, int(_CONTEXT_IN_OBJECT_NEXT_KEY))
- break
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) readNonSignificantWhitespace() error {
- for {
- b, _ := p.reader.Peek(1)
- if len(b) < 1 {
- return nil
- }
- switch b[0] {
- case ' ', '\r', '\n', '\t':
- p.reader.ReadByte()
- continue
- default:
- break
- }
- break
- }
- return nil
-}
-
-func (p *TSimpleJSONProtocol) ParseStringBody() (string, error) {
- line, err := p.reader.ReadString(JSON_QUOTE)
- if err != nil {
- return "", NewTProtocolException(err)
- }
- l := len(line)
- // count number of escapes to see if we need to keep going
- i := 1
- for ; i < l; i++ {
- if line[l-i-1] != '\\' {
- break
- }
- }
- if i&0x01 == 1 {
- v, ok := jsonUnquote(string(JSON_QUOTE) + line)
- if !ok {
- return "", NewTProtocolException(err)
- }
- return v, nil
- }
- s, err := p.ParseQuotedStringBody()
- if err != nil {
- return "", NewTProtocolException(err)
- }
- str := string(JSON_QUOTE) + line + s
- v, ok := jsonUnquote(str)
- if !ok {
- e := fmt.Errorf("Unable to parse as JSON string %s", str)
- return "", NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return v, nil
-}
-
-func (p *TSimpleJSONProtocol) ParseQuotedStringBody() (string, error) {
- line, err := p.reader.ReadString(JSON_QUOTE)
- if err != nil {
- return "", NewTProtocolException(err)
- }
- l := len(line)
- // count number of escapes to see if we need to keep going
- i := 1
- for ; i < l; i++ {
- if line[l-i-1] != '\\' {
- break
- }
- }
- if i&0x01 == 1 {
- return line, nil
- }
- s, err := p.ParseQuotedStringBody()
- if err != nil {
- return "", NewTProtocolException(err)
- }
- v := line + s
- return v, nil
-}
-
-func (p *TSimpleJSONProtocol) ParseBase64EncodedBody() ([]byte, error) {
- line, err := p.reader.ReadBytes(JSON_QUOTE)
- if err != nil {
- return line, NewTProtocolException(err)
- }
- line2 := line[0 : len(line)-1]
- l := len(line2)
- if (l % 4) != 0 {
- pad := 4 - (l % 4)
- fill := [...]byte{'=', '=', '='}
- line2 = append(line2, fill[:pad]...)
- l = len(line2)
- }
- output := make([]byte, base64.StdEncoding.DecodedLen(l))
- n, err := base64.StdEncoding.Decode(output, line2)
- return output[0:n], NewTProtocolException(err)
-}
-
-func (p *TSimpleJSONProtocol) ParseI64() (int64, bool, error) {
- if err := p.ParsePreValue(); err != nil {
- return 0, false, err
- }
- var value int64
- var isnull bool
- if p.safePeekContains(JSON_NULL) {
- p.reader.Read(make([]byte, len(JSON_NULL)))
- isnull = true
- } else {
- num, err := p.readNumeric()
- isnull = (num == nil)
- if !isnull {
- value = num.Int64()
- }
- if err != nil {
- return value, isnull, err
- }
- }
- return value, isnull, p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) ParseF64() (float64, bool, error) {
- if err := p.ParsePreValue(); err != nil {
- return 0, false, err
- }
- var value float64
- var isnull bool
- if p.safePeekContains(JSON_NULL) {
- p.reader.Read(make([]byte, len(JSON_NULL)))
- isnull = true
- } else {
- num, err := p.readNumeric()
- isnull = (num == nil)
- if !isnull {
- value = num.Float64()
- }
- if err != nil {
- return value, isnull, err
- }
- }
- return value, isnull, p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) ParseObjectStart() (bool, error) {
- if err := p.ParsePreValue(); err != nil {
- return false, err
- }
- var b []byte
- b, err := p.reader.Peek(1)
- if err != nil {
- return false, err
- }
- if len(b) > 0 && b[0] == JSON_LBRACE[0] {
- p.reader.ReadByte()
- p.parseContextStack = append(p.parseContextStack, int(_CONTEXT_IN_OBJECT_FIRST))
- return false, nil
- } else if p.safePeekContains(JSON_NULL) {
- return true, nil
- }
- e := fmt.Errorf("Expected '{' or null, but found '%s'", string(b))
- return false, NewTProtocolExceptionWithType(INVALID_DATA, e)
-}
-
-func (p *TSimpleJSONProtocol) ParseObjectEnd() error {
- if isNull, err := p.readIfNull(); isNull || err != nil {
- return err
- }
- cxt := _ParseContext(p.parseContextStack[len(p.parseContextStack)-1])
- if (cxt != _CONTEXT_IN_OBJECT_FIRST) && (cxt != _CONTEXT_IN_OBJECT_NEXT_KEY) {
- e := fmt.Errorf("Expected to be in the Object Context, but not in Object Context (%d)", cxt)
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- line, err := p.reader.ReadString(JSON_RBRACE[0])
- if err != nil {
- return NewTProtocolException(err)
- }
- for _, char := range line {
- switch char {
- default:
- e := fmt.Errorf("Expecting end of object \"}\", but found: \"%s\"", line)
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- case ' ', '\n', '\r', '\t', '}':
- break
- }
- }
- p.parseContextStack = p.parseContextStack[:len(p.parseContextStack)-1]
- return p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) ParseListBegin() (isNull bool, err error) {
- if e := p.ParsePreValue(); e != nil {
- return false, e
- }
- var b []byte
- b, err = p.reader.Peek(1)
- if err != nil {
- return false, err
- }
- if len(b) >= 1 && b[0] == JSON_LBRACKET[0] {
- p.parseContextStack = append(p.parseContextStack, int(_CONTEXT_IN_LIST_FIRST))
- p.reader.ReadByte()
- isNull = false
- } else if p.safePeekContains(JSON_NULL) {
- isNull = true
- } else {
- err = fmt.Errorf("Expected \"null\" or \"[\", received %q", b)
- }
- return isNull, NewTProtocolExceptionWithType(INVALID_DATA, err)
-}
-
-func (p *TSimpleJSONProtocol) ParseElemListBegin() (elemType TType, size int, e error) {
- if isNull, e := p.ParseListBegin(); isNull || e != nil {
- return VOID, 0, e
- }
- bElemType, err := p.ReadByte()
- elemType = TType(bElemType)
- if err != nil {
- return elemType, size, err
- }
- nSize, err2 := p.ReadI64()
- size = int(nSize)
- return elemType, size, err2
-}
-
-func (p *TSimpleJSONProtocol) ParseListEnd() error {
- if isNull, err := p.readIfNull(); isNull || err != nil {
- return err
- }
- cxt := _ParseContext(p.parseContextStack[len(p.parseContextStack)-1])
- if cxt != _CONTEXT_IN_LIST {
- e := fmt.Errorf("Expected to be in the List Context, but not in List Context (%d)", cxt)
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- line, err := p.reader.ReadString(JSON_RBRACKET[0])
- if err != nil {
- return NewTProtocolException(err)
- }
- for _, char := range line {
- switch char {
- default:
- e := fmt.Errorf("Expecting end of list \"]\", but found: \"%s\"", line)
- return NewTProtocolExceptionWithType(INVALID_DATA, e)
- case ' ', '\n', '\r', '\t', rune(JSON_RBRACKET[0]):
- break
- }
- }
- p.parseContextStack = p.parseContextStack[:len(p.parseContextStack)-1]
- if _ParseContext(p.parseContextStack[len(p.parseContextStack)-1]) == _CONTEXT_IN_TOPLEVEL {
- return nil
- }
- return p.ParsePostValue()
-}
-
-func (p *TSimpleJSONProtocol) readSingleValue() (interface{}, TType, error) {
- e := p.readNonSignificantWhitespace()
- if e != nil {
- return nil, VOID, NewTProtocolException(e)
- }
- b, e := p.reader.Peek(1)
- if len(b) > 0 {
- c := b[0]
- switch c {
- case JSON_NULL[0]:
- buf := make([]byte, len(JSON_NULL))
- _, e := p.reader.Read(buf)
- if e != nil {
- return nil, VOID, NewTProtocolException(e)
- }
- if string(JSON_NULL) != string(buf) {
- e = mismatch(string(JSON_NULL), string(buf))
- return nil, VOID, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return nil, VOID, nil
- case JSON_QUOTE:
- p.reader.ReadByte()
- v, e := p.ParseStringBody()
- if e != nil {
- return v, UTF8, NewTProtocolException(e)
- }
- if v == JSON_INFINITY {
- return INFINITY, DOUBLE, nil
- } else if v == JSON_NEGATIVE_INFINITY {
- return NEGATIVE_INFINITY, DOUBLE, nil
- } else if v == JSON_NAN {
- return NAN, DOUBLE, nil
- }
- return v, UTF8, nil
- case JSON_TRUE[0]:
- buf := make([]byte, len(JSON_TRUE))
- _, e := p.reader.Read(buf)
- if e != nil {
- return true, BOOL, NewTProtocolException(e)
- }
- if string(JSON_TRUE) != string(buf) {
- e := mismatch(string(JSON_TRUE), string(buf))
- return true, BOOL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return true, BOOL, nil
- case JSON_FALSE[0]:
- buf := make([]byte, len(JSON_FALSE))
- _, e := p.reader.Read(buf)
- if e != nil {
- return false, BOOL, NewTProtocolException(e)
- }
- if string(JSON_FALSE) != string(buf) {
- e := mismatch(string(JSON_FALSE), string(buf))
- return false, BOOL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return false, BOOL, nil
- case JSON_LBRACKET[0]:
- _, e := p.reader.ReadByte()
- return make([]interface{}, 0), LIST, NewTProtocolException(e)
- case JSON_LBRACE[0]:
- _, e := p.reader.ReadByte()
- return make(map[string]interface{}), STRUCT, NewTProtocolException(e)
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'e', 'E', '.', '+', '-', JSON_INFINITY[0], JSON_NAN[0]:
- // assume numeric
- v, e := p.readNumeric()
- return v, DOUBLE, e
- default:
- e := fmt.Errorf("Expected element in list but found '%s' while parsing JSON.", string(c))
- return nil, VOID, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- }
- e = fmt.Errorf("Cannot read a single element while parsing JSON.")
- return nil, VOID, NewTProtocolExceptionWithType(INVALID_DATA, e)
-
-}
-
-func (p *TSimpleJSONProtocol) readIfNull() (bool, error) {
- cont := true
- for cont {
- b, _ := p.reader.Peek(1)
- if len(b) < 1 {
- return false, nil
- }
- switch b[0] {
- default:
- return false, nil
- case JSON_NULL[0]:
- cont = false
- break
- case ' ', '\n', '\r', '\t':
- p.reader.ReadByte()
- break
- }
- }
- if p.safePeekContains(JSON_NULL) {
- p.reader.Read(make([]byte, len(JSON_NULL)))
- return true, nil
- }
- return false, nil
-}
-
-func (p *TSimpleJSONProtocol) readQuoteIfNext() {
- b, _ := p.reader.Peek(1)
- if len(b) > 0 && b[0] == JSON_QUOTE {
- p.reader.ReadByte()
- }
-}
-
-func (p *TSimpleJSONProtocol) readNumeric() (Numeric, error) {
- isNull, err := p.readIfNull()
- if isNull || err != nil {
- return NUMERIC_NULL, err
- }
- hasDecimalPoint := false
- nextCanBeSign := true
- hasE := false
- MAX_LEN := 40
- buf := bytes.NewBuffer(make([]byte, 0, MAX_LEN))
- continueFor := true
- inQuotes := false
- for continueFor {
- c, err := p.reader.ReadByte()
- if err != nil {
- if err == io.EOF {
- break
- }
- return NUMERIC_NULL, NewTProtocolException(err)
- }
- switch c {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- buf.WriteByte(c)
- nextCanBeSign = false
- case '.':
- if hasDecimalPoint {
- e := fmt.Errorf("Unable to parse number with multiple decimal points '%s.'", buf.String())
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- if hasE {
- e := fmt.Errorf("Unable to parse number with decimal points in the exponent '%s.'", buf.String())
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- buf.WriteByte(c)
- hasDecimalPoint, nextCanBeSign = true, false
- case 'e', 'E':
- if hasE {
- e := fmt.Errorf("Unable to parse number with multiple exponents '%s%c'", buf.String(), c)
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- buf.WriteByte(c)
- hasE, nextCanBeSign = true, true
- case '-', '+':
- if !nextCanBeSign {
- e := fmt.Errorf("Negative sign within number")
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- buf.WriteByte(c)
- nextCanBeSign = false
- case ' ', 0, '\t', '\n', '\r', JSON_RBRACE[0], JSON_RBRACKET[0], JSON_COMMA[0], JSON_COLON[0]:
- p.reader.UnreadByte()
- continueFor = false
- case JSON_NAN[0]:
- if buf.Len() == 0 {
- buffer := make([]byte, len(JSON_NAN))
- buffer[0] = c
- _, e := p.reader.Read(buffer[1:])
- if e != nil {
- return NUMERIC_NULL, NewTProtocolException(e)
- }
- if JSON_NAN != string(buffer) {
- e := mismatch(JSON_NAN, string(buffer))
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- if inQuotes {
- p.readQuoteIfNext()
- }
- return NAN, nil
- } else {
- e := fmt.Errorf("Unable to parse number starting with character '%c'", c)
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- case JSON_INFINITY[0]:
- if buf.Len() == 0 || (buf.Len() == 1 && buf.Bytes()[0] == '+') {
- buffer := make([]byte, len(JSON_INFINITY))
- buffer[0] = c
- _, e := p.reader.Read(buffer[1:])
- if e != nil {
- return NUMERIC_NULL, NewTProtocolException(e)
- }
- if JSON_INFINITY != string(buffer) {
- e := mismatch(JSON_INFINITY, string(buffer))
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- if inQuotes {
- p.readQuoteIfNext()
- }
- return INFINITY, nil
- } else if buf.Len() == 1 && buf.Bytes()[0] == JSON_NEGATIVE_INFINITY[0] {
- buffer := make([]byte, len(JSON_NEGATIVE_INFINITY))
- buffer[0] = JSON_NEGATIVE_INFINITY[0]
- buffer[1] = c
- _, e := p.reader.Read(buffer[2:])
- if e != nil {
- return NUMERIC_NULL, NewTProtocolException(e)
- }
- if JSON_NEGATIVE_INFINITY != string(buffer) {
- e := mismatch(JSON_NEGATIVE_INFINITY, string(buffer))
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- if inQuotes {
- p.readQuoteIfNext()
- }
- return NEGATIVE_INFINITY, nil
- } else {
- e := fmt.Errorf("Unable to parse number starting with character '%c' due to existing buffer %s", c, buf.String())
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- case JSON_QUOTE:
- if !inQuotes {
- inQuotes = true
- } else {
- break
- }
- default:
- e := fmt.Errorf("Unable to parse number starting with character '%c'", c)
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- }
- if buf.Len() == 0 {
- e := fmt.Errorf("Unable to parse number from empty string ''")
- return NUMERIC_NULL, NewTProtocolExceptionWithType(INVALID_DATA, e)
- }
- return NewNumericFromJSONString(buf.String(), false), nil
-}
-
-// Safely peeks into the buffer, reading only what is necessary
-func (p *TSimpleJSONProtocol) safePeekContains(b []byte) bool {
- for i := 0; i < len(b); i++ {
- a, _ := p.reader.Peek(i + 1)
- if len(a) == 0 || a[i] != b[i] {
- return false
- }
- }
- return true
-}
-
-// Reset the context stack to its initial state.
-func (p *TSimpleJSONProtocol) resetContextStack() {
- p.parseContextStack = []int{int(_CONTEXT_IN_TOPLEVEL)}
- p.dumpContext = []int{int(_CONTEXT_IN_TOPLEVEL)}
-}
-
-func (p *TSimpleJSONProtocol) write(b []byte) (int, error) {
- n, err := p.writer.Write(b)
- if err != nil {
- p.writer.Reset(p.trans) // THRIFT-3735
- }
- return n, err
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/transport.go b/vendor/github.com/uber/jaeger-client-go/thrift/transport.go
deleted file mode 100644
index 453899651..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/transport.go
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "errors"
- "io"
-)
-
-var errTransportInterrupted = errors.New("Transport Interrupted")
-
-type Flusher interface {
- Flush() (err error)
-}
-
-type ReadSizeProvider interface {
- RemainingBytes() (num_bytes uint64)
-}
-
-
-// Encapsulates the I/O layer
-type TTransport interface {
- io.ReadWriteCloser
- Flusher
- ReadSizeProvider
-
- // Opens the transport for communication
- Open() error
-
- // Returns true if the transport is open
- IsOpen() bool
-}
-
-type stringWriter interface {
- WriteString(s string) (n int, err error)
-}
-
-
-// This is "enchanced" transport with extra capabilities. You need to use one of these
-// to construct protocol.
-// Notably, TSocket does not implement this interface, and it is always a mistake to use
-// TSocket directly in protocol.
-type TRichTransport interface {
- io.ReadWriter
- io.ByteReader
- io.ByteWriter
- stringWriter
- Flusher
- ReadSizeProvider
-}
-
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/transport_exception.go b/vendor/github.com/uber/jaeger-client-go/thrift/transport_exception.go
deleted file mode 100644
index 9505b4461..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/transport_exception.go
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-import (
- "errors"
- "io"
-)
-
-type timeoutable interface {
- Timeout() bool
-}
-
-// Thrift Transport exception
-type TTransportException interface {
- TException
- TypeId() int
- Err() error
-}
-
-const (
- UNKNOWN_TRANSPORT_EXCEPTION = 0
- NOT_OPEN = 1
- ALREADY_OPEN = 2
- TIMED_OUT = 3
- END_OF_FILE = 4
-)
-
-type tTransportException struct {
- typeId int
- err error
-}
-
-func (p *tTransportException) TypeId() int {
- return p.typeId
-}
-
-func (p *tTransportException) Error() string {
- return p.err.Error()
-}
-
-func (p *tTransportException) Err() error {
- return p.err
-}
-
-func NewTTransportException(t int, e string) TTransportException {
- return &tTransportException{typeId: t, err: errors.New(e)}
-}
-
-func NewTTransportExceptionFromError(e error) TTransportException {
- if e == nil {
- return nil
- }
-
- if t, ok := e.(TTransportException); ok {
- return t
- }
-
- switch v := e.(type) {
- case TTransportException:
- return v
- case timeoutable:
- if v.Timeout() {
- return &tTransportException{typeId: TIMED_OUT, err: e}
- }
- }
-
- if e == io.EOF {
- return &tTransportException{typeId: END_OF_FILE, err: e}
- }
-
- return &tTransportException{typeId: UNKNOWN_TRANSPORT_EXCEPTION, err: e}
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/transport_factory.go b/vendor/github.com/uber/jaeger-client-go/thrift/transport_factory.go
deleted file mode 100644
index 533d1b437..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/transport_factory.go
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-// Factory class used to create wrapped instance of Transports.
-// This is used primarily in servers, which get Transports from
-// a ServerTransport and then may want to mutate them (i.e. create
-// a BufferedTransport from the underlying base transport)
-type TTransportFactory interface {
- GetTransport(trans TTransport) TTransport
-}
-
-type tTransportFactory struct{}
-
-// Return a wrapped instance of the base Transport.
-func (p *tTransportFactory) GetTransport(trans TTransport) TTransport {
- return trans
-}
-
-func NewTTransportFactory() TTransportFactory {
- return &tTransportFactory{}
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift/type.go b/vendor/github.com/uber/jaeger-client-go/thrift/type.go
deleted file mode 100644
index 4292ffcad..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift/type.go
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 thrift
-
-// Type constants in the Thrift protocol
-type TType byte
-
-const (
- STOP = 0
- VOID = 1
- BOOL = 2
- BYTE = 3
- I08 = 3
- DOUBLE = 4
- I16 = 6
- I32 = 8
- I64 = 10
- STRING = 11
- UTF7 = 11
- STRUCT = 12
- MAP = 13
- SET = 14
- LIST = 15
- UTF8 = 16
- UTF16 = 17
- //BINARY = 18 wrong and unusued
-)
-
-var typeNames = map[int]string{
- STOP: "STOP",
- VOID: "VOID",
- BOOL: "BOOL",
- BYTE: "BYTE",
- DOUBLE: "DOUBLE",
- I16: "I16",
- I32: "I32",
- I64: "I64",
- STRING: "STRING",
- STRUCT: "STRUCT",
- MAP: "MAP",
- SET: "SET",
- LIST: "LIST",
- UTF8: "UTF8",
- UTF16: "UTF16",
-}
-
-func (p TType) String() string {
- if s, ok := typeNames[int(p)]; ok {
- return s
- }
- return "Unknown"
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/tracer.go b/vendor/github.com/uber/jaeger-client-go/tracer.go
deleted file mode 100644
index 198c32eb4..000000000
--- a/vendor/github.com/uber/jaeger-client-go/tracer.go
+++ /dev/null
@@ -1,431 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
- "io"
- "os"
- "reflect"
- "strconv"
- "sync"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
- "github.com/uber/jaeger-client-go/internal/throttler"
- "github.com/uber/jaeger-client-go/log"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-// Tracer implements opentracing.Tracer.
-type Tracer struct {
- serviceName string
- hostIPv4 uint32 // this is for zipkin endpoint conversion
-
- sampler Sampler
- reporter Reporter
- metrics Metrics
- logger log.Logger
-
- timeNow func() time.Time
- randomNumber func() uint64
-
- options struct {
- poolSpans bool
- gen128Bit bool // whether to generate 128bit trace IDs
- zipkinSharedRPCSpan bool
- highTraceIDGenerator func() uint64 // custom high trace ID generator
- maxTagValueLength int
- // more options to come
- }
- // pool for Span objects
- spanPool sync.Pool
-
- injectors map[interface{}]Injector
- extractors map[interface{}]Extractor
-
- observer compositeObserver
-
- tags []Tag
- process Process
-
- baggageRestrictionManager baggage.RestrictionManager
- baggageSetter *baggageSetter
-
- debugThrottler throttler.Throttler
-}
-
-// NewTracer creates Tracer implementation that reports tracing to Jaeger.
-// The returned io.Closer can be used in shutdown hooks to ensure that the internal
-// queue of the Reporter is drained and all buffered spans are submitted to collectors.
-func NewTracer(
- serviceName string,
- sampler Sampler,
- reporter Reporter,
- options ...TracerOption,
-) (opentracing.Tracer, io.Closer) {
- t := &Tracer{
- serviceName: serviceName,
- sampler: sampler,
- reporter: reporter,
- injectors: make(map[interface{}]Injector),
- extractors: make(map[interface{}]Extractor),
- metrics: *NewNullMetrics(),
- spanPool: sync.Pool{New: func() interface{} {
- return &Span{}
- }},
- }
-
- for _, option := range options {
- option(t)
- }
-
- // register default injectors/extractors unless they are already provided via options
- textPropagator := newTextMapPropagator(getDefaultHeadersConfig(), t.metrics)
- t.addCodec(opentracing.TextMap, textPropagator, textPropagator)
-
- httpHeaderPropagator := newHTTPHeaderPropagator(getDefaultHeadersConfig(), t.metrics)
- t.addCodec(opentracing.HTTPHeaders, httpHeaderPropagator, httpHeaderPropagator)
-
- binaryPropagator := newBinaryPropagator(t)
- t.addCodec(opentracing.Binary, binaryPropagator, binaryPropagator)
-
- // TODO remove after TChannel supports OpenTracing
- interopPropagator := &jaegerTraceContextPropagator{tracer: t}
- t.addCodec(SpanContextFormat, interopPropagator, interopPropagator)
-
- zipkinPropagator := &zipkinPropagator{tracer: t}
- t.addCodec(ZipkinSpanFormat, zipkinPropagator, zipkinPropagator)
-
- if t.baggageRestrictionManager != nil {
- t.baggageSetter = newBaggageSetter(t.baggageRestrictionManager, &t.metrics)
- } else {
- t.baggageSetter = newBaggageSetter(baggage.NewDefaultRestrictionManager(0), &t.metrics)
- }
- if t.debugThrottler == nil {
- t.debugThrottler = throttler.DefaultThrottler{}
- }
-
- if t.randomNumber == nil {
- rng := utils.NewRand(time.Now().UnixNano())
- t.randomNumber = func() uint64 {
- return uint64(rng.Int63())
- }
- }
- if t.timeNow == nil {
- t.timeNow = time.Now
- }
- if t.logger == nil {
- t.logger = log.NullLogger
- }
- // Set tracer-level tags
- t.tags = append(t.tags, Tag{key: JaegerClientVersionTagKey, value: JaegerClientVersion})
- if hostname, err := os.Hostname(); err == nil {
- t.tags = append(t.tags, Tag{key: TracerHostnameTagKey, value: hostname})
- }
- if ip, err := utils.HostIP(); err == nil {
- t.tags = append(t.tags, Tag{key: TracerIPTagKey, value: ip.String()})
- t.hostIPv4 = utils.PackIPAsUint32(ip)
- } else {
- t.logger.Error("Unable to determine this host's IP address: " + err.Error())
- }
-
- if t.options.gen128Bit {
- if t.options.highTraceIDGenerator == nil {
- t.options.highTraceIDGenerator = t.randomNumber
- }
- } else if t.options.highTraceIDGenerator != nil {
- t.logger.Error("Overriding high trace ID generator but not generating " +
- "128 bit trace IDs, consider enabling the \"Gen128Bit\" option")
- }
- if t.options.maxTagValueLength == 0 {
- t.options.maxTagValueLength = DefaultMaxTagValueLength
- }
- t.process = Process{
- Service: serviceName,
- UUID: strconv.FormatUint(t.randomNumber(), 16),
- Tags: t.tags,
- }
- if throttler, ok := t.debugThrottler.(ProcessSetter); ok {
- throttler.SetProcess(t.process)
- }
-
- return t, t
-}
-
-// addCodec adds registers injector and extractor for given propagation format if not already defined.
-func (t *Tracer) addCodec(format interface{}, injector Injector, extractor Extractor) {
- if _, ok := t.injectors[format]; !ok {
- t.injectors[format] = injector
- }
- if _, ok := t.extractors[format]; !ok {
- t.extractors[format] = extractor
- }
-}
-
-// StartSpan implements StartSpan() method of opentracing.Tracer.
-func (t *Tracer) StartSpan(
- operationName string,
- options ...opentracing.StartSpanOption,
-) opentracing.Span {
- sso := opentracing.StartSpanOptions{}
- for _, o := range options {
- o.Apply(&sso)
- }
- return t.startSpanWithOptions(operationName, sso)
-}
-
-func (t *Tracer) startSpanWithOptions(
- operationName string,
- options opentracing.StartSpanOptions,
-) opentracing.Span {
- if options.StartTime.IsZero() {
- options.StartTime = t.timeNow()
- }
-
- // Predicate whether the given span context is a valid reference
- // which may be used as parent / debug ID / baggage items source
- isValidReference := func(ctx SpanContext) bool {
- return ctx.IsValid() || ctx.isDebugIDContainerOnly() || len(ctx.baggage) != 0
- }
-
- var references []Reference
- var parent SpanContext
- var hasParent bool // need this because `parent` is a value, not reference
- for _, ref := range options.References {
- ctx, ok := ref.ReferencedContext.(SpanContext)
- if !ok {
- t.logger.Error(fmt.Sprintf(
- "Reference contains invalid type of SpanReference: %s",
- reflect.ValueOf(ref.ReferencedContext)))
- continue
- }
- if !isValidReference(ctx) {
- continue
- }
- references = append(references, Reference{Type: ref.Type, Context: ctx})
- if !hasParent {
- parent = ctx
- hasParent = ref.Type == opentracing.ChildOfRef
- }
- }
- if !hasParent && isValidReference(parent) {
- // If ChildOfRef wasn't found but a FollowFromRef exists, use the context from
- // the FollowFromRef as the parent
- hasParent = true
- }
-
- rpcServer := false
- if v, ok := options.Tags[ext.SpanKindRPCServer.Key]; ok {
- rpcServer = (v == ext.SpanKindRPCServerEnum || v == string(ext.SpanKindRPCServerEnum))
- }
-
- var samplerTags []Tag
- var ctx SpanContext
- newTrace := false
- if !hasParent || !parent.IsValid() {
- newTrace = true
- ctx.traceID.Low = t.randomID()
- if t.options.gen128Bit {
- ctx.traceID.High = t.options.highTraceIDGenerator()
- }
- ctx.spanID = SpanID(ctx.traceID.Low)
- ctx.parentID = 0
- ctx.flags = byte(0)
- if hasParent && parent.isDebugIDContainerOnly() && t.isDebugAllowed(operationName) {
- ctx.flags |= (flagSampled | flagDebug)
- samplerTags = []Tag{{key: JaegerDebugHeader, value: parent.debugID}}
- } else if sampled, tags := t.sampler.IsSampled(ctx.traceID, operationName); sampled {
- ctx.flags |= flagSampled
- samplerTags = tags
- }
- } else {
- ctx.traceID = parent.traceID
- if rpcServer && t.options.zipkinSharedRPCSpan {
- // Support Zipkin's one-span-per-RPC model
- ctx.spanID = parent.spanID
- ctx.parentID = parent.parentID
- } else {
- ctx.spanID = SpanID(t.randomID())
- ctx.parentID = parent.spanID
- }
- ctx.flags = parent.flags
- }
- if hasParent {
- // copy baggage items
- if l := len(parent.baggage); l > 0 {
- ctx.baggage = make(map[string]string, len(parent.baggage))
- for k, v := range parent.baggage {
- ctx.baggage[k] = v
- }
- }
- }
-
- sp := t.newSpan()
- sp.context = ctx
- sp.observer = t.observer.OnStartSpan(sp, operationName, options)
- return t.startSpanInternal(
- sp,
- operationName,
- options.StartTime,
- samplerTags,
- options.Tags,
- newTrace,
- rpcServer,
- references,
- )
-}
-
-// Inject implements Inject() method of opentracing.Tracer
-func (t *Tracer) Inject(ctx opentracing.SpanContext, format interface{}, carrier interface{}) error {
- c, ok := ctx.(SpanContext)
- if !ok {
- return opentracing.ErrInvalidSpanContext
- }
- if injector, ok := t.injectors[format]; ok {
- return injector.Inject(c, carrier)
- }
- return opentracing.ErrUnsupportedFormat
-}
-
-// Extract implements Extract() method of opentracing.Tracer
-func (t *Tracer) Extract(
- format interface{},
- carrier interface{},
-) (opentracing.SpanContext, error) {
- if extractor, ok := t.extractors[format]; ok {
- return extractor.Extract(carrier)
- }
- return nil, opentracing.ErrUnsupportedFormat
-}
-
-// Close releases all resources used by the Tracer and flushes any remaining buffered spans.
-func (t *Tracer) Close() error {
- t.reporter.Close()
- t.sampler.Close()
- if mgr, ok := t.baggageRestrictionManager.(io.Closer); ok {
- mgr.Close()
- }
- if throttler, ok := t.debugThrottler.(io.Closer); ok {
- throttler.Close()
- }
- return nil
-}
-
-// Tags returns a slice of tracer-level tags.
-func (t *Tracer) Tags() []opentracing.Tag {
- tags := make([]opentracing.Tag, len(t.tags))
- for i, tag := range t.tags {
- tags[i] = opentracing.Tag{Key: tag.key, Value: tag.value}
- }
- return tags
-}
-
-// newSpan returns an instance of a clean Span object.
-// If options.PoolSpans is true, the spans are retrieved from an object pool.
-func (t *Tracer) newSpan() *Span {
- if !t.options.poolSpans {
- return &Span{}
- }
- sp := t.spanPool.Get().(*Span)
- sp.context = emptyContext
- sp.tracer = nil
- sp.tags = nil
- sp.logs = nil
- return sp
-}
-
-func (t *Tracer) startSpanInternal(
- sp *Span,
- operationName string,
- startTime time.Time,
- internalTags []Tag,
- tags opentracing.Tags,
- newTrace bool,
- rpcServer bool,
- references []Reference,
-) *Span {
- sp.tracer = t
- sp.operationName = operationName
- sp.startTime = startTime
- sp.duration = 0
- sp.references = references
- sp.firstInProcess = rpcServer || sp.context.parentID == 0
- if len(tags) > 0 || len(internalTags) > 0 {
- sp.tags = make([]Tag, len(internalTags), len(tags)+len(internalTags))
- copy(sp.tags, internalTags)
- for k, v := range tags {
- sp.observer.OnSetTag(k, v)
- if k == string(ext.SamplingPriority) && !setSamplingPriority(sp, v) {
- continue
- }
- sp.setTagNoLocking(k, v)
- }
- }
- // emit metrics
- if sp.context.IsSampled() {
- t.metrics.SpansStartedSampled.Inc(1)
- if newTrace {
- // We cannot simply check for parentID==0 because in Zipkin model the
- // server-side RPC span has the exact same trace/span/parent IDs as the
- // calling client-side span, but obviously the server side span is
- // no longer a root span of the trace.
- t.metrics.TracesStartedSampled.Inc(1)
- } else if sp.firstInProcess {
- t.metrics.TracesJoinedSampled.Inc(1)
- }
- } else {
- t.metrics.SpansStartedNotSampled.Inc(1)
- if newTrace {
- t.metrics.TracesStartedNotSampled.Inc(1)
- } else if sp.firstInProcess {
- t.metrics.TracesJoinedNotSampled.Inc(1)
- }
- }
- return sp
-}
-
-func (t *Tracer) reportSpan(sp *Span) {
- t.metrics.SpansFinished.Inc(1)
- if sp.context.IsSampled() {
- t.reporter.Report(sp)
- }
- if t.options.poolSpans {
- t.spanPool.Put(sp)
- }
-}
-
-// randomID generates a random trace/span ID, using tracer.random() generator.
-// It never returns 0.
-func (t *Tracer) randomID() uint64 {
- val := t.randomNumber()
- for val == 0 {
- val = t.randomNumber()
- }
- return val
-}
-
-// (NB) span must hold the lock before making this call
-func (t *Tracer) setBaggage(sp *Span, key, value string) {
- t.baggageSetter.setBaggage(sp, key, value)
-}
-
-// (NB) span must hold the lock before making this call
-func (t *Tracer) isDebugAllowed(operation string) bool {
- return t.debugThrottler.IsAllowed(operation)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/tracer_options.go b/vendor/github.com/uber/jaeger-client-go/tracer_options.go
deleted file mode 100644
index a90265f03..000000000
--- a/vendor/github.com/uber/jaeger-client-go/tracer_options.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
- "github.com/uber/jaeger-client-go/internal/throttler"
-)
-
-// TracerOption is a function that sets some option on the tracer
-type TracerOption func(tracer *Tracer)
-
-// TracerOptions is a factory for all available TracerOption's
-var TracerOptions tracerOptions
-
-type tracerOptions struct{}
-
-// Metrics creates a TracerOption that initializes Metrics on the tracer,
-// which is used to emit statistics.
-func (tracerOptions) Metrics(m *Metrics) TracerOption {
- return func(tracer *Tracer) {
- tracer.metrics = *m
- }
-}
-
-// Logger creates a TracerOption that gives the tracer a Logger.
-func (tracerOptions) Logger(logger Logger) TracerOption {
- return func(tracer *Tracer) {
- tracer.logger = logger
- }
-}
-
-func (tracerOptions) CustomHeaderKeys(headerKeys *HeadersConfig) TracerOption {
- return func(tracer *Tracer) {
- if headerKeys == nil {
- return
- }
- textPropagator := newTextMapPropagator(headerKeys.applyDefaults(), tracer.metrics)
- tracer.addCodec(opentracing.TextMap, textPropagator, textPropagator)
-
- httpHeaderPropagator := newHTTPHeaderPropagator(headerKeys.applyDefaults(), tracer.metrics)
- tracer.addCodec(opentracing.HTTPHeaders, httpHeaderPropagator, httpHeaderPropagator)
- }
-}
-
-// TimeNow creates a TracerOption that gives the tracer a function
-// used to generate timestamps for spans.
-func (tracerOptions) TimeNow(timeNow func() time.Time) TracerOption {
- return func(tracer *Tracer) {
- tracer.timeNow = timeNow
- }
-}
-
-// RandomNumber creates a TracerOption that gives the tracer
-// a thread-safe random number generator function for generating trace IDs.
-func (tracerOptions) RandomNumber(randomNumber func() uint64) TracerOption {
- return func(tracer *Tracer) {
- tracer.randomNumber = randomNumber
- }
-}
-
-// PoolSpans creates a TracerOption that tells the tracer whether it should use
-// an object pool to minimize span allocations.
-// This should be used with care, only if the service is not running any async tasks
-// that can access parent spans after those spans have been finished.
-func (tracerOptions) PoolSpans(poolSpans bool) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.poolSpans = poolSpans
- }
-}
-
-// Deprecated: HostIPv4 creates a TracerOption that identifies the current service/process.
-// If not set, the factory method will obtain the current IP address.
-// The TracerOption is deprecated; the tracer will attempt to automatically detect the IP.
-func (tracerOptions) HostIPv4(hostIPv4 uint32) TracerOption {
- return func(tracer *Tracer) {
- tracer.hostIPv4 = hostIPv4
- }
-}
-
-func (tracerOptions) Injector(format interface{}, injector Injector) TracerOption {
- return func(tracer *Tracer) {
- tracer.injectors[format] = injector
- }
-}
-
-func (tracerOptions) Extractor(format interface{}, extractor Extractor) TracerOption {
- return func(tracer *Tracer) {
- tracer.extractors[format] = extractor
- }
-}
-
-func (t tracerOptions) Observer(observer Observer) TracerOption {
- return t.ContribObserver(&oldObserver{obs: observer})
-}
-
-func (tracerOptions) ContribObserver(observer ContribObserver) TracerOption {
- return func(tracer *Tracer) {
- tracer.observer.append(observer)
- }
-}
-
-func (tracerOptions) Gen128Bit(gen128Bit bool) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.gen128Bit = gen128Bit
- }
-}
-
-func (tracerOptions) HighTraceIDGenerator(highTraceIDGenerator func() uint64) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.highTraceIDGenerator = highTraceIDGenerator
- }
-}
-
-func (tracerOptions) MaxTagValueLength(maxTagValueLength int) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.maxTagValueLength = maxTagValueLength
- }
-}
-
-func (tracerOptions) ZipkinSharedRPCSpan(zipkinSharedRPCSpan bool) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.zipkinSharedRPCSpan = zipkinSharedRPCSpan
- }
-}
-
-func (tracerOptions) Tag(key string, value interface{}) TracerOption {
- return func(tracer *Tracer) {
- tracer.tags = append(tracer.tags, Tag{key: key, value: value})
- }
-}
-
-func (tracerOptions) BaggageRestrictionManager(mgr baggage.RestrictionManager) TracerOption {
- return func(tracer *Tracer) {
- tracer.baggageRestrictionManager = mgr
- }
-}
-
-func (tracerOptions) DebugThrottler(throttler throttler.Throttler) TracerOption {
- return func(tracer *Tracer) {
- tracer.debugThrottler = throttler
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/transport.go b/vendor/github.com/uber/jaeger-client-go/transport.go
deleted file mode 100644
index c5f5b1955..000000000
--- a/vendor/github.com/uber/jaeger-client-go/transport.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "io"
-)
-
-// Transport abstracts the method of sending spans out of process.
-// Implementations are NOT required to be thread-safe; the RemoteReporter
-// is expected to only call methods on the Transport from the same go-routine.
-type Transport interface {
- // Append converts the span to the wire representation and adds it
- // to sender's internal buffer. If the buffer exceeds its designated
- // size, the transport should call Flush() and return the number of spans
- // flushed, otherwise return 0. If error is returned, the returned number
- // of spans is treated as failed span, and reported to metrics accordingly.
- Append(span *Span) (int, error)
-
- // Flush submits the internal buffer to the remote server. It returns the
- // number of spans flushed. If error is returned, the returned number of
- // spans is treated as failed span, and reported to metrics accordingly.
- Flush() (int, error)
-
- io.Closer
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/transport_udp.go b/vendor/github.com/uber/jaeger-client-go/transport_udp.go
deleted file mode 100644
index 7b9ccf937..000000000
--- a/vendor/github.com/uber/jaeger-client-go/transport_udp.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "errors"
- "fmt"
-
- "github.com/uber/jaeger-client-go/thrift"
-
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-// Empirically obtained constant for how many bytes in the message are used for envelope.
-// The total datagram size is:
-// sizeof(Span) * numSpans + processByteSize + emitBatchOverhead <= maxPacketSize
-// There is a unit test `TestEmitBatchOverhead` that validates this number.
-// Note that due to the use of Compact Thrift protocol, overhead grows with the number of spans
-// in the batch, because the length of the list is encoded as varint32, as well as SeqId.
-const emitBatchOverhead = 30
-
-var errSpanTooLarge = errors.New("Span is too large")
-
-type udpSender struct {
- client *utils.AgentClientUDP
- maxPacketSize int // max size of datagram in bytes
- maxSpanBytes int // max number of bytes to record spans (excluding envelope) in the datagram
- byteBufferSize int // current number of span bytes accumulated in the buffer
- spanBuffer []*j.Span // spans buffered before a flush
- thriftBuffer *thrift.TMemoryBuffer // buffer used to calculate byte size of a span
- thriftProtocol thrift.TProtocol
- process *j.Process
- processByteSize int
-}
-
-// NewUDPTransport creates a reporter that submits spans to jaeger-agent
-func NewUDPTransport(hostPort string, maxPacketSize int) (Transport, error) {
- if len(hostPort) == 0 {
- hostPort = fmt.Sprintf("%s:%d", DefaultUDPSpanServerHost, DefaultUDPSpanServerPort)
- }
- if maxPacketSize == 0 {
- maxPacketSize = utils.UDPPacketMaxLength
- }
-
- protocolFactory := thrift.NewTCompactProtocolFactory()
-
- // Each span is first written to thriftBuffer to determine its size in bytes.
- thriftBuffer := thrift.NewTMemoryBufferLen(maxPacketSize)
- thriftProtocol := protocolFactory.GetProtocol(thriftBuffer)
-
- client, err := utils.NewAgentClientUDP(hostPort, maxPacketSize)
- if err != nil {
- return nil, err
- }
-
- sender := &udpSender{
- client: client,
- maxSpanBytes: maxPacketSize - emitBatchOverhead,
- thriftBuffer: thriftBuffer,
- thriftProtocol: thriftProtocol}
- return sender, nil
-}
-
-func (s *udpSender) calcSizeOfSerializedThrift(thriftStruct thrift.TStruct) int {
- s.thriftBuffer.Reset()
- thriftStruct.Write(s.thriftProtocol)
- return s.thriftBuffer.Len()
-}
-
-func (s *udpSender) Append(span *Span) (int, error) {
- if s.process == nil {
- s.process = BuildJaegerProcessThrift(span)
- s.processByteSize = s.calcSizeOfSerializedThrift(s.process)
- s.byteBufferSize += s.processByteSize
- }
- jSpan := BuildJaegerThrift(span)
- spanSize := s.calcSizeOfSerializedThrift(jSpan)
- if spanSize > s.maxSpanBytes {
- return 1, errSpanTooLarge
- }
-
- s.byteBufferSize += spanSize
- if s.byteBufferSize <= s.maxSpanBytes {
- s.spanBuffer = append(s.spanBuffer, jSpan)
- if s.byteBufferSize < s.maxSpanBytes {
- return 0, nil
- }
- return s.Flush()
- }
- // the latest span did not fit in the buffer
- n, err := s.Flush()
- s.spanBuffer = append(s.spanBuffer, jSpan)
- s.byteBufferSize = spanSize + s.processByteSize
- return n, err
-}
-
-func (s *udpSender) Flush() (int, error) {
- n := len(s.spanBuffer)
- if n == 0 {
- return 0, nil
- }
- err := s.client.EmitBatch(&j.Batch{Process: s.process, Spans: s.spanBuffer})
- s.resetBuffers()
-
- return n, err
-}
-
-func (s *udpSender) Close() error {
- return s.client.Close()
-}
-
-func (s *udpSender) resetBuffers() {
- for i := range s.spanBuffer {
- s.spanBuffer[i] = nil
- }
- s.spanBuffer = s.spanBuffer[:0]
- s.byteBufferSize = s.processByteSize
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/utils/http_json.go b/vendor/github.com/uber/jaeger-client-go/utils/http_json.go
deleted file mode 100644
index 237211f82..000000000
--- a/vendor/github.com/uber/jaeger-client-go/utils/http_json.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 utils
-
-import (
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
-)
-
-// GetJSON makes an HTTP call to the specified URL and parses the returned JSON into `out`.
-func GetJSON(url string, out interface{}) error {
- resp, err := http.Get(url)
- if err != nil {
- return err
- }
- return ReadJSON(resp, out)
-}
-
-// ReadJSON reads JSON from http.Response and parses it into `out`
-func ReadJSON(resp *http.Response, out interface{}) error {
- defer resp.Body.Close()
-
- if resp.StatusCode >= 400 {
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return err
- }
-
- return fmt.Errorf("StatusCode: %d, Body: %s", resp.StatusCode, body)
- }
-
- if out == nil {
- io.Copy(ioutil.Discard, resp.Body)
- return nil
- }
-
- decoder := json.NewDecoder(resp.Body)
- return decoder.Decode(out)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/utils/localip.go b/vendor/github.com/uber/jaeger-client-go/utils/localip.go
deleted file mode 100644
index b51af7713..000000000
--- a/vendor/github.com/uber/jaeger-client-go/utils/localip.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 utils
-
-import (
- "errors"
- "net"
-)
-
-// This code is borrowed from https://github.com/uber/tchannel-go/blob/dev/localip.go
-
-// scoreAddr scores how likely the given addr is to be a remote address and returns the
-// IP to use when listening. Any address which receives a negative score should not be used.
-// Scores are calculated as:
-// -1 for any unknown IP addresses.
-// +300 for IPv4 addresses
-// +100 for non-local addresses, extra +100 for "up" interaces.
-func scoreAddr(iface net.Interface, addr net.Addr) (int, net.IP) {
- var ip net.IP
- if netAddr, ok := addr.(*net.IPNet); ok {
- ip = netAddr.IP
- } else if netIP, ok := addr.(*net.IPAddr); ok {
- ip = netIP.IP
- } else {
- return -1, nil
- }
-
- var score int
- if ip.To4() != nil {
- score += 300
- }
- if iface.Flags&net.FlagLoopback == 0 && !ip.IsLoopback() {
- score += 100
- if iface.Flags&net.FlagUp != 0 {
- score += 100
- }
- }
- return score, ip
-}
-
-// HostIP tries to find an IP that can be used by other machines to reach this machine.
-func HostIP() (net.IP, error) {
- interfaces, err := net.Interfaces()
- if err != nil {
- return nil, err
- }
-
- bestScore := -1
- var bestIP net.IP
- // Select the highest scoring IP as the best IP.
- for _, iface := range interfaces {
- addrs, err := iface.Addrs()
- if err != nil {
- // Skip this interface if there is an error.
- continue
- }
-
- for _, addr := range addrs {
- score, ip := scoreAddr(iface, addr)
- if score > bestScore {
- bestScore = score
- bestIP = ip
- }
- }
- }
-
- if bestScore == -1 {
- return nil, errors.New("no addresses to listen on")
- }
-
- return bestIP, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/utils/rand.go b/vendor/github.com/uber/jaeger-client-go/utils/rand.go
deleted file mode 100644
index 9875f7f55..000000000
--- a/vendor/github.com/uber/jaeger-client-go/utils/rand.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 utils
-
-import (
- "math/rand"
- "sync"
-)
-
-// lockedSource allows a random number generator to be used by multiple goroutines concurrently.
-// The code is very similar to math/rand.lockedSource, which is unfortunately not exposed.
-type lockedSource struct {
- mut sync.Mutex
- src rand.Source
-}
-
-// NewRand returns a rand.Rand that is threadsafe.
-func NewRand(seed int64) *rand.Rand {
- return rand.New(&lockedSource{src: rand.NewSource(seed)})
-}
-
-func (r *lockedSource) Int63() (n int64) {
- r.mut.Lock()
- n = r.src.Int63()
- r.mut.Unlock()
- return
-}
-
-// Seed implements Seed() of Source
-func (r *lockedSource) Seed(seed int64) {
- r.mut.Lock()
- r.src.Seed(seed)
- r.mut.Unlock()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/utils/rate_limiter.go b/vendor/github.com/uber/jaeger-client-go/utils/rate_limiter.go
deleted file mode 100644
index 1b8db9758..000000000
--- a/vendor/github.com/uber/jaeger-client-go/utils/rate_limiter.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 utils
-
-import (
- "sync"
- "time"
-)
-
-// RateLimiter is a filter used to check if a message that is worth itemCost units is within the rate limits.
-type RateLimiter interface {
- CheckCredit(itemCost float64) bool
-}
-
-type rateLimiter struct {
- sync.Mutex
-
- creditsPerSecond float64
- balance float64
- maxBalance float64
- lastTick time.Time
-
- timeNow func() time.Time
-}
-
-// NewRateLimiter creates a new rate limiter based on leaky bucket algorithm, formulated in terms of a
-// credits balance that is replenished every time CheckCredit() method is called (tick) by the amount proportional
-// to the time elapsed since the last tick, up to max of creditsPerSecond. A call to CheckCredit() takes a cost
-// of an item we want to pay with the balance. If the balance exceeds the cost of the item, the item is "purchased"
-// and the balance reduced, indicated by returned value of true. Otherwise the balance is unchanged and return false.
-//
-// This can be used to limit a rate of messages emitted by a service by instantiating the Rate Limiter with the
-// max number of messages a service is allowed to emit per second, and calling CheckCredit(1.0) for each message
-// to determine if the message is within the rate limit.
-//
-// It can also be used to limit the rate of traffic in bytes, by setting creditsPerSecond to desired throughput
-// as bytes/second, and calling CheckCredit() with the actual message size.
-func NewRateLimiter(creditsPerSecond, maxBalance float64) RateLimiter {
- return &rateLimiter{
- creditsPerSecond: creditsPerSecond,
- balance: maxBalance,
- maxBalance: maxBalance,
- lastTick: time.Now(),
- timeNow: time.Now}
-}
-
-func (b *rateLimiter) CheckCredit(itemCost float64) bool {
- b.Lock()
- defer b.Unlock()
- // calculate how much time passed since the last tick, and update current tick
- currentTime := b.timeNow()
- elapsedTime := currentTime.Sub(b.lastTick)
- b.lastTick = currentTime
- // calculate how much credit have we accumulated since the last tick
- b.balance += elapsedTime.Seconds() * b.creditsPerSecond
- if b.balance > b.maxBalance {
- b.balance = b.maxBalance
- }
- // if we have enough credits to pay for current item, then reduce balance and allow
- if b.balance >= itemCost {
- b.balance -= itemCost
- return true
- }
- return false
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/utils/udp_client.go b/vendor/github.com/uber/jaeger-client-go/utils/udp_client.go
deleted file mode 100644
index 6f042073d..000000000
--- a/vendor/github.com/uber/jaeger-client-go/utils/udp_client.go
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 utils
-
-import (
- "errors"
- "fmt"
- "io"
- "net"
-
- "github.com/uber/jaeger-client-go/thrift"
-
- "github.com/uber/jaeger-client-go/thrift-gen/agent"
- "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/thrift-gen/zipkincore"
-)
-
-// UDPPacketMaxLength is the max size of UDP packet we want to send, synced with jaeger-agent
-const UDPPacketMaxLength = 65000
-
-// AgentClientUDP is a UDP client to Jaeger agent that implements agent.Agent interface.
-type AgentClientUDP struct {
- agent.Agent
- io.Closer
-
- connUDP *net.UDPConn
- client *agent.AgentClient
- maxPacketSize int // max size of datagram in bytes
- thriftBuffer *thrift.TMemoryBuffer // buffer used to calculate byte size of a span
-}
-
-// NewAgentClientUDP creates a client that sends spans to Jaeger Agent over UDP.
-func NewAgentClientUDP(hostPort string, maxPacketSize int) (*AgentClientUDP, error) {
- if maxPacketSize == 0 {
- maxPacketSize = UDPPacketMaxLength
- }
-
- thriftBuffer := thrift.NewTMemoryBufferLen(maxPacketSize)
- protocolFactory := thrift.NewTCompactProtocolFactory()
- client := agent.NewAgentClientFactory(thriftBuffer, protocolFactory)
-
- destAddr, err := net.ResolveUDPAddr("udp", hostPort)
- if err != nil {
- return nil, err
- }
-
- connUDP, err := net.DialUDP(destAddr.Network(), nil, destAddr)
- if err != nil {
- return nil, err
- }
- if err := connUDP.SetWriteBuffer(maxPacketSize); err != nil {
- return nil, err
- }
-
- clientUDP := &AgentClientUDP{
- connUDP: connUDP,
- client: client,
- maxPacketSize: maxPacketSize,
- thriftBuffer: thriftBuffer}
- return clientUDP, nil
-}
-
-// EmitZipkinBatch implements EmitZipkinBatch() of Agent interface
-func (a *AgentClientUDP) EmitZipkinBatch(spans []*zipkincore.Span) error {
- return errors.New("Not implemented")
-}
-
-// EmitBatch implements EmitBatch() of Agent interface
-func (a *AgentClientUDP) EmitBatch(batch *jaeger.Batch) error {
- a.thriftBuffer.Reset()
- a.client.SeqId = 0 // we have no need for distinct SeqIds for our one-way UDP messages
- if err := a.client.EmitBatch(batch); err != nil {
- return err
- }
- if a.thriftBuffer.Len() > a.maxPacketSize {
- return fmt.Errorf("Data does not fit within one UDP packet; size %d, max %d, spans %d",
- a.thriftBuffer.Len(), a.maxPacketSize, len(batch.Spans))
- }
- _, err := a.connUDP.Write(a.thriftBuffer.Bytes())
- return err
-}
-
-// Close implements Close() of io.Closer and closes the underlying UDP connection.
-func (a *AgentClientUDP) Close() error {
- return a.connUDP.Close()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/utils/utils.go b/vendor/github.com/uber/jaeger-client-go/utils/utils.go
deleted file mode 100644
index ac3c325d1..000000000
--- a/vendor/github.com/uber/jaeger-client-go/utils/utils.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 utils
-
-import (
- "encoding/binary"
- "errors"
- "net"
- "strconv"
- "strings"
- "time"
-)
-
-var (
- // ErrEmptyIP an error for empty ip strings
- ErrEmptyIP = errors.New("empty string given for ip")
-
- // ErrNotHostColonPort an error for invalid host port string
- ErrNotHostColonPort = errors.New("expecting host:port")
-
- // ErrNotFourOctets an error for the wrong number of octets after splitting a string
- ErrNotFourOctets = errors.New("Wrong number of octets")
-)
-
-// ParseIPToUint32 converts a string ip (e.g. "x.y.z.w") to an uint32
-func ParseIPToUint32(ip string) (uint32, error) {
- if ip == "" {
- return 0, ErrEmptyIP
- }
-
- if ip == "localhost" {
- return 127<<24 | 1, nil
- }
-
- octets := strings.Split(ip, ".")
- if len(octets) != 4 {
- return 0, ErrNotFourOctets
- }
-
- var intIP uint32
- for i := 0; i < 4; i++ {
- octet, err := strconv.Atoi(octets[i])
- if err != nil {
- return 0, err
- }
- intIP = (intIP << 8) | uint32(octet)
- }
-
- return intIP, nil
-}
-
-// ParsePort converts port number from string to uin16
-func ParsePort(portString string) (uint16, error) {
- port, err := strconv.ParseUint(portString, 10, 16)
- return uint16(port), err
-}
-
-// PackIPAsUint32 packs an IPv4 as uint32
-func PackIPAsUint32(ip net.IP) uint32 {
- if ipv4 := ip.To4(); ipv4 != nil {
- return binary.BigEndian.Uint32(ipv4)
- }
- return 0
-}
-
-// TimeToMicrosecondsSinceEpochInt64 converts Go time.Time to a long
-// representing time since epoch in microseconds, which is used expected
-// in the Jaeger spans encoded as Thrift.
-func TimeToMicrosecondsSinceEpochInt64(t time.Time) int64 {
- // ^^^ Passing time.Time by value is faster than passing a pointer!
- // BenchmarkTimeByValue-8 2000000000 1.37 ns/op
- // BenchmarkTimeByPtr-8 2000000000 1.98 ns/op
-
- return t.UnixNano() / 1000
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/zipkin.go b/vendor/github.com/uber/jaeger-client-go/zipkin.go
deleted file mode 100644
index 636952b7f..000000000
--- a/vendor/github.com/uber/jaeger-client-go/zipkin.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/opentracing/opentracing-go"
-)
-
-// ZipkinSpanFormat is an OpenTracing carrier format constant
-const ZipkinSpanFormat = "zipkin-span-format"
-
-// ExtractableZipkinSpan is a type of Carrier used for integration with Zipkin-aware
-// RPC frameworks (like TChannel). It does not support baggage, only trace IDs.
-type ExtractableZipkinSpan interface {
- TraceID() uint64
- SpanID() uint64
- ParentID() uint64
- Flags() byte
-}
-
-// InjectableZipkinSpan is a type of Carrier used for integration with Zipkin-aware
-// RPC frameworks (like TChannel). It does not support baggage, only trace IDs.
-type InjectableZipkinSpan interface {
- SetTraceID(traceID uint64)
- SetSpanID(spanID uint64)
- SetParentID(parentID uint64)
- SetFlags(flags byte)
-}
-
-type zipkinPropagator struct {
- tracer *Tracer
-}
-
-func (p *zipkinPropagator) Inject(
- ctx SpanContext,
- abstractCarrier interface{},
-) error {
- carrier, ok := abstractCarrier.(InjectableZipkinSpan)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- carrier.SetTraceID(ctx.TraceID().Low) // TODO this cannot work with 128bit IDs
- carrier.SetSpanID(uint64(ctx.SpanID()))
- carrier.SetParentID(uint64(ctx.ParentID()))
- carrier.SetFlags(ctx.flags)
- return nil
-}
-
-func (p *zipkinPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- carrier, ok := abstractCarrier.(ExtractableZipkinSpan)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- if carrier.TraceID() == 0 {
- return emptyContext, opentracing.ErrSpanContextNotFound
- }
- var ctx SpanContext
- ctx.traceID.Low = carrier.TraceID()
- ctx.spanID = SpanID(carrier.SpanID())
- ctx.parentID = SpanID(carrier.ParentID())
- ctx.flags = carrier.Flags()
- return ctx, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go b/vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go
deleted file mode 100644
index dce58b433..000000000
--- a/vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go
+++ /dev/null
@@ -1,322 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "encoding/binary"
- "fmt"
- "time"
-
- "github.com/opentracing/opentracing-go/ext"
-
- "github.com/uber/jaeger-client-go/internal/spanlog"
- z "github.com/uber/jaeger-client-go/thrift-gen/zipkincore"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-const (
- // Zipkin UI does not work well with non-string tag values
- allowPackedNumbers = false
-)
-
-var specialTagHandlers = map[string]func(*zipkinSpan, interface{}){
- string(ext.SpanKind): setSpanKind,
- string(ext.PeerHostIPv4): setPeerIPv4,
- string(ext.PeerPort): setPeerPort,
- string(ext.PeerService): setPeerService,
- TracerIPTagKey: removeTag,
-}
-
-// BuildZipkinThrift builds thrift span based on internal span.
-func BuildZipkinThrift(s *Span) *z.Span {
- span := &zipkinSpan{Span: s}
- span.handleSpecialTags()
- parentID := int64(span.context.parentID)
- var ptrParentID *int64
- if parentID != 0 {
- ptrParentID = &parentID
- }
- timestamp := utils.TimeToMicrosecondsSinceEpochInt64(span.startTime)
- duration := span.duration.Nanoseconds() / int64(time.Microsecond)
- endpoint := &z.Endpoint{
- ServiceName: span.tracer.serviceName,
- Ipv4: int32(span.tracer.hostIPv4)}
- thriftSpan := &z.Span{
- TraceID: int64(span.context.traceID.Low), // TODO upgrade zipkin thrift and use TraceIdHigh
- ID: int64(span.context.spanID),
- ParentID: ptrParentID,
- Name: span.operationName,
- Timestamp: &timestamp,
- Duration: &duration,
- Debug: span.context.IsDebug(),
- Annotations: buildAnnotations(span, endpoint),
- BinaryAnnotations: buildBinaryAnnotations(span, endpoint)}
- return thriftSpan
-}
-
-func buildAnnotations(span *zipkinSpan, endpoint *z.Endpoint) []*z.Annotation {
- // automatically adding 2 Zipkin CoreAnnotations
- annotations := make([]*z.Annotation, 0, 2+len(span.logs))
- var startLabel, endLabel string
- if span.spanKind == string(ext.SpanKindRPCClientEnum) {
- startLabel, endLabel = z.CLIENT_SEND, z.CLIENT_RECV
- } else if span.spanKind == string(ext.SpanKindRPCServerEnum) {
- startLabel, endLabel = z.SERVER_RECV, z.SERVER_SEND
- }
- if !span.startTime.IsZero() && startLabel != "" {
- start := &z.Annotation{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(span.startTime),
- Value: startLabel,
- Host: endpoint}
- annotations = append(annotations, start)
- if span.duration != 0 {
- endTs := span.startTime.Add(span.duration)
- end := &z.Annotation{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(endTs),
- Value: endLabel,
- Host: endpoint}
- annotations = append(annotations, end)
- }
- }
- for _, log := range span.logs {
- anno := &z.Annotation{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(log.Timestamp),
- Host: endpoint}
- if content, err := spanlog.MaterializeWithJSON(log.Fields); err == nil {
- anno.Value = truncateString(string(content), span.tracer.options.maxTagValueLength)
- } else {
- anno.Value = err.Error()
- }
- annotations = append(annotations, anno)
- }
- return annotations
-}
-
-func buildBinaryAnnotations(span *zipkinSpan, endpoint *z.Endpoint) []*z.BinaryAnnotation {
- // automatically adding local component or server/client address tag, and client version
- annotations := make([]*z.BinaryAnnotation, 0, 2+len(span.tags))
-
- if span.peerDefined() && span.isRPC() {
- peer := z.Endpoint{
- Ipv4: span.peer.Ipv4,
- Port: span.peer.Port,
- ServiceName: span.peer.ServiceName}
- label := z.CLIENT_ADDR
- if span.isRPCClient() {
- label = z.SERVER_ADDR
- }
- anno := &z.BinaryAnnotation{
- Key: label,
- Value: []byte{1},
- AnnotationType: z.AnnotationType_BOOL,
- Host: &peer}
- annotations = append(annotations, anno)
- }
- if !span.isRPC() {
- componentName := endpoint.ServiceName
- for _, tag := range span.tags {
- if tag.key == string(ext.Component) {
- componentName = stringify(tag.value)
- break
- }
- }
- local := &z.BinaryAnnotation{
- Key: z.LOCAL_COMPONENT,
- Value: []byte(componentName),
- AnnotationType: z.AnnotationType_STRING,
- Host: endpoint}
- annotations = append(annotations, local)
- }
- for _, tag := range span.tags {
- // "Special tags" are already handled by this point, we'd be double reporting the
- // tags if we don't skip here
- if _, ok := specialTagHandlers[tag.key]; ok {
- continue
- }
- if anno := buildBinaryAnnotation(tag.key, tag.value, span.tracer.options.maxTagValueLength, nil); anno != nil {
- annotations = append(annotations, anno)
- }
- }
- return annotations
-}
-
-func buildBinaryAnnotation(key string, val interface{}, maxTagValueLength int, endpoint *z.Endpoint) *z.BinaryAnnotation {
- bann := &z.BinaryAnnotation{Key: key, Host: endpoint}
- if value, ok := val.(string); ok {
- bann.Value = []byte(truncateString(value, maxTagValueLength))
- bann.AnnotationType = z.AnnotationType_STRING
- } else if value, ok := val.([]byte); ok {
- if len(value) > maxTagValueLength {
- value = value[:maxTagValueLength]
- }
- bann.Value = value
- bann.AnnotationType = z.AnnotationType_BYTES
- } else if value, ok := val.(int32); ok && allowPackedNumbers {
- bann.Value = int32ToBytes(value)
- bann.AnnotationType = z.AnnotationType_I32
- } else if value, ok := val.(int64); ok && allowPackedNumbers {
- bann.Value = int64ToBytes(value)
- bann.AnnotationType = z.AnnotationType_I64
- } else if value, ok := val.(int); ok && allowPackedNumbers {
- bann.Value = int64ToBytes(int64(value))
- bann.AnnotationType = z.AnnotationType_I64
- } else if value, ok := val.(bool); ok {
- bann.Value = []byte{boolToByte(value)}
- bann.AnnotationType = z.AnnotationType_BOOL
- } else {
- value := stringify(val)
- bann.Value = []byte(truncateString(value, maxTagValueLength))
- bann.AnnotationType = z.AnnotationType_STRING
- }
- return bann
-}
-
-func stringify(value interface{}) string {
- if s, ok := value.(string); ok {
- return s
- }
- return fmt.Sprintf("%+v", value)
-}
-
-func truncateString(value string, maxLength int) string {
- // we ignore the problem of utf8 runes possibly being sliced in the middle,
- // as it is rather expensive to iterate through each tag just to find rune
- // boundaries.
- if len(value) > maxLength {
- return value[:maxLength]
- }
- return value
-}
-
-func boolToByte(b bool) byte {
- if b {
- return 1
- }
- return 0
-}
-
-// int32ToBytes converts int32 to bytes.
-func int32ToBytes(i int32) []byte {
- buf := make([]byte, 4)
- binary.BigEndian.PutUint32(buf, uint32(i))
- return buf
-}
-
-// int64ToBytes converts int64 to bytes.
-func int64ToBytes(i int64) []byte {
- buf := make([]byte, 8)
- binary.BigEndian.PutUint64(buf, uint64(i))
- return buf
-}
-
-type zipkinSpan struct {
- *Span
-
- // peer points to the peer service participating in this span,
- // e.g. the Client if this span is a server span,
- // or Server if this span is a client span
- peer struct {
- Ipv4 int32
- Port int16
- ServiceName string
- }
-
- // used to distinguish local vs. RPC Server vs. RPC Client spans
- spanKind string
-}
-
-func (s *zipkinSpan) handleSpecialTags() {
- s.Lock()
- defer s.Unlock()
- if s.firstInProcess {
- // append the process tags
- s.tags = append(s.tags, s.tracer.tags...)
- }
- filteredTags := make([]Tag, 0, len(s.tags))
- for _, tag := range s.tags {
- if handler, ok := specialTagHandlers[tag.key]; ok {
- handler(s, tag.value)
- } else {
- filteredTags = append(filteredTags, tag)
- }
- }
- s.tags = filteredTags
-}
-
-func setSpanKind(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- s.spanKind = val
- return
- }
- if val, ok := value.(ext.SpanKindEnum); ok {
- s.spanKind = string(val)
- }
-}
-
-func setPeerIPv4(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- if ip, err := utils.ParseIPToUint32(val); err == nil {
- s.peer.Ipv4 = int32(ip)
- return
- }
- }
- if val, ok := value.(uint32); ok {
- s.peer.Ipv4 = int32(val)
- return
- }
- if val, ok := value.(int32); ok {
- s.peer.Ipv4 = val
- }
-}
-
-func setPeerPort(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- if port, err := utils.ParsePort(val); err == nil {
- s.peer.Port = int16(port)
- return
- }
- }
- if val, ok := value.(uint16); ok {
- s.peer.Port = int16(val)
- return
- }
- if val, ok := value.(int); ok {
- s.peer.Port = int16(val)
- }
-}
-
-func setPeerService(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- s.peer.ServiceName = val
- }
-}
-
-func removeTag(s *zipkinSpan, value interface{}) {}
-
-func (s *zipkinSpan) peerDefined() bool {
- return s.peer.ServiceName != "" || s.peer.Ipv4 != 0 || s.peer.Port != 0
-}
-
-func (s *zipkinSpan) isRPC() bool {
- s.RLock()
- defer s.RUnlock()
- return s.spanKind == string(ext.SpanKindRPCClientEnum) || s.spanKind == string(ext.SpanKindRPCServerEnum)
-}
-
-func (s *zipkinSpan) isRPCClient() bool {
- s.RLock()
- defer s.RUnlock()
- return s.spanKind == string(ext.SpanKindRPCClientEnum)
-}
diff --git a/vendor/github.com/uber/jaeger-lib/LICENSE b/vendor/github.com/uber/jaeger-lib/LICENSE
deleted file mode 100644
index 261eeb9e9..000000000
--- a/vendor/github.com/uber/jaeger-lib/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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.
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/counter.go b/vendor/github.com/uber/jaeger-lib/metrics/counter.go
deleted file mode 100644
index 2a6a43efd..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/counter.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-// Counter tracks the number of times an event has occurred
-type Counter interface {
- // Inc adds the given value to the counter.
- Inc(int64)
-}
-
-// NullCounter counter that does nothing
-var NullCounter Counter = nullCounter{}
-
-type nullCounter struct{}
-
-func (nullCounter) Inc(int64) {}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/factory.go b/vendor/github.com/uber/jaeger-lib/metrics/factory.go
deleted file mode 100644
index a744a890d..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/factory.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-// Factory creates new metrics
-type Factory interface {
- Counter(name string, tags map[string]string) Counter
- Timer(name string, tags map[string]string) Timer
- Gauge(name string, tags map[string]string) Gauge
-
- // Namespace returns a nested metrics factory.
- Namespace(name string, tags map[string]string) Factory
-}
-
-// NullFactory is a metrics factory that returns NullCounter, NullTimer, and NullGauge.
-var NullFactory Factory = nullFactory{}
-
-type nullFactory struct{}
-
-func (nullFactory) Counter(name string, tags map[string]string) Counter { return NullCounter }
-func (nullFactory) Timer(name string, tags map[string]string) Timer { return NullTimer }
-func (nullFactory) Gauge(name string, tags map[string]string) Gauge { return NullGauge }
-func (nullFactory) Namespace(name string, tags map[string]string) Factory { return NullFactory }
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/gauge.go b/vendor/github.com/uber/jaeger-lib/metrics/gauge.go
deleted file mode 100644
index 3c606391a..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/gauge.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-// Gauge returns instantaneous measurements of something as an int64 value
-type Gauge interface {
- // Update the gauge to the value passed in.
- Update(int64)
-}
-
-// NullGauge gauge that does nothing
-var NullGauge Gauge = nullGauge{}
-
-type nullGauge struct{}
-
-func (nullGauge) Update(int64) {}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/local.go b/vendor/github.com/uber/jaeger-lib/metrics/local.go
deleted file mode 100644
index 217d30600..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/local.go
+++ /dev/null
@@ -1,337 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "sort"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/codahale/hdrhistogram"
-)
-
-// This is intentionally very similar to github.com/codahale/metrics, the
-// main difference being that counters/gauges are scoped to the provider
-// rather than being global (to facilitate testing).
-
-// A LocalBackend is a metrics provider which aggregates data in-vm, and
-// allows exporting snapshots to shove the data into a remote collector
-type LocalBackend struct {
- cm sync.Mutex
- gm sync.Mutex
- tm sync.Mutex
- counters map[string]*int64
- gauges map[string]*int64
- timers map[string]*localBackendTimer
- stop chan struct{}
- wg sync.WaitGroup
- TagsSep string
- TagKVSep string
-}
-
-// NewLocalBackend returns a new LocalBackend. The collectionInterval is the histogram
-// time window for each timer.
-func NewLocalBackend(collectionInterval time.Duration) *LocalBackend {
- b := &LocalBackend{
- counters: make(map[string]*int64),
- gauges: make(map[string]*int64),
- timers: make(map[string]*localBackendTimer),
- stop: make(chan struct{}),
- TagsSep: "|",
- TagKVSep: "=",
- }
- if collectionInterval == 0 {
- // Use one histogram time window for all timers
- return b
- }
- b.wg.Add(1)
- go b.runLoop(collectionInterval)
- return b
-}
-
-// Clear discards accumulated stats
-func (b *LocalBackend) Clear() {
- b.cm.Lock()
- defer b.cm.Unlock()
- b.gm.Lock()
- defer b.gm.Unlock()
- b.tm.Lock()
- defer b.tm.Unlock()
- b.counters = make(map[string]*int64)
- b.gauges = make(map[string]*int64)
- b.timers = make(map[string]*localBackendTimer)
-}
-
-func (b *LocalBackend) runLoop(collectionInterval time.Duration) {
- defer b.wg.Done()
- ticker := time.NewTicker(collectionInterval)
- for {
- select {
- case <-ticker.C:
- b.tm.Lock()
- timers := make(map[string]*localBackendTimer, len(b.timers))
- for timerName, timer := range b.timers {
- timers[timerName] = timer
- }
- b.tm.Unlock()
-
- for _, t := range timers {
- t.Lock()
- t.hist.Rotate()
- t.Unlock()
- }
- case <-b.stop:
- ticker.Stop()
- return
- }
- }
-}
-
-// IncCounter increments a counter value
-func (b *LocalBackend) IncCounter(name string, tags map[string]string, delta int64) {
- name = GetKey(name, tags, b.TagsSep, b.TagKVSep)
- b.cm.Lock()
- defer b.cm.Unlock()
- counter := b.counters[name]
- if counter == nil {
- b.counters[name] = new(int64)
- *b.counters[name] = delta
- return
- }
- atomic.AddInt64(counter, delta)
-}
-
-// UpdateGauge updates the value of a gauge
-func (b *LocalBackend) UpdateGauge(name string, tags map[string]string, value int64) {
- name = GetKey(name, tags, b.TagsSep, b.TagKVSep)
- b.gm.Lock()
- defer b.gm.Unlock()
- gauge := b.gauges[name]
- if gauge == nil {
- b.gauges[name] = new(int64)
- *b.gauges[name] = value
- return
- }
- atomic.StoreInt64(gauge, value)
-}
-
-// RecordTimer records a timing duration
-func (b *LocalBackend) RecordTimer(name string, tags map[string]string, d time.Duration) {
- name = GetKey(name, tags, b.TagsSep, b.TagKVSep)
- timer := b.findOrCreateTimer(name)
- timer.Lock()
- timer.hist.Current.RecordValue(int64(d / time.Millisecond))
- timer.Unlock()
-}
-
-func (b *LocalBackend) findOrCreateTimer(name string) *localBackendTimer {
- b.tm.Lock()
- defer b.tm.Unlock()
- if t, ok := b.timers[name]; ok {
- return t
- }
-
- t := &localBackendTimer{
- hist: hdrhistogram.NewWindowed(5, 0, int64((5*time.Minute)/time.Millisecond), 1),
- }
- b.timers[name] = t
- return t
-}
-
-type localBackendTimer struct {
- sync.Mutex
- hist *hdrhistogram.WindowedHistogram
-}
-
-var (
- percentiles = map[string]float64{
- "P50": 50,
- "P75": 75,
- "P90": 90,
- "P95": 95,
- "P99": 99,
- "P999": 99.9,
- }
-)
-
-// Snapshot captures a snapshot of the current counter and gauge values
-func (b *LocalBackend) Snapshot() (counters, gauges map[string]int64) {
- b.cm.Lock()
- defer b.cm.Unlock()
-
- counters = make(map[string]int64, len(b.counters))
- for name, value := range b.counters {
- counters[name] = atomic.LoadInt64(value)
- }
-
- b.gm.Lock()
- defer b.gm.Unlock()
-
- gauges = make(map[string]int64, len(b.gauges))
- for name, value := range b.gauges {
- gauges[name] = atomic.LoadInt64(value)
- }
-
- b.tm.Lock()
- timers := make(map[string]*localBackendTimer)
- for timerName, timer := range b.timers {
- timers[timerName] = timer
- }
- b.tm.Unlock()
-
- for timerName, timer := range timers {
- timer.Lock()
- hist := timer.hist.Merge()
- timer.Unlock()
- for name, q := range percentiles {
- gauges[timerName+"."+name] = hist.ValueAtQuantile(q)
- }
- }
-
- return
-}
-
-// Stop cleanly closes the background goroutine spawned by NewLocalBackend.
-func (b *LocalBackend) Stop() {
- close(b.stop)
- b.wg.Wait()
-}
-
-// GetKey converts name+tags into a single string of the form
-// "name|tag1=value1|...|tagN=valueN", where tag names are
-// sorted alphabetically.
-func GetKey(name string, tags map[string]string, tagsSep string, tagKVSep string) string {
- keys := make([]string, 0, len(tags))
- for k := range tags {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- key := name
- for _, k := range keys {
- key = key + tagsSep + k + tagKVSep + tags[k]
- }
- return key
-}
-
-type stats struct {
- name string
- tags map[string]string
- localBackend *LocalBackend
-}
-
-type localTimer struct {
- stats
-}
-
-func (l *localTimer) Record(d time.Duration) {
- l.localBackend.RecordTimer(l.name, l.tags, d)
-}
-
-type localCounter struct {
- stats
-}
-
-func (l *localCounter) Inc(delta int64) {
- l.localBackend.IncCounter(l.name, l.tags, delta)
-}
-
-type localGauge struct {
- stats
-}
-
-func (l *localGauge) Update(value int64) {
- l.localBackend.UpdateGauge(l.name, l.tags, value)
-}
-
-// LocalFactory stats factory that creates metrics that are stored locally
-type LocalFactory struct {
- *LocalBackend
- namespace string
- tags map[string]string
-}
-
-// NewLocalFactory returns a new LocalMetricsFactory
-func NewLocalFactory(collectionInterval time.Duration) *LocalFactory {
- return &LocalFactory{
- LocalBackend: NewLocalBackend(collectionInterval),
- }
-}
-
-// appendTags adds the tags to the namespace tags and returns a combined map.
-func (l *LocalFactory) appendTags(tags map[string]string) map[string]string {
- newTags := make(map[string]string)
- for k, v := range l.tags {
- newTags[k] = v
- }
- for k, v := range tags {
- newTags[k] = v
- }
- return newTags
-}
-
-func (l *LocalFactory) newNamespace(name string) string {
- if l.namespace == "" {
- return name
- }
-
- if name == "" {
- return l.namespace
- }
-
- return l.namespace + "." + name
-}
-
-// Counter returns a local stats counter
-func (l *LocalFactory) Counter(name string, tags map[string]string) Counter {
- return &localCounter{
- stats{
- name: l.newNamespace(name),
- tags: l.appendTags(tags),
- localBackend: l.LocalBackend,
- },
- }
-}
-
-// Timer returns a local stats timer.
-func (l *LocalFactory) Timer(name string, tags map[string]string) Timer {
- return &localTimer{
- stats{
- name: l.newNamespace(name),
- tags: l.appendTags(tags),
- localBackend: l.LocalBackend,
- },
- }
-}
-
-// Gauge returns a local stats gauge.
-func (l *LocalFactory) Gauge(name string, tags map[string]string) Gauge {
- return &localGauge{
- stats{
- name: l.newNamespace(name),
- tags: l.appendTags(tags),
- localBackend: l.LocalBackend,
- },
- }
-}
-
-// Namespace returns a new namespace.
-func (l *LocalFactory) Namespace(name string, tags map[string]string) Factory {
- return &LocalFactory{
- namespace: l.newNamespace(name),
- tags: l.appendTags(tags),
- LocalBackend: l.LocalBackend,
- }
-}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/metrics.go b/vendor/github.com/uber/jaeger-lib/metrics/metrics.go
deleted file mode 100644
index 0b97707b0..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/metrics.go
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "fmt"
- "reflect"
- "strings"
-)
-
-// Init initializes the passed in metrics and initializes its fields using the passed in factory.
-func Init(metrics interface{}, factory Factory, globalTags map[string]string) {
- if err := initMetrics(metrics, factory, globalTags); err != nil {
- panic(err.Error())
- }
-}
-
-// initMetrics uses reflection to initialize a struct containing metrics fields
-// by assigning new Counter/Gauge/Timer values with the metric name retrieved
-// from the `metric` tag and stats tags retrieved from the `tags` tag.
-//
-// Note: all fields of the struct must be exported, have a `metric` tag, and be
-// of type Counter or Gauge or Timer.
-func initMetrics(m interface{}, factory Factory, globalTags map[string]string) error {
- // Allow user to opt out of reporting metrics by passing in nil.
- if factory == nil {
- factory = NullFactory
- }
-
- counterPtrType := reflect.TypeOf((*Counter)(nil)).Elem()
- gaugePtrType := reflect.TypeOf((*Gauge)(nil)).Elem()
- timerPtrType := reflect.TypeOf((*Timer)(nil)).Elem()
-
- v := reflect.ValueOf(m).Elem()
- t := v.Type()
- for i := 0; i < t.NumField(); i++ {
- tags := make(map[string]string)
- for k, v := range globalTags {
- tags[k] = v
- }
- field := t.Field(i)
- metric := field.Tag.Get("metric")
- if metric == "" {
- return fmt.Errorf("Field %s is missing a tag 'metric'", field.Name)
- }
- if tagString := field.Tag.Get("tags"); tagString != "" {
- tagPairs := strings.Split(tagString, ",")
- for _, tagPair := range tagPairs {
- tag := strings.Split(tagPair, "=")
- if len(tag) != 2 {
- return fmt.Errorf(
- "Field [%s]: Tag [%s] is not of the form key=value in 'tags' string [%s]",
- field.Name, tagPair, tagString)
- }
- tags[tag[0]] = tag[1]
- }
- }
- var obj interface{}
- if field.Type.AssignableTo(counterPtrType) {
- obj = factory.Counter(metric, tags)
- } else if field.Type.AssignableTo(gaugePtrType) {
- obj = factory.Gauge(metric, tags)
- } else if field.Type.AssignableTo(timerPtrType) {
- obj = factory.Timer(metric, tags)
- } else {
- return fmt.Errorf(
- "Field %s is not a pointer to timer, gauge, or counter",
- field.Name)
- }
- v.Field(i).Set(reflect.ValueOf(obj))
- }
- return nil
-}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go b/vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go
deleted file mode 100644
index 4a8abdb53..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "time"
-)
-
-// StartStopwatch begins recording the executing time of an event, returning
-// a Stopwatch that should be used to stop the recording the time for
-// that event. Multiple events can be occurring simultaneously each
-// represented by different active Stopwatches
-func StartStopwatch(timer Timer) Stopwatch {
- return Stopwatch{t: timer, start: time.Now()}
-}
-
-// A Stopwatch tracks the execution time of a specific event
-type Stopwatch struct {
- t Timer
- start time.Time
-}
-
-// Stop stops executing of the stopwatch and records the amount of elapsed time
-func (s Stopwatch) Stop() {
- s.t.Record(s.ElapsedTime())
-}
-
-// ElapsedTime returns the amount of elapsed time (in time.Duration)
-func (s Stopwatch) ElapsedTime() time.Duration {
- return time.Since(s.start)
-}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/timer.go b/vendor/github.com/uber/jaeger-lib/metrics/timer.go
deleted file mode 100644
index e18d222ab..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/timer.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "time"
-)
-
-// Timer accumulates observations about how long some operation took,
-// and also maintains a historgam of percentiles.
-type Timer interface {
- // Records the time passed in.
- Record(time.Duration)
-}
-
-// NullTimer timer that does nothing
-var NullTimer Timer = nullTimer{}
-
-type nullTimer struct{}
-
-func (nullTimer) Record(time.Duration) {}
diff --git a/vendor/vendor.json b/vendor/vendor.json
index a1f21f0e1..2d477e8eb 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -3,24 +3,6 @@
"ignore": "test",
"package": [
{
- "checksumSHA1": "b5bkSc2hlmUV7PlLY6JlLwiJpiE=",
- "path": "bazil.org/fuse",
- "revision": "371fbbdaa8987b715bdd21d6adc4c9b20155f748",
- "revisionTime": "2016-08-11T21:22:31Z"
- },
- {
- "checksumSHA1": "389JFJTJADMtZkTIfdSnsmHVOUs=",
- "path": "bazil.org/fuse/fs",
- "revision": "371fbbdaa8987b715bdd21d6adc4c9b20155f748",
- "revisionTime": "2016-08-11T21:22:31Z"
- },
- {
- "checksumSHA1": "NPgkh9UWMsaTtsAAs3kPrclHT9Y=",
- "path": "bazil.org/fuse/fuseutil",
- "revision": "371fbbdaa8987b715bdd21d6adc4c9b20155f748",
- "revisionTime": "2016-08-11T21:22:31Z"
- },
- {
"checksumSHA1": "z+M6FYl9EKsoZZMLcT0Ktwfk8pI=",
"path": "github.com/Azure/azure-pipeline-go/pipeline",
"revision": "7571e8eb0876932ab505918ff7ed5107773e5ee2",
@@ -75,12 +57,6 @@
"revisionTime": "2015-01-22T07:26:53Z"
},
{
- "checksumSHA1": "7gK+lSShSu1NRw83/A95BcgMqsI=",
- "path": "github.com/codahale/hdrhistogram",
- "revision": "3a0bb77429bd3a61596f5e8a3172445844342120",
- "revisionTime": "2016-10-10T02:54:55Z"
- },
- {
"checksumSHA1": "dvabztWVQX8f6oMLRyv4dLH+TGY=",
"path": "github.com/davecgh/go-spew/spew",
"revision": "346938d642f2ec3594ed81d874461961cd0faa76",
@@ -545,108 +521,6 @@
"revisionTime": "2018-10-17T06:06:43Z"
},
{
- "checksumSHA1": "nD6S4KB0S+YHxVMDDE+w3PyXaMk=",
- "path": "github.com/uber/jaeger-client-go",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "cjhPfiQbTqfkHmZM3Bi+Bm8qgN4=",
- "path": "github.com/uber/jaeger-client-go/config",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "KM5UXTWkHULmw0dDRNuk8ogWyGs=",
- "path": "github.com/uber/jaeger-client-go/internal/baggage",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "tZqlcHV1XoLdZp9jfnydzsZAvYo=",
- "path": "github.com/uber/jaeger-client-go/internal/baggage/remote",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "QB0L0GrzyMGQp6ivkkxp7a1DPsE=",
- "path": "github.com/uber/jaeger-client-go/internal/spanlog",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "79HRO/+ekkpwqDB/OMiW+AHJtlE=",
- "path": "github.com/uber/jaeger-client-go/internal/throttler",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "OVQDWFtFMs+NODe0F/S5kYViQco=",
- "path": "github.com/uber/jaeger-client-go/internal/throttler/remote",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "tMP/vxbHwNAbOEaUhic5/meKfac=",
- "path": "github.com/uber/jaeger-client-go/log",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "j4WrA/B2SJCqHxttCQ+TYbmtQqE=",
- "path": "github.com/uber/jaeger-client-go/rpcmetrics",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "+ffspyTBQLql2UiU6muvfWR/m1o=",
- "path": "github.com/uber/jaeger-client-go/thrift",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "fMIQ4sJFCkqFYhXvvLKIlofqxvY=",
- "path": "github.com/uber/jaeger-client-go/thrift-gen/agent",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "fRR2p+JAp7paApf32YuQuWU7yzY=",
- "path": "github.com/uber/jaeger-client-go/thrift-gen/baggage",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "JZkMEOmiOFFEuGCsDOVLK5RzvMM=",
- "path": "github.com/uber/jaeger-client-go/thrift-gen/jaeger",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "0teQUhTqTE1fLs+vbnTTzWOqdEQ=",
- "path": "github.com/uber/jaeger-client-go/thrift-gen/sampling",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "Nx5witfz05BSO2YlFzh2Gno6bA0=",
- "path": "github.com/uber/jaeger-client-go/thrift-gen/zipkincore",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "DKwwIk9vq53IKO7RKccat9cnqeo=",
- "path": "github.com/uber/jaeger-client-go/utils",
- "revision": "f7e0d4744fa6d5287c53b8ac8d4f83089ce07ce8",
- "revisionTime": "2018-06-07T15:18:42Z"
- },
- {
- "checksumSHA1": "k1iaOSBmLp3TpGvHNnRQXyJfwyI=",
- "path": "github.com/uber/jaeger-lib/metrics",
- "revision": "a51202d6f4a7e5a219e3841a43614ff7187ae7f1",
- "revisionTime": "2018-06-15T20:27:29Z"
- },
- {
"checksumSHA1": "GLCPuvePAkWT+opcWq3mNdhOfGM=",
"path": "github.com/wsddn/go-ecdh",
"revision": "48726bab92085232373de4ec5c51ce7b441c63a0",