planetscale 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/ci.yml +24 -0
- data/.github/workflows/gem-push.yml +38 -0
- data/.github/workflows/licensed.yml +43 -0
- data/.gitignore +10 -0
- data/.licensed.yml +9 -0
- data/.licenses/go/github.com/armon/circbuf.dep.yml +31 -0
- data/.licenses/go/github.com/gorilla/mux.dep.yml +41 -0
- data/.licenses/go/github.com/hashicorp/go-cleanhttp.dep.yml +375 -0
- data/.licenses/go/github.com/mitchellh/go-homedir.dep.yml +32 -0
- data/.licenses/go/github.com/pkg/errors.dep.yml +36 -0
- data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +160 -0
- data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +180 -0
- data/.licenses/go/go.uber.org/atomic.dep.yml +31 -0
- data/.licenses/go/go.uber.org/multierr.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/buffer.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +31 -0
- data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +31 -0
- data/.licenses/go/golang.org/x/net/context/ctxhttp.dep.yml +63 -0
- data/.licenses/go/golang.org/x/oauth2.dep.yml +44 -0
- data/.licenses/go/golang.org/x/oauth2/internal.dep.yml +38 -0
- data/.ruby_version +1 -0
- data/Gemfile +8 -0
- data/LICENSE +201 -0
- data/README.md +88 -0
- data/Rakefile +10 -0
- data/bin/console +15 -0
- data/bin/setup +17 -0
- data/controller.go +255 -0
- data/go.mod +16 -0
- data/go.sum +428 -0
- data/lib/generators/planetscale/install_generator.rb +58 -0
- data/lib/planetscale.rb +137 -0
- data/lib/planetscale/version.rb +5 -0
- data/planetscale.gemspec +44 -0
- data/proxy.go +128 -0
- data/vendor/github.com/armon/circbuf/.gitignore +22 -0
- data/vendor/github.com/armon/circbuf/LICENSE +20 -0
- data/vendor/github.com/armon/circbuf/README.md +28 -0
- data/vendor/github.com/armon/circbuf/circbuf.go +92 -0
- data/vendor/github.com/armon/circbuf/go.mod +1 -0
- data/vendor/github.com/golang/protobuf/AUTHORS +3 -0
- data/vendor/github.com/golang/protobuf/CONTRIBUTORS +3 -0
- data/vendor/github.com/golang/protobuf/LICENSE +28 -0
- data/vendor/github.com/golang/protobuf/proto/buffer.go +324 -0
- data/vendor/github.com/golang/protobuf/proto/defaults.go +63 -0
- data/vendor/github.com/golang/protobuf/proto/deprecated.go +113 -0
- data/vendor/github.com/golang/protobuf/proto/discard.go +58 -0
- data/vendor/github.com/golang/protobuf/proto/extensions.go +356 -0
- data/vendor/github.com/golang/protobuf/proto/properties.go +306 -0
- data/vendor/github.com/golang/protobuf/proto/proto.go +167 -0
- data/vendor/github.com/golang/protobuf/proto/registry.go +317 -0
- data/vendor/github.com/golang/protobuf/proto/text_decode.go +801 -0
- data/vendor/github.com/golang/protobuf/proto/text_encode.go +560 -0
- data/vendor/github.com/golang/protobuf/proto/wire.go +78 -0
- data/vendor/github.com/golang/protobuf/proto/wrappers.go +34 -0
- data/vendor/github.com/gorilla/mux/AUTHORS +8 -0
- data/vendor/github.com/gorilla/mux/LICENSE +27 -0
- data/vendor/github.com/gorilla/mux/README.md +805 -0
- data/vendor/github.com/gorilla/mux/doc.go +306 -0
- data/vendor/github.com/gorilla/mux/go.mod +3 -0
- data/vendor/github.com/gorilla/mux/middleware.go +74 -0
- data/vendor/github.com/gorilla/mux/mux.go +606 -0
- data/vendor/github.com/gorilla/mux/regexp.go +388 -0
- data/vendor/github.com/gorilla/mux/route.go +736 -0
- data/vendor/github.com/gorilla/mux/test_helpers.go +19 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +363 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/README.md +30 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +58 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +20 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +3 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +48 -0
- data/vendor/github.com/mitchellh/go-homedir/LICENSE +21 -0
- data/vendor/github.com/mitchellh/go-homedir/README.md +14 -0
- data/vendor/github.com/mitchellh/go-homedir/go.mod +1 -0
- data/vendor/github.com/mitchellh/go-homedir/homedir.go +167 -0
- data/vendor/github.com/pkg/errors/.gitignore +24 -0
- data/vendor/github.com/pkg/errors/.travis.yml +10 -0
- data/vendor/github.com/pkg/errors/LICENSE +23 -0
- data/vendor/github.com/pkg/errors/Makefile +44 -0
- data/vendor/github.com/pkg/errors/README.md +59 -0
- data/vendor/github.com/pkg/errors/appveyor.yml +32 -0
- data/vendor/github.com/pkg/errors/errors.go +288 -0
- data/vendor/github.com/pkg/errors/go113.go +38 -0
- data/vendor/github.com/pkg/errors/stack.go +177 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +139 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +258 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +142 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +305 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +131 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +368 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +78 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +163 -0
- data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +467 -0
- data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +73 -0
- data/vendor/go.uber.org/atomic/.codecov.yml +19 -0
- data/vendor/go.uber.org/atomic/.gitignore +12 -0
- data/vendor/go.uber.org/atomic/.travis.yml +27 -0
- data/vendor/go.uber.org/atomic/CHANGELOG.md +76 -0
- data/vendor/go.uber.org/atomic/LICENSE.txt +19 -0
- data/vendor/go.uber.org/atomic/Makefile +78 -0
- data/vendor/go.uber.org/atomic/README.md +63 -0
- data/vendor/go.uber.org/atomic/bool.go +81 -0
- data/vendor/go.uber.org/atomic/bool_ext.go +53 -0
- data/vendor/go.uber.org/atomic/doc.go +23 -0
- data/vendor/go.uber.org/atomic/duration.go +82 -0
- data/vendor/go.uber.org/atomic/duration_ext.go +40 -0
- data/vendor/go.uber.org/atomic/error.go +51 -0
- data/vendor/go.uber.org/atomic/error_ext.go +39 -0
- data/vendor/go.uber.org/atomic/float64.go +76 -0
- data/vendor/go.uber.org/atomic/float64_ext.go +47 -0
- data/vendor/go.uber.org/atomic/gen.go +26 -0
- data/vendor/go.uber.org/atomic/go.mod +8 -0
- data/vendor/go.uber.org/atomic/go.sum +9 -0
- data/vendor/go.uber.org/atomic/int32.go +102 -0
- data/vendor/go.uber.org/atomic/int64.go +102 -0
- data/vendor/go.uber.org/atomic/nocmp.go +35 -0
- data/vendor/go.uber.org/atomic/string.go +54 -0
- data/vendor/go.uber.org/atomic/string_ext.go +43 -0
- data/vendor/go.uber.org/atomic/uint32.go +102 -0
- data/vendor/go.uber.org/atomic/uint64.go +102 -0
- data/vendor/go.uber.org/atomic/value.go +31 -0
- data/vendor/go.uber.org/multierr/.codecov.yml +15 -0
- data/vendor/go.uber.org/multierr/.gitignore +4 -0
- data/vendor/go.uber.org/multierr/.travis.yml +23 -0
- data/vendor/go.uber.org/multierr/CHANGELOG.md +60 -0
- data/vendor/go.uber.org/multierr/LICENSE.txt +19 -0
- data/vendor/go.uber.org/multierr/Makefile +42 -0
- data/vendor/go.uber.org/multierr/README.md +23 -0
- data/vendor/go.uber.org/multierr/error.go +449 -0
- data/vendor/go.uber.org/multierr/glide.yaml +8 -0
- data/vendor/go.uber.org/multierr/go.mod +8 -0
- data/vendor/go.uber.org/multierr/go.sum +11 -0
- data/vendor/go.uber.org/multierr/go113.go +52 -0
- data/vendor/go.uber.org/zap/.codecov.yml +17 -0
- data/vendor/go.uber.org/zap/.gitignore +32 -0
- data/vendor/go.uber.org/zap/.readme.tmpl +109 -0
- data/vendor/go.uber.org/zap/.travis.yml +23 -0
- data/vendor/go.uber.org/zap/CHANGELOG.md +432 -0
- data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +75 -0
- data/vendor/go.uber.org/zap/CONTRIBUTING.md +81 -0
- data/vendor/go.uber.org/zap/FAQ.md +156 -0
- data/vendor/go.uber.org/zap/LICENSE.txt +19 -0
- data/vendor/go.uber.org/zap/Makefile +63 -0
- data/vendor/go.uber.org/zap/README.md +134 -0
- data/vendor/go.uber.org/zap/array.go +320 -0
- data/vendor/go.uber.org/zap/buffer/buffer.go +123 -0
- data/vendor/go.uber.org/zap/buffer/pool.go +49 -0
- data/vendor/go.uber.org/zap/checklicense.sh +17 -0
- data/vendor/go.uber.org/zap/config.go +264 -0
- data/vendor/go.uber.org/zap/doc.go +113 -0
- data/vendor/go.uber.org/zap/encoder.go +79 -0
- data/vendor/go.uber.org/zap/error.go +80 -0
- data/vendor/go.uber.org/zap/field.go +539 -0
- data/vendor/go.uber.org/zap/flag.go +39 -0
- data/vendor/go.uber.org/zap/glide.yaml +34 -0
- data/vendor/go.uber.org/zap/global.go +168 -0
- data/vendor/go.uber.org/zap/global_go112.go +26 -0
- data/vendor/go.uber.org/zap/global_prego112.go +26 -0
- data/vendor/go.uber.org/zap/go.mod +13 -0
- data/vendor/go.uber.org/zap/go.sum +56 -0
- data/vendor/go.uber.org/zap/http_handler.go +81 -0
- data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +31 -0
- data/vendor/go.uber.org/zap/internal/color/color.go +44 -0
- data/vendor/go.uber.org/zap/internal/exit/exit.go +64 -0
- data/vendor/go.uber.org/zap/level.go +132 -0
- data/vendor/go.uber.org/zap/logger.go +344 -0
- data/vendor/go.uber.org/zap/options.go +140 -0
- data/vendor/go.uber.org/zap/sink.go +161 -0
- data/vendor/go.uber.org/zap/stacktrace.go +85 -0
- data/vendor/go.uber.org/zap/sugar.go +304 -0
- data/vendor/go.uber.org/zap/time.go +27 -0
- data/vendor/go.uber.org/zap/writer.go +99 -0
- data/vendor/go.uber.org/zap/zapcore/console_encoder.go +161 -0
- data/vendor/go.uber.org/zap/zapcore/core.go +113 -0
- data/vendor/go.uber.org/zap/zapcore/doc.go +24 -0
- data/vendor/go.uber.org/zap/zapcore/encoder.go +443 -0
- data/vendor/go.uber.org/zap/zapcore/entry.go +264 -0
- data/vendor/go.uber.org/zap/zapcore/error.go +115 -0
- data/vendor/go.uber.org/zap/zapcore/field.go +227 -0
- data/vendor/go.uber.org/zap/zapcore/hook.go +68 -0
- data/vendor/go.uber.org/zap/zapcore/increase_level.go +66 -0
- data/vendor/go.uber.org/zap/zapcore/json_encoder.go +534 -0
- data/vendor/go.uber.org/zap/zapcore/level.go +175 -0
- data/vendor/go.uber.org/zap/zapcore/level_strings.go +46 -0
- data/vendor/go.uber.org/zap/zapcore/marshaler.go +61 -0
- data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +179 -0
- data/vendor/go.uber.org/zap/zapcore/sampler.go +208 -0
- data/vendor/go.uber.org/zap/zapcore/tee.go +81 -0
- data/vendor/go.uber.org/zap/zapcore/write_syncer.go +123 -0
- data/vendor/golang.org/x/net/AUTHORS +3 -0
- data/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
- data/vendor/golang.org/x/net/LICENSE +27 -0
- data/vendor/golang.org/x/net/PATENTS +22 -0
- data/vendor/golang.org/x/net/context/context.go +56 -0
- data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +71 -0
- data/vendor/golang.org/x/net/context/go17.go +73 -0
- data/vendor/golang.org/x/net/context/go19.go +21 -0
- data/vendor/golang.org/x/net/context/pre_go17.go +301 -0
- data/vendor/golang.org/x/net/context/pre_go19.go +110 -0
- data/vendor/golang.org/x/oauth2/.travis.yml +13 -0
- data/vendor/golang.org/x/oauth2/AUTHORS +3 -0
- data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +26 -0
- data/vendor/golang.org/x/oauth2/CONTRIBUTORS +3 -0
- data/vendor/golang.org/x/oauth2/LICENSE +27 -0
- data/vendor/golang.org/x/oauth2/README.md +36 -0
- data/vendor/golang.org/x/oauth2/go.mod +9 -0
- data/vendor/golang.org/x/oauth2/go.sum +361 -0
- data/vendor/golang.org/x/oauth2/internal/client_appengine.go +14 -0
- data/vendor/golang.org/x/oauth2/internal/doc.go +6 -0
- data/vendor/golang.org/x/oauth2/internal/oauth2.go +37 -0
- data/vendor/golang.org/x/oauth2/internal/token.go +294 -0
- data/vendor/golang.org/x/oauth2/internal/transport.go +33 -0
- data/vendor/golang.org/x/oauth2/oauth2.go +381 -0
- data/vendor/golang.org/x/oauth2/token.go +178 -0
- data/vendor/golang.org/x/oauth2/transport.go +89 -0
- data/vendor/google.golang.org/appengine/LICENSE +202 -0
- data/vendor/google.golang.org/appengine/internal/api.go +678 -0
- data/vendor/google.golang.org/appengine/internal/api_classic.go +169 -0
- data/vendor/google.golang.org/appengine/internal/api_common.go +123 -0
- data/vendor/google.golang.org/appengine/internal/app_id.go +28 -0
- data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +308 -0
- data/vendor/google.golang.org/appengine/internal/base/api_base.proto +33 -0
- data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +4367 -0
- data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +551 -0
- data/vendor/google.golang.org/appengine/internal/identity.go +55 -0
- data/vendor/google.golang.org/appengine/internal/identity_classic.go +61 -0
- data/vendor/google.golang.org/appengine/internal/identity_flex.go +11 -0
- data/vendor/google.golang.org/appengine/internal/identity_vm.go +134 -0
- data/vendor/google.golang.org/appengine/internal/internal.go +110 -0
- data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +1313 -0
- data/vendor/google.golang.org/appengine/internal/log/log_service.proto +150 -0
- data/vendor/google.golang.org/appengine/internal/main.go +16 -0
- data/vendor/google.golang.org/appengine/internal/main_common.go +7 -0
- data/vendor/google.golang.org/appengine/internal/main_vm.go +69 -0
- data/vendor/google.golang.org/appengine/internal/metadata.go +60 -0
- data/vendor/google.golang.org/appengine/internal/net.go +56 -0
- data/vendor/google.golang.org/appengine/internal/regen.sh +40 -0
- data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +361 -0
- data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +44 -0
- data/vendor/google.golang.org/appengine/internal/transaction.go +115 -0
- data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +527 -0
- data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +64 -0
- data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +210 -0
- data/vendor/google.golang.org/protobuf/AUTHORS +3 -0
- data/vendor/google.golang.org/protobuf/CONTRIBUTORS +3 -0
- data/vendor/google.golang.org/protobuf/LICENSE +27 -0
- data/vendor/google.golang.org/protobuf/PATENTS +22 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +773 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +371 -0
- data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +538 -0
- data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +318 -0
- data/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +241 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +207 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +665 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +190 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +265 -0
- data/vendor/google.golang.org/protobuf/internal/errors/errors.go +89 -0
- data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +39 -0
- data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +12 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +158 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +631 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +471 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +704 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +450 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +356 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +107 -0
- data/vendor/google.golang.org/protobuf/internal/filetype/build.go +297 -0
- data/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
- data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +9 -0
- data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +9 -0
- data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
- data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +829 -0
- data/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
- data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
- data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
- data/vendor/google.golang.org/protobuf/internal/genid/goname.go +25 -0
- data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
- data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
- data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +116 -0
- data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +184 -0
- data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
- data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
- data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
- data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +141 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +223 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +830 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5637 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +388 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +37 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +11 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +217 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +123 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +209 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +17 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert.go +496 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
- data/vendor/google.golang.org/protobuf/internal/impl/decode.go +276 -0
- data/vendor/google.golang.org/protobuf/internal/impl/encode.go +201 -0
- data/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
- data/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +176 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +558 -0
- data/vendor/google.golang.org/protobuf/internal/impl/merge.go +176 -0
- data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message.go +276 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +465 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +543 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +249 -0
- data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +178 -0
- data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +174 -0
- data/vendor/google.golang.org/protobuf/internal/impl/validate.go +576 -0
- data/vendor/google.golang.org/protobuf/internal/impl/weak.go +74 -0
- data/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
- data/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
- data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +27 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +94 -0
- data/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
- data/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
- data/vendor/google.golang.org/protobuf/proto/decode.go +278 -0
- data/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
- data/vendor/google.golang.org/protobuf/proto/doc.go +94 -0
- data/vendor/google.golang.org/protobuf/proto/encode.go +319 -0
- data/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
- data/vendor/google.golang.org/protobuf/proto/equal.go +167 -0
- data/vendor/google.golang.org/protobuf/proto/extension.go +92 -0
- data/vendor/google.golang.org/protobuf/proto/merge.go +139 -0
- data/vendor/google.golang.org/protobuf/proto/messageset.go +93 -0
- data/vendor/google.golang.org/protobuf/proto/proto.go +43 -0
- data/vendor/google.golang.org/protobuf/proto/proto_methods.go +19 -0
- data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +19 -0
- data/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
- data/vendor/google.golang.org/protobuf/proto/size.go +97 -0
- data/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
- data/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +276 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +248 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +286 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +374 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +252 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +77 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +504 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +128 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +461 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +665 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +59 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +411 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +98 -0
- data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +869 -0
- data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
- data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +167 -0
- data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +44 -0
- data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +56 -0
- data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +4039 -0
- data/vendor/modules.txt +79 -0
- metadata +495 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
package proxy
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"crypto/tls"
|
|
5
|
+
"errors"
|
|
6
|
+
"sync"
|
|
7
|
+
"time"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
var errConfigNotFound = errors.New("TLS config not found")
|
|
11
|
+
|
|
12
|
+
// expireTTL defines the time
|
|
13
|
+
const expireTTL = 10 * time.Minute
|
|
14
|
+
|
|
15
|
+
type cacheEntry struct {
|
|
16
|
+
// cfg defines the TLS config we're caching
|
|
17
|
+
cfg *tls.Config
|
|
18
|
+
remoteAddr string
|
|
19
|
+
|
|
20
|
+
// added holds the time the cfg was added to the cache
|
|
21
|
+
added time.Time
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type tlsCache struct {
|
|
25
|
+
// configs holds the TLS config for each remote instance
|
|
26
|
+
configs map[string]cacheEntry
|
|
27
|
+
configsMu sync.Mutex // protects configs
|
|
28
|
+
|
|
29
|
+
// nowFn returns the current local time, used during insertion of cache
|
|
30
|
+
// entries. It's a function so we can use it for tests.
|
|
31
|
+
nowFn func() time.Time
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
func newtlsCache() *tlsCache {
|
|
35
|
+
return &tlsCache{
|
|
36
|
+
configs: make(map[string]cacheEntry),
|
|
37
|
+
nowFn: time.Now,
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Add adds the given config and remote address for the given instance name
|
|
42
|
+
func (t *tlsCache) Add(instance string, cfg *tls.Config, remoteAddr string) {
|
|
43
|
+
t.configsMu.Lock()
|
|
44
|
+
defer t.configsMu.Unlock()
|
|
45
|
+
|
|
46
|
+
t.configs[instance] = cacheEntry{
|
|
47
|
+
cfg: cfg,
|
|
48
|
+
remoteAddr: remoteAddr,
|
|
49
|
+
added: t.nowFn(),
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Get retrieves the config for the given instance
|
|
54
|
+
func (t *tlsCache) Get(instance string) (cacheEntry, error) {
|
|
55
|
+
t.configsMu.Lock()
|
|
56
|
+
defer t.configsMu.Unlock()
|
|
57
|
+
|
|
58
|
+
e, ok := t.configs[instance]
|
|
59
|
+
if !ok {
|
|
60
|
+
return cacheEntry{}, errConfigNotFound
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
now := time.Now()
|
|
64
|
+
|
|
65
|
+
// delete the config if it's expired. This will trigger the user to request
|
|
66
|
+
// another TLS config.
|
|
67
|
+
if e.added.Add(expireTTL).Before(now) {
|
|
68
|
+
delete(t.configs, instance)
|
|
69
|
+
return cacheEntry{}, errConfigNotFound
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return e, nil
|
|
73
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
coverage:
|
|
2
|
+
range: 80..100
|
|
3
|
+
round: down
|
|
4
|
+
precision: 2
|
|
5
|
+
|
|
6
|
+
status:
|
|
7
|
+
project: # measuring the overall project coverage
|
|
8
|
+
default: # context, you can create multiple ones with custom titles
|
|
9
|
+
enabled: yes # must be yes|true to enable this status
|
|
10
|
+
target: 100 # specify the target coverage for each commit status
|
|
11
|
+
# option: "auto" (must increase from parent commit or pull request base)
|
|
12
|
+
# option: "X%" a static target percentage to hit
|
|
13
|
+
if_not_found: success # if parent is not found report status as success, error, or failure
|
|
14
|
+
if_ci_failed: error # if ci fails report status as success, error, or failure
|
|
15
|
+
|
|
16
|
+
# Also update COVER_IGNORE_PKGS in the Makefile.
|
|
17
|
+
ignore:
|
|
18
|
+
- /internal/gen-atomicint/
|
|
19
|
+
- /internal/gen-valuewrapper/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
sudo: false
|
|
2
|
+
language: go
|
|
3
|
+
go_import_path: go.uber.org/atomic
|
|
4
|
+
|
|
5
|
+
env:
|
|
6
|
+
global:
|
|
7
|
+
- GO111MODULE=on
|
|
8
|
+
|
|
9
|
+
matrix:
|
|
10
|
+
include:
|
|
11
|
+
- go: oldstable
|
|
12
|
+
- go: stable
|
|
13
|
+
env: LINT=1
|
|
14
|
+
|
|
15
|
+
cache:
|
|
16
|
+
directories:
|
|
17
|
+
- vendor
|
|
18
|
+
|
|
19
|
+
before_install:
|
|
20
|
+
- go version
|
|
21
|
+
|
|
22
|
+
script:
|
|
23
|
+
- test -z "$LINT" || make lint
|
|
24
|
+
- make cover
|
|
25
|
+
|
|
26
|
+
after_success:
|
|
27
|
+
- bash <(curl -s https://codecov.io/bash)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [1.7.0] - 2020-09-14
|
|
8
|
+
### Added
|
|
9
|
+
- Support JSON serialization and deserialization of primitive atomic types.
|
|
10
|
+
- Support Text marshalling and unmarshalling for string atomics.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Disallow incorrect comparison of atomic values in a non-atomic way.
|
|
14
|
+
|
|
15
|
+
### Removed
|
|
16
|
+
- Remove dependency on `golang.org/x/{lint, tools}`.
|
|
17
|
+
|
|
18
|
+
## [1.6.0] - 2020-02-24
|
|
19
|
+
### Changed
|
|
20
|
+
- Drop library dependency on `golang.org/x/{lint, tools}`.
|
|
21
|
+
|
|
22
|
+
## [1.5.1] - 2019-11-19
|
|
23
|
+
- Fix bug where `Bool.CAS` and `Bool.Toggle` do work correctly together
|
|
24
|
+
causing `CAS` to fail even though the old value matches.
|
|
25
|
+
|
|
26
|
+
## [1.5.0] - 2019-10-29
|
|
27
|
+
### Changed
|
|
28
|
+
- With Go modules, only the `go.uber.org/atomic` import path is supported now.
|
|
29
|
+
If you need to use the old import path, please add a `replace` directive to
|
|
30
|
+
your `go.mod`.
|
|
31
|
+
|
|
32
|
+
## [1.4.0] - 2019-05-01
|
|
33
|
+
### Added
|
|
34
|
+
- Add `atomic.Error` type for atomic operations on `error` values.
|
|
35
|
+
|
|
36
|
+
## [1.3.2] - 2018-05-02
|
|
37
|
+
### Added
|
|
38
|
+
- Add `atomic.Duration` type for atomic operations on `time.Duration` values.
|
|
39
|
+
|
|
40
|
+
## [1.3.1] - 2017-11-14
|
|
41
|
+
### Fixed
|
|
42
|
+
- Revert optimization for `atomic.String.Store("")` which caused data races.
|
|
43
|
+
|
|
44
|
+
## [1.3.0] - 2017-11-13
|
|
45
|
+
### Added
|
|
46
|
+
- Add `atomic.Bool.CAS` for compare-and-swap semantics on bools.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
- Optimize `atomic.String.Store("")` by avoiding an allocation.
|
|
50
|
+
|
|
51
|
+
## [1.2.0] - 2017-04-12
|
|
52
|
+
### Added
|
|
53
|
+
- Shadow `atomic.Value` from `sync/atomic`.
|
|
54
|
+
|
|
55
|
+
## [1.1.0] - 2017-03-10
|
|
56
|
+
### Added
|
|
57
|
+
- Add atomic `Float64` type.
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
- Support new `go.uber.org/atomic` import path.
|
|
61
|
+
|
|
62
|
+
## [1.0.0] - 2016-07-18
|
|
63
|
+
|
|
64
|
+
- Initial release.
|
|
65
|
+
|
|
66
|
+
[1.7.0]: https://github.com/uber-go/atomic/compare/v1.6.0...v1.7.0
|
|
67
|
+
[1.6.0]: https://github.com/uber-go/atomic/compare/v1.5.1...v1.6.0
|
|
68
|
+
[1.5.1]: https://github.com/uber-go/atomic/compare/v1.5.0...v1.5.1
|
|
69
|
+
[1.5.0]: https://github.com/uber-go/atomic/compare/v1.4.0...v1.5.0
|
|
70
|
+
[1.4.0]: https://github.com/uber-go/atomic/compare/v1.3.2...v1.4.0
|
|
71
|
+
[1.3.2]: https://github.com/uber-go/atomic/compare/v1.3.1...v1.3.2
|
|
72
|
+
[1.3.1]: https://github.com/uber-go/atomic/compare/v1.3.0...v1.3.1
|
|
73
|
+
[1.3.0]: https://github.com/uber-go/atomic/compare/v1.2.0...v1.3.0
|
|
74
|
+
[1.2.0]: https://github.com/uber-go/atomic/compare/v1.1.0...v1.2.0
|
|
75
|
+
[1.1.0]: https://github.com/uber-go/atomic/compare/v1.0.0...v1.1.0
|
|
76
|
+
[1.0.0]: https://github.com/uber-go/atomic/releases/tag/v1.0.0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2016 Uber Technologies, Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Directory to place `go install`ed binaries into.
|
|
2
|
+
export GOBIN ?= $(shell pwd)/bin
|
|
3
|
+
|
|
4
|
+
GOLINT = $(GOBIN)/golint
|
|
5
|
+
GEN_ATOMICINT = $(GOBIN)/gen-atomicint
|
|
6
|
+
GEN_ATOMICWRAPPER = $(GOBIN)/gen-atomicwrapper
|
|
7
|
+
STATICCHECK = $(GOBIN)/staticcheck
|
|
8
|
+
|
|
9
|
+
GO_FILES ?= $(shell find . '(' -path .git -o -path vendor ')' -prune -o -name '*.go' -print)
|
|
10
|
+
|
|
11
|
+
# Also update ignore section in .codecov.yml.
|
|
12
|
+
COVER_IGNORE_PKGS = \
|
|
13
|
+
go.uber.org/atomic/internal/gen-atomicint \
|
|
14
|
+
go.uber.org/atomic/internal/gen-atomicwrapper
|
|
15
|
+
|
|
16
|
+
.PHONY: build
|
|
17
|
+
build:
|
|
18
|
+
go build ./...
|
|
19
|
+
|
|
20
|
+
.PHONY: test
|
|
21
|
+
test:
|
|
22
|
+
go test -race ./...
|
|
23
|
+
|
|
24
|
+
.PHONY: gofmt
|
|
25
|
+
gofmt:
|
|
26
|
+
$(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX))
|
|
27
|
+
gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true
|
|
28
|
+
@[ ! -s "$(FMT_LOG)" ] || (echo "gofmt failed:" && cat $(FMT_LOG) && false)
|
|
29
|
+
|
|
30
|
+
$(GOLINT):
|
|
31
|
+
cd tools && go install golang.org/x/lint/golint
|
|
32
|
+
|
|
33
|
+
$(STATICCHECK):
|
|
34
|
+
cd tools && go install honnef.co/go/tools/cmd/staticcheck
|
|
35
|
+
|
|
36
|
+
$(GEN_ATOMICWRAPPER): $(wildcard ./internal/gen-atomicwrapper/*)
|
|
37
|
+
go build -o $@ ./internal/gen-atomicwrapper
|
|
38
|
+
|
|
39
|
+
$(GEN_ATOMICINT): $(wildcard ./internal/gen-atomicint/*)
|
|
40
|
+
go build -o $@ ./internal/gen-atomicint
|
|
41
|
+
|
|
42
|
+
.PHONY: golint
|
|
43
|
+
golint: $(GOLINT)
|
|
44
|
+
$(GOLINT) ./...
|
|
45
|
+
|
|
46
|
+
.PHONY: staticcheck
|
|
47
|
+
staticcheck: $(STATICCHECK)
|
|
48
|
+
$(STATICCHECK) ./...
|
|
49
|
+
|
|
50
|
+
.PHONY: lint
|
|
51
|
+
lint: gofmt golint staticcheck generatenodirty
|
|
52
|
+
|
|
53
|
+
# comma separated list of packages to consider for code coverage.
|
|
54
|
+
COVER_PKG = $(shell \
|
|
55
|
+
go list -find ./... | \
|
|
56
|
+
grep -v $(foreach pkg,$(COVER_IGNORE_PKGS),-e "^$(pkg)$$") | \
|
|
57
|
+
paste -sd, -)
|
|
58
|
+
|
|
59
|
+
.PHONY: cover
|
|
60
|
+
cover:
|
|
61
|
+
go test -coverprofile=cover.out -coverpkg $(COVER_PKG) -v ./...
|
|
62
|
+
go tool cover -html=cover.out -o cover.html
|
|
63
|
+
|
|
64
|
+
.PHONY: generate
|
|
65
|
+
generate: $(GEN_ATOMICINT) $(GEN_ATOMICWRAPPER)
|
|
66
|
+
go generate ./...
|
|
67
|
+
|
|
68
|
+
.PHONY: generatenodirty
|
|
69
|
+
generatenodirty:
|
|
70
|
+
@[ -z "$$(git status --porcelain)" ] || ( \
|
|
71
|
+
echo "Working tree is dirty. Commit your changes first."; \
|
|
72
|
+
exit 1 )
|
|
73
|
+
@make generate
|
|
74
|
+
@status=$$(git status --porcelain); \
|
|
75
|
+
[ -z "$$status" ] || ( \
|
|
76
|
+
echo "Working tree is dirty after `make generate`:"; \
|
|
77
|
+
echo "$$status"; \
|
|
78
|
+
echo "Please ensure that the generated code is up-to-date." )
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# atomic [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![Go Report Card][reportcard-img]][reportcard]
|
|
2
|
+
|
|
3
|
+
Simple wrappers for primitive types to enforce atomic access.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```shell
|
|
8
|
+
$ go get -u go.uber.org/atomic@v1
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Legacy Import Path
|
|
12
|
+
|
|
13
|
+
As of v1.5.0, the import path `go.uber.org/atomic` is the only supported way
|
|
14
|
+
of using this package. If you are using Go modules, this package will fail to
|
|
15
|
+
compile with the legacy import path path `github.com/uber-go/atomic`.
|
|
16
|
+
|
|
17
|
+
We recommend migrating your code to the new import path but if you're unable
|
|
18
|
+
to do so, or if your dependencies are still using the old import path, you
|
|
19
|
+
will have to add a `replace` directive to your `go.mod` file downgrading the
|
|
20
|
+
legacy import path to an older version.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
replace github.com/uber-go/atomic => github.com/uber-go/atomic v1.4.0
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
You can do so automatically by running the following command.
|
|
27
|
+
|
|
28
|
+
```shell
|
|
29
|
+
$ go mod edit -replace github.com/uber-go/atomic=github.com/uber-go/atomic@v1.4.0
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
The standard library's `sync/atomic` is powerful, but it's easy to forget which
|
|
35
|
+
variables must be accessed atomically. `go.uber.org/atomic` preserves all the
|
|
36
|
+
functionality of the standard library, but wraps the primitive types to
|
|
37
|
+
provide a safer, more convenient API.
|
|
38
|
+
|
|
39
|
+
```go
|
|
40
|
+
var atom atomic.Uint32
|
|
41
|
+
atom.Store(42)
|
|
42
|
+
atom.Sub(2)
|
|
43
|
+
atom.CAS(40, 11)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
See the [documentation][doc] for a complete API specification.
|
|
47
|
+
|
|
48
|
+
## Development Status
|
|
49
|
+
|
|
50
|
+
Stable.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
Released under the [MIT License](LICENSE.txt).
|
|
55
|
+
|
|
56
|
+
[doc-img]: https://godoc.org/github.com/uber-go/atomic?status.svg
|
|
57
|
+
[doc]: https://godoc.org/go.uber.org/atomic
|
|
58
|
+
[ci-img]: https://travis-ci.com/uber-go/atomic.svg?branch=master
|
|
59
|
+
[ci]: https://travis-ci.com/uber-go/atomic
|
|
60
|
+
[cov-img]: https://codecov.io/gh/uber-go/atomic/branch/master/graph/badge.svg
|
|
61
|
+
[cov]: https://codecov.io/gh/uber-go/atomic
|
|
62
|
+
[reportcard-img]: https://goreportcard.com/badge/go.uber.org/atomic
|
|
63
|
+
[reportcard]: https://goreportcard.com/report/go.uber.org/atomic
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// @generated Code generated by gen-atomicwrapper.
|
|
2
|
+
|
|
3
|
+
// Copyright (c) 2020 Uber Technologies, Inc.
|
|
4
|
+
//
|
|
5
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
// of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
// in the Software without restriction, including without limitation the rights
|
|
8
|
+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
// copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
// furnished to do so, subject to the following conditions:
|
|
11
|
+
//
|
|
12
|
+
// The above copyright notice and this permission notice shall be included in
|
|
13
|
+
// all copies or substantial portions of the Software.
|
|
14
|
+
//
|
|
15
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
// THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
package atomic
|
|
24
|
+
|
|
25
|
+
import (
|
|
26
|
+
"encoding/json"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
// Bool is an atomic type-safe wrapper for bool values.
|
|
30
|
+
type Bool struct {
|
|
31
|
+
_ nocmp // disallow non-atomic comparison
|
|
32
|
+
|
|
33
|
+
v Uint32
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var _zeroBool bool
|
|
37
|
+
|
|
38
|
+
// NewBool creates a new Bool.
|
|
39
|
+
func NewBool(v bool) *Bool {
|
|
40
|
+
x := &Bool{}
|
|
41
|
+
if v != _zeroBool {
|
|
42
|
+
x.Store(v)
|
|
43
|
+
}
|
|
44
|
+
return x
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Load atomically loads the wrapped bool.
|
|
48
|
+
func (x *Bool) Load() bool {
|
|
49
|
+
return truthy(x.v.Load())
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Store atomically stores the passed bool.
|
|
53
|
+
func (x *Bool) Store(v bool) {
|
|
54
|
+
x.v.Store(boolToInt(v))
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// CAS is an atomic compare-and-swap for bool values.
|
|
58
|
+
func (x *Bool) CAS(o, n bool) bool {
|
|
59
|
+
return x.v.CAS(boolToInt(o), boolToInt(n))
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Swap atomically stores the given bool and returns the old
|
|
63
|
+
// value.
|
|
64
|
+
func (x *Bool) Swap(o bool) bool {
|
|
65
|
+
return truthy(x.v.Swap(boolToInt(o)))
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// MarshalJSON encodes the wrapped bool into JSON.
|
|
69
|
+
func (x *Bool) MarshalJSON() ([]byte, error) {
|
|
70
|
+
return json.Marshal(x.Load())
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// UnmarshalJSON decodes a bool from JSON.
|
|
74
|
+
func (x *Bool) UnmarshalJSON(b []byte) error {
|
|
75
|
+
var v bool
|
|
76
|
+
if err := json.Unmarshal(b, &v); err != nil {
|
|
77
|
+
return err
|
|
78
|
+
}
|
|
79
|
+
x.Store(v)
|
|
80
|
+
return nil
|
|
81
|
+
}
|