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.
Files changed (378) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +24 -0
  3. data/.github/workflows/gem-push.yml +38 -0
  4. data/.github/workflows/licensed.yml +43 -0
  5. data/.gitignore +10 -0
  6. data/.licensed.yml +9 -0
  7. data/.licenses/go/github.com/armon/circbuf.dep.yml +31 -0
  8. data/.licenses/go/github.com/gorilla/mux.dep.yml +41 -0
  9. data/.licenses/go/github.com/hashicorp/go-cleanhttp.dep.yml +375 -0
  10. data/.licenses/go/github.com/mitchellh/go-homedir.dep.yml +32 -0
  11. data/.licenses/go/github.com/pkg/errors.dep.yml +36 -0
  12. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +160 -0
  13. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +180 -0
  14. data/.licenses/go/go.uber.org/atomic.dep.yml +31 -0
  15. data/.licenses/go/go.uber.org/multierr.dep.yml +30 -0
  16. data/.licenses/go/go.uber.org/zap.dep.yml +30 -0
  17. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +30 -0
  18. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +30 -0
  19. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +30 -0
  20. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +31 -0
  21. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +31 -0
  22. data/.licenses/go/golang.org/x/net/context/ctxhttp.dep.yml +63 -0
  23. data/.licenses/go/golang.org/x/oauth2.dep.yml +44 -0
  24. data/.licenses/go/golang.org/x/oauth2/internal.dep.yml +38 -0
  25. data/.ruby_version +1 -0
  26. data/Gemfile +8 -0
  27. data/LICENSE +201 -0
  28. data/README.md +88 -0
  29. data/Rakefile +10 -0
  30. data/bin/console +15 -0
  31. data/bin/setup +17 -0
  32. data/controller.go +255 -0
  33. data/go.mod +16 -0
  34. data/go.sum +428 -0
  35. data/lib/generators/planetscale/install_generator.rb +58 -0
  36. data/lib/planetscale.rb +137 -0
  37. data/lib/planetscale/version.rb +5 -0
  38. data/planetscale.gemspec +44 -0
  39. data/proxy.go +128 -0
  40. data/vendor/github.com/armon/circbuf/.gitignore +22 -0
  41. data/vendor/github.com/armon/circbuf/LICENSE +20 -0
  42. data/vendor/github.com/armon/circbuf/README.md +28 -0
  43. data/vendor/github.com/armon/circbuf/circbuf.go +92 -0
  44. data/vendor/github.com/armon/circbuf/go.mod +1 -0
  45. data/vendor/github.com/golang/protobuf/AUTHORS +3 -0
  46. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +3 -0
  47. data/vendor/github.com/golang/protobuf/LICENSE +28 -0
  48. data/vendor/github.com/golang/protobuf/proto/buffer.go +324 -0
  49. data/vendor/github.com/golang/protobuf/proto/defaults.go +63 -0
  50. data/vendor/github.com/golang/protobuf/proto/deprecated.go +113 -0
  51. data/vendor/github.com/golang/protobuf/proto/discard.go +58 -0
  52. data/vendor/github.com/golang/protobuf/proto/extensions.go +356 -0
  53. data/vendor/github.com/golang/protobuf/proto/properties.go +306 -0
  54. data/vendor/github.com/golang/protobuf/proto/proto.go +167 -0
  55. data/vendor/github.com/golang/protobuf/proto/registry.go +317 -0
  56. data/vendor/github.com/golang/protobuf/proto/text_decode.go +801 -0
  57. data/vendor/github.com/golang/protobuf/proto/text_encode.go +560 -0
  58. data/vendor/github.com/golang/protobuf/proto/wire.go +78 -0
  59. data/vendor/github.com/golang/protobuf/proto/wrappers.go +34 -0
  60. data/vendor/github.com/gorilla/mux/AUTHORS +8 -0
  61. data/vendor/github.com/gorilla/mux/LICENSE +27 -0
  62. data/vendor/github.com/gorilla/mux/README.md +805 -0
  63. data/vendor/github.com/gorilla/mux/doc.go +306 -0
  64. data/vendor/github.com/gorilla/mux/go.mod +3 -0
  65. data/vendor/github.com/gorilla/mux/middleware.go +74 -0
  66. data/vendor/github.com/gorilla/mux/mux.go +606 -0
  67. data/vendor/github.com/gorilla/mux/regexp.go +388 -0
  68. data/vendor/github.com/gorilla/mux/route.go +736 -0
  69. data/vendor/github.com/gorilla/mux/test_helpers.go +19 -0
  70. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +363 -0
  71. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +30 -0
  72. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +58 -0
  73. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +20 -0
  74. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +3 -0
  75. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +48 -0
  76. data/vendor/github.com/mitchellh/go-homedir/LICENSE +21 -0
  77. data/vendor/github.com/mitchellh/go-homedir/README.md +14 -0
  78. data/vendor/github.com/mitchellh/go-homedir/go.mod +1 -0
  79. data/vendor/github.com/mitchellh/go-homedir/homedir.go +167 -0
  80. data/vendor/github.com/pkg/errors/.gitignore +24 -0
  81. data/vendor/github.com/pkg/errors/.travis.yml +10 -0
  82. data/vendor/github.com/pkg/errors/LICENSE +23 -0
  83. data/vendor/github.com/pkg/errors/Makefile +44 -0
  84. data/vendor/github.com/pkg/errors/README.md +59 -0
  85. data/vendor/github.com/pkg/errors/appveyor.yml +32 -0
  86. data/vendor/github.com/pkg/errors/errors.go +288 -0
  87. data/vendor/github.com/pkg/errors/go113.go +38 -0
  88. data/vendor/github.com/pkg/errors/stack.go +177 -0
  89. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +139 -0
  90. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +258 -0
  91. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +142 -0
  92. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +305 -0
  93. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +131 -0
  94. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +368 -0
  95. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +78 -0
  96. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +163 -0
  97. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +467 -0
  98. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +73 -0
  99. data/vendor/go.uber.org/atomic/.codecov.yml +19 -0
  100. data/vendor/go.uber.org/atomic/.gitignore +12 -0
  101. data/vendor/go.uber.org/atomic/.travis.yml +27 -0
  102. data/vendor/go.uber.org/atomic/CHANGELOG.md +76 -0
  103. data/vendor/go.uber.org/atomic/LICENSE.txt +19 -0
  104. data/vendor/go.uber.org/atomic/Makefile +78 -0
  105. data/vendor/go.uber.org/atomic/README.md +63 -0
  106. data/vendor/go.uber.org/atomic/bool.go +81 -0
  107. data/vendor/go.uber.org/atomic/bool_ext.go +53 -0
  108. data/vendor/go.uber.org/atomic/doc.go +23 -0
  109. data/vendor/go.uber.org/atomic/duration.go +82 -0
  110. data/vendor/go.uber.org/atomic/duration_ext.go +40 -0
  111. data/vendor/go.uber.org/atomic/error.go +51 -0
  112. data/vendor/go.uber.org/atomic/error_ext.go +39 -0
  113. data/vendor/go.uber.org/atomic/float64.go +76 -0
  114. data/vendor/go.uber.org/atomic/float64_ext.go +47 -0
  115. data/vendor/go.uber.org/atomic/gen.go +26 -0
  116. data/vendor/go.uber.org/atomic/go.mod +8 -0
  117. data/vendor/go.uber.org/atomic/go.sum +9 -0
  118. data/vendor/go.uber.org/atomic/int32.go +102 -0
  119. data/vendor/go.uber.org/atomic/int64.go +102 -0
  120. data/vendor/go.uber.org/atomic/nocmp.go +35 -0
  121. data/vendor/go.uber.org/atomic/string.go +54 -0
  122. data/vendor/go.uber.org/atomic/string_ext.go +43 -0
  123. data/vendor/go.uber.org/atomic/uint32.go +102 -0
  124. data/vendor/go.uber.org/atomic/uint64.go +102 -0
  125. data/vendor/go.uber.org/atomic/value.go +31 -0
  126. data/vendor/go.uber.org/multierr/.codecov.yml +15 -0
  127. data/vendor/go.uber.org/multierr/.gitignore +4 -0
  128. data/vendor/go.uber.org/multierr/.travis.yml +23 -0
  129. data/vendor/go.uber.org/multierr/CHANGELOG.md +60 -0
  130. data/vendor/go.uber.org/multierr/LICENSE.txt +19 -0
  131. data/vendor/go.uber.org/multierr/Makefile +42 -0
  132. data/vendor/go.uber.org/multierr/README.md +23 -0
  133. data/vendor/go.uber.org/multierr/error.go +449 -0
  134. data/vendor/go.uber.org/multierr/glide.yaml +8 -0
  135. data/vendor/go.uber.org/multierr/go.mod +8 -0
  136. data/vendor/go.uber.org/multierr/go.sum +11 -0
  137. data/vendor/go.uber.org/multierr/go113.go +52 -0
  138. data/vendor/go.uber.org/zap/.codecov.yml +17 -0
  139. data/vendor/go.uber.org/zap/.gitignore +32 -0
  140. data/vendor/go.uber.org/zap/.readme.tmpl +109 -0
  141. data/vendor/go.uber.org/zap/.travis.yml +23 -0
  142. data/vendor/go.uber.org/zap/CHANGELOG.md +432 -0
  143. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +75 -0
  144. data/vendor/go.uber.org/zap/CONTRIBUTING.md +81 -0
  145. data/vendor/go.uber.org/zap/FAQ.md +156 -0
  146. data/vendor/go.uber.org/zap/LICENSE.txt +19 -0
  147. data/vendor/go.uber.org/zap/Makefile +63 -0
  148. data/vendor/go.uber.org/zap/README.md +134 -0
  149. data/vendor/go.uber.org/zap/array.go +320 -0
  150. data/vendor/go.uber.org/zap/buffer/buffer.go +123 -0
  151. data/vendor/go.uber.org/zap/buffer/pool.go +49 -0
  152. data/vendor/go.uber.org/zap/checklicense.sh +17 -0
  153. data/vendor/go.uber.org/zap/config.go +264 -0
  154. data/vendor/go.uber.org/zap/doc.go +113 -0
  155. data/vendor/go.uber.org/zap/encoder.go +79 -0
  156. data/vendor/go.uber.org/zap/error.go +80 -0
  157. data/vendor/go.uber.org/zap/field.go +539 -0
  158. data/vendor/go.uber.org/zap/flag.go +39 -0
  159. data/vendor/go.uber.org/zap/glide.yaml +34 -0
  160. data/vendor/go.uber.org/zap/global.go +168 -0
  161. data/vendor/go.uber.org/zap/global_go112.go +26 -0
  162. data/vendor/go.uber.org/zap/global_prego112.go +26 -0
  163. data/vendor/go.uber.org/zap/go.mod +13 -0
  164. data/vendor/go.uber.org/zap/go.sum +56 -0
  165. data/vendor/go.uber.org/zap/http_handler.go +81 -0
  166. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +31 -0
  167. data/vendor/go.uber.org/zap/internal/color/color.go +44 -0
  168. data/vendor/go.uber.org/zap/internal/exit/exit.go +64 -0
  169. data/vendor/go.uber.org/zap/level.go +132 -0
  170. data/vendor/go.uber.org/zap/logger.go +344 -0
  171. data/vendor/go.uber.org/zap/options.go +140 -0
  172. data/vendor/go.uber.org/zap/sink.go +161 -0
  173. data/vendor/go.uber.org/zap/stacktrace.go +85 -0
  174. data/vendor/go.uber.org/zap/sugar.go +304 -0
  175. data/vendor/go.uber.org/zap/time.go +27 -0
  176. data/vendor/go.uber.org/zap/writer.go +99 -0
  177. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +161 -0
  178. data/vendor/go.uber.org/zap/zapcore/core.go +113 -0
  179. data/vendor/go.uber.org/zap/zapcore/doc.go +24 -0
  180. data/vendor/go.uber.org/zap/zapcore/encoder.go +443 -0
  181. data/vendor/go.uber.org/zap/zapcore/entry.go +264 -0
  182. data/vendor/go.uber.org/zap/zapcore/error.go +115 -0
  183. data/vendor/go.uber.org/zap/zapcore/field.go +227 -0
  184. data/vendor/go.uber.org/zap/zapcore/hook.go +68 -0
  185. data/vendor/go.uber.org/zap/zapcore/increase_level.go +66 -0
  186. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +534 -0
  187. data/vendor/go.uber.org/zap/zapcore/level.go +175 -0
  188. data/vendor/go.uber.org/zap/zapcore/level_strings.go +46 -0
  189. data/vendor/go.uber.org/zap/zapcore/marshaler.go +61 -0
  190. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +179 -0
  191. data/vendor/go.uber.org/zap/zapcore/sampler.go +208 -0
  192. data/vendor/go.uber.org/zap/zapcore/tee.go +81 -0
  193. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +123 -0
  194. data/vendor/golang.org/x/net/AUTHORS +3 -0
  195. data/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
  196. data/vendor/golang.org/x/net/LICENSE +27 -0
  197. data/vendor/golang.org/x/net/PATENTS +22 -0
  198. data/vendor/golang.org/x/net/context/context.go +56 -0
  199. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +71 -0
  200. data/vendor/golang.org/x/net/context/go17.go +73 -0
  201. data/vendor/golang.org/x/net/context/go19.go +21 -0
  202. data/vendor/golang.org/x/net/context/pre_go17.go +301 -0
  203. data/vendor/golang.org/x/net/context/pre_go19.go +110 -0
  204. data/vendor/golang.org/x/oauth2/.travis.yml +13 -0
  205. data/vendor/golang.org/x/oauth2/AUTHORS +3 -0
  206. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +26 -0
  207. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +3 -0
  208. data/vendor/golang.org/x/oauth2/LICENSE +27 -0
  209. data/vendor/golang.org/x/oauth2/README.md +36 -0
  210. data/vendor/golang.org/x/oauth2/go.mod +9 -0
  211. data/vendor/golang.org/x/oauth2/go.sum +361 -0
  212. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +14 -0
  213. data/vendor/golang.org/x/oauth2/internal/doc.go +6 -0
  214. data/vendor/golang.org/x/oauth2/internal/oauth2.go +37 -0
  215. data/vendor/golang.org/x/oauth2/internal/token.go +294 -0
  216. data/vendor/golang.org/x/oauth2/internal/transport.go +33 -0
  217. data/vendor/golang.org/x/oauth2/oauth2.go +381 -0
  218. data/vendor/golang.org/x/oauth2/token.go +178 -0
  219. data/vendor/golang.org/x/oauth2/transport.go +89 -0
  220. data/vendor/google.golang.org/appengine/LICENSE +202 -0
  221. data/vendor/google.golang.org/appengine/internal/api.go +678 -0
  222. data/vendor/google.golang.org/appengine/internal/api_classic.go +169 -0
  223. data/vendor/google.golang.org/appengine/internal/api_common.go +123 -0
  224. data/vendor/google.golang.org/appengine/internal/app_id.go +28 -0
  225. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +308 -0
  226. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +33 -0
  227. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +4367 -0
  228. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +551 -0
  229. data/vendor/google.golang.org/appengine/internal/identity.go +55 -0
  230. data/vendor/google.golang.org/appengine/internal/identity_classic.go +61 -0
  231. data/vendor/google.golang.org/appengine/internal/identity_flex.go +11 -0
  232. data/vendor/google.golang.org/appengine/internal/identity_vm.go +134 -0
  233. data/vendor/google.golang.org/appengine/internal/internal.go +110 -0
  234. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +1313 -0
  235. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +150 -0
  236. data/vendor/google.golang.org/appengine/internal/main.go +16 -0
  237. data/vendor/google.golang.org/appengine/internal/main_common.go +7 -0
  238. data/vendor/google.golang.org/appengine/internal/main_vm.go +69 -0
  239. data/vendor/google.golang.org/appengine/internal/metadata.go +60 -0
  240. data/vendor/google.golang.org/appengine/internal/net.go +56 -0
  241. data/vendor/google.golang.org/appengine/internal/regen.sh +40 -0
  242. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +361 -0
  243. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +44 -0
  244. data/vendor/google.golang.org/appengine/internal/transaction.go +115 -0
  245. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +527 -0
  246. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +64 -0
  247. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +210 -0
  248. data/vendor/google.golang.org/protobuf/AUTHORS +3 -0
  249. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +3 -0
  250. data/vendor/google.golang.org/protobuf/LICENSE +27 -0
  251. data/vendor/google.golang.org/protobuf/PATENTS +22 -0
  252. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +773 -0
  253. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
  254. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +371 -0
  255. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +538 -0
  256. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +318 -0
  257. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
  258. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
  259. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
  260. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +241 -0
  261. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +207 -0
  262. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +665 -0
  263. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +190 -0
  264. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
  265. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
  266. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
  267. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +265 -0
  268. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +89 -0
  269. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +39 -0
  270. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +12 -0
  271. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +158 -0
  272. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +631 -0
  273. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +471 -0
  274. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +704 -0
  275. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +450 -0
  276. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +356 -0
  277. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +107 -0
  278. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +297 -0
  279. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
  280. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +9 -0
  281. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +9 -0
  282. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
  283. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
  284. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +829 -0
  285. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
  286. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
  287. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
  288. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
  289. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +25 -0
  290. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
  291. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
  292. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +116 -0
  293. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
  294. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +184 -0
  295. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
  296. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
  297. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
  298. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +141 -0
  299. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +223 -0
  300. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +830 -0
  301. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5637 -0
  302. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +388 -0
  303. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +37 -0
  304. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +11 -0
  305. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +217 -0
  306. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +123 -0
  307. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +209 -0
  308. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
  309. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +17 -0
  310. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +496 -0
  311. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
  312. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
  313. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +276 -0
  314. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +201 -0
  315. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
  316. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
  317. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
  318. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
  319. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +176 -0
  320. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
  321. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +558 -0
  322. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +176 -0
  323. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
  324. data/vendor/google.golang.org/protobuf/internal/impl/message.go +276 -0
  325. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +465 -0
  326. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +543 -0
  327. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +249 -0
  328. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +178 -0
  329. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +174 -0
  330. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +576 -0
  331. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +74 -0
  332. data/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
  333. data/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
  334. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
  335. data/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
  336. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
  337. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +27 -0
  338. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +94 -0
  339. data/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
  340. data/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
  341. data/vendor/google.golang.org/protobuf/proto/decode.go +278 -0
  342. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
  343. data/vendor/google.golang.org/protobuf/proto/doc.go +94 -0
  344. data/vendor/google.golang.org/protobuf/proto/encode.go +319 -0
  345. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
  346. data/vendor/google.golang.org/protobuf/proto/equal.go +167 -0
  347. data/vendor/google.golang.org/protobuf/proto/extension.go +92 -0
  348. data/vendor/google.golang.org/protobuf/proto/merge.go +139 -0
  349. data/vendor/google.golang.org/protobuf/proto/messageset.go +93 -0
  350. data/vendor/google.golang.org/protobuf/proto/proto.go +43 -0
  351. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +19 -0
  352. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +19 -0
  353. data/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
  354. data/vendor/google.golang.org/protobuf/proto/size.go +97 -0
  355. data/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
  356. data/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
  357. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +276 -0
  358. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +248 -0
  359. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +286 -0
  360. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +374 -0
  361. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +252 -0
  362. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +77 -0
  363. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +504 -0
  364. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +128 -0
  365. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +461 -0
  366. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +665 -0
  367. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
  368. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +59 -0
  369. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +411 -0
  370. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +98 -0
  371. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +869 -0
  372. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
  373. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +167 -0
  374. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +44 -0
  375. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +56 -0
  376. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +4039 -0
  377. data/vendor/modules.txt +79 -0
  378. metadata +495 -0
@@ -0,0 +1,176 @@
1
+ // Copyright 2020 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package impl
6
+
7
+ import (
8
+ "fmt"
9
+ "reflect"
10
+
11
+ "google.golang.org/protobuf/proto"
12
+ pref "google.golang.org/protobuf/reflect/protoreflect"
13
+ piface "google.golang.org/protobuf/runtime/protoiface"
14
+ )
15
+
16
+ type mergeOptions struct{}
17
+
18
+ func (o mergeOptions) Merge(dst, src proto.Message) {
19
+ proto.Merge(dst, src)
20
+ }
21
+
22
+ // merge is protoreflect.Methods.Merge.
23
+ func (mi *MessageInfo) merge(in piface.MergeInput) piface.MergeOutput {
24
+ dp, ok := mi.getPointer(in.Destination)
25
+ if !ok {
26
+ return piface.MergeOutput{}
27
+ }
28
+ sp, ok := mi.getPointer(in.Source)
29
+ if !ok {
30
+ return piface.MergeOutput{}
31
+ }
32
+ mi.mergePointer(dp, sp, mergeOptions{})
33
+ return piface.MergeOutput{Flags: piface.MergeComplete}
34
+ }
35
+
36
+ func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {
37
+ mi.init()
38
+ if dst.IsNil() {
39
+ panic(fmt.Sprintf("invalid value: merging into nil message"))
40
+ }
41
+ if src.IsNil() {
42
+ return
43
+ }
44
+ for _, f := range mi.orderedCoderFields {
45
+ if f.funcs.merge == nil {
46
+ continue
47
+ }
48
+ sfptr := src.Apply(f.offset)
49
+ if f.isPointer && sfptr.Elem().IsNil() {
50
+ continue
51
+ }
52
+ f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)
53
+ }
54
+ if mi.extensionOffset.IsValid() {
55
+ sext := src.Apply(mi.extensionOffset).Extensions()
56
+ dext := dst.Apply(mi.extensionOffset).Extensions()
57
+ if *dext == nil {
58
+ *dext = make(map[int32]ExtensionField)
59
+ }
60
+ for num, sx := range *sext {
61
+ xt := sx.Type()
62
+ xi := getExtensionFieldInfo(xt)
63
+ if xi.funcs.merge == nil {
64
+ continue
65
+ }
66
+ dx := (*dext)[num]
67
+ var dv pref.Value
68
+ if dx.Type() == sx.Type() {
69
+ dv = dx.Value()
70
+ }
71
+ if !dv.IsValid() && xi.unmarshalNeedsValue {
72
+ dv = xt.New()
73
+ }
74
+ dv = xi.funcs.merge(dv, sx.Value(), opts)
75
+ dx.Set(sx.Type(), dv)
76
+ (*dext)[num] = dx
77
+ }
78
+ }
79
+ if mi.unknownOffset.IsValid() {
80
+ su := mi.getUnknownBytes(src)
81
+ if su != nil && len(*su) > 0 {
82
+ du := mi.mutableUnknownBytes(dst)
83
+ *du = append(*du, *su...)
84
+ }
85
+ }
86
+ }
87
+
88
+ func mergeScalarValue(dst, src pref.Value, opts mergeOptions) pref.Value {
89
+ return src
90
+ }
91
+
92
+ func mergeBytesValue(dst, src pref.Value, opts mergeOptions) pref.Value {
93
+ return pref.ValueOfBytes(append(emptyBuf[:], src.Bytes()...))
94
+ }
95
+
96
+ func mergeListValue(dst, src pref.Value, opts mergeOptions) pref.Value {
97
+ dstl := dst.List()
98
+ srcl := src.List()
99
+ for i, llen := 0, srcl.Len(); i < llen; i++ {
100
+ dstl.Append(srcl.Get(i))
101
+ }
102
+ return dst
103
+ }
104
+
105
+ func mergeBytesListValue(dst, src pref.Value, opts mergeOptions) pref.Value {
106
+ dstl := dst.List()
107
+ srcl := src.List()
108
+ for i, llen := 0, srcl.Len(); i < llen; i++ {
109
+ sb := srcl.Get(i).Bytes()
110
+ db := append(emptyBuf[:], sb...)
111
+ dstl.Append(pref.ValueOfBytes(db))
112
+ }
113
+ return dst
114
+ }
115
+
116
+ func mergeMessageListValue(dst, src pref.Value, opts mergeOptions) pref.Value {
117
+ dstl := dst.List()
118
+ srcl := src.List()
119
+ for i, llen := 0, srcl.Len(); i < llen; i++ {
120
+ sm := srcl.Get(i).Message()
121
+ dm := proto.Clone(sm.Interface()).ProtoReflect()
122
+ dstl.Append(pref.ValueOfMessage(dm))
123
+ }
124
+ return dst
125
+ }
126
+
127
+ func mergeMessageValue(dst, src pref.Value, opts mergeOptions) pref.Value {
128
+ opts.Merge(dst.Message().Interface(), src.Message().Interface())
129
+ return dst
130
+ }
131
+
132
+ func mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
133
+ if f.mi != nil {
134
+ if dst.Elem().IsNil() {
135
+ dst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
136
+ }
137
+ f.mi.mergePointer(dst.Elem(), src.Elem(), opts)
138
+ } else {
139
+ dm := dst.AsValueOf(f.ft).Elem()
140
+ sm := src.AsValueOf(f.ft).Elem()
141
+ if dm.IsNil() {
142
+ dm.Set(reflect.New(f.ft.Elem()))
143
+ }
144
+ opts.Merge(asMessage(dm), asMessage(sm))
145
+ }
146
+ }
147
+
148
+ func mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
149
+ for _, sp := range src.PointerSlice() {
150
+ dm := reflect.New(f.ft.Elem().Elem())
151
+ if f.mi != nil {
152
+ f.mi.mergePointer(pointerOfValue(dm), sp, opts)
153
+ } else {
154
+ opts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem())))
155
+ }
156
+ dst.AppendPointerSlice(pointerOfValue(dm))
157
+ }
158
+ }
159
+
160
+ func mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
161
+ *dst.Bytes() = append(emptyBuf[:], *src.Bytes()...)
162
+ }
163
+
164
+ func mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
165
+ v := *src.Bytes()
166
+ if len(v) > 0 {
167
+ *dst.Bytes() = append(emptyBuf[:], v...)
168
+ }
169
+ }
170
+
171
+ func mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
172
+ ds := dst.BytesSlice()
173
+ for _, v := range *src.BytesSlice() {
174
+ *ds = append(*ds, append(emptyBuf[:], v...))
175
+ }
176
+ }
@@ -0,0 +1,209 @@
1
+ // Copyright 2018 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ // Code generated by generate-types. DO NOT EDIT.
6
+
7
+ package impl
8
+
9
+ import ()
10
+
11
+ func mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
12
+ *dst.Bool() = *src.Bool()
13
+ }
14
+
15
+ func mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
16
+ v := *src.Bool()
17
+ if v != false {
18
+ *dst.Bool() = v
19
+ }
20
+ }
21
+
22
+ func mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
23
+ p := *src.BoolPtr()
24
+ if p != nil {
25
+ v := *p
26
+ *dst.BoolPtr() = &v
27
+ }
28
+ }
29
+
30
+ func mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
31
+ ds := dst.BoolSlice()
32
+ ss := src.BoolSlice()
33
+ *ds = append(*ds, *ss...)
34
+ }
35
+
36
+ func mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
37
+ *dst.Int32() = *src.Int32()
38
+ }
39
+
40
+ func mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
41
+ v := *src.Int32()
42
+ if v != 0 {
43
+ *dst.Int32() = v
44
+ }
45
+ }
46
+
47
+ func mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
48
+ p := *src.Int32Ptr()
49
+ if p != nil {
50
+ v := *p
51
+ *dst.Int32Ptr() = &v
52
+ }
53
+ }
54
+
55
+ func mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
56
+ ds := dst.Int32Slice()
57
+ ss := src.Int32Slice()
58
+ *ds = append(*ds, *ss...)
59
+ }
60
+
61
+ func mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
62
+ *dst.Uint32() = *src.Uint32()
63
+ }
64
+
65
+ func mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
66
+ v := *src.Uint32()
67
+ if v != 0 {
68
+ *dst.Uint32() = v
69
+ }
70
+ }
71
+
72
+ func mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
73
+ p := *src.Uint32Ptr()
74
+ if p != nil {
75
+ v := *p
76
+ *dst.Uint32Ptr() = &v
77
+ }
78
+ }
79
+
80
+ func mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
81
+ ds := dst.Uint32Slice()
82
+ ss := src.Uint32Slice()
83
+ *ds = append(*ds, *ss...)
84
+ }
85
+
86
+ func mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
87
+ *dst.Int64() = *src.Int64()
88
+ }
89
+
90
+ func mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
91
+ v := *src.Int64()
92
+ if v != 0 {
93
+ *dst.Int64() = v
94
+ }
95
+ }
96
+
97
+ func mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
98
+ p := *src.Int64Ptr()
99
+ if p != nil {
100
+ v := *p
101
+ *dst.Int64Ptr() = &v
102
+ }
103
+ }
104
+
105
+ func mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
106
+ ds := dst.Int64Slice()
107
+ ss := src.Int64Slice()
108
+ *ds = append(*ds, *ss...)
109
+ }
110
+
111
+ func mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
112
+ *dst.Uint64() = *src.Uint64()
113
+ }
114
+
115
+ func mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
116
+ v := *src.Uint64()
117
+ if v != 0 {
118
+ *dst.Uint64() = v
119
+ }
120
+ }
121
+
122
+ func mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
123
+ p := *src.Uint64Ptr()
124
+ if p != nil {
125
+ v := *p
126
+ *dst.Uint64Ptr() = &v
127
+ }
128
+ }
129
+
130
+ func mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
131
+ ds := dst.Uint64Slice()
132
+ ss := src.Uint64Slice()
133
+ *ds = append(*ds, *ss...)
134
+ }
135
+
136
+ func mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
137
+ *dst.Float32() = *src.Float32()
138
+ }
139
+
140
+ func mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
141
+ v := *src.Float32()
142
+ if v != 0 {
143
+ *dst.Float32() = v
144
+ }
145
+ }
146
+
147
+ func mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
148
+ p := *src.Float32Ptr()
149
+ if p != nil {
150
+ v := *p
151
+ *dst.Float32Ptr() = &v
152
+ }
153
+ }
154
+
155
+ func mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
156
+ ds := dst.Float32Slice()
157
+ ss := src.Float32Slice()
158
+ *ds = append(*ds, *ss...)
159
+ }
160
+
161
+ func mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
162
+ *dst.Float64() = *src.Float64()
163
+ }
164
+
165
+ func mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
166
+ v := *src.Float64()
167
+ if v != 0 {
168
+ *dst.Float64() = v
169
+ }
170
+ }
171
+
172
+ func mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
173
+ p := *src.Float64Ptr()
174
+ if p != nil {
175
+ v := *p
176
+ *dst.Float64Ptr() = &v
177
+ }
178
+ }
179
+
180
+ func mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
181
+ ds := dst.Float64Slice()
182
+ ss := src.Float64Slice()
183
+ *ds = append(*ds, *ss...)
184
+ }
185
+
186
+ func mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
187
+ *dst.String() = *src.String()
188
+ }
189
+
190
+ func mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
191
+ v := *src.String()
192
+ if v != "" {
193
+ *dst.String() = v
194
+ }
195
+ }
196
+
197
+ func mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
198
+ p := *src.StringPtr()
199
+ if p != nil {
200
+ v := *p
201
+ *dst.StringPtr() = &v
202
+ }
203
+ }
204
+
205
+ func mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
206
+ ds := dst.StringSlice()
207
+ ss := src.StringSlice()
208
+ *ds = append(*ds, *ss...)
209
+ }
@@ -0,0 +1,276 @@
1
+ // Copyright 2018 The Go Authors. All rights reserved.
2
+ // Use of this source code is governed by a BSD-style
3
+ // license that can be found in the LICENSE file.
4
+
5
+ package impl
6
+
7
+ import (
8
+ "fmt"
9
+ "reflect"
10
+ "strconv"
11
+ "strings"
12
+ "sync"
13
+ "sync/atomic"
14
+
15
+ "google.golang.org/protobuf/internal/genid"
16
+ "google.golang.org/protobuf/reflect/protoreflect"
17
+ pref "google.golang.org/protobuf/reflect/protoreflect"
18
+ preg "google.golang.org/protobuf/reflect/protoregistry"
19
+ )
20
+
21
+ // MessageInfo provides protobuf related functionality for a given Go type
22
+ // that represents a message. A given instance of MessageInfo is tied to
23
+ // exactly one Go type, which must be a pointer to a struct type.
24
+ //
25
+ // The exported fields must be populated before any methods are called
26
+ // and cannot be mutated after set.
27
+ type MessageInfo struct {
28
+ // GoReflectType is the underlying message Go type and must be populated.
29
+ GoReflectType reflect.Type // pointer to struct
30
+
31
+ // Desc is the underlying message descriptor type and must be populated.
32
+ Desc pref.MessageDescriptor
33
+
34
+ // Exporter must be provided in a purego environment in order to provide
35
+ // access to unexported fields.
36
+ Exporter exporter
37
+
38
+ // OneofWrappers is list of pointers to oneof wrapper struct types.
39
+ OneofWrappers []interface{}
40
+
41
+ initMu sync.Mutex // protects all unexported fields
42
+ initDone uint32
43
+
44
+ reflectMessageInfo // for reflection implementation
45
+ coderMessageInfo // for fast-path method implementations
46
+ }
47
+
48
+ // exporter is a function that returns a reference to the ith field of v,
49
+ // where v is a pointer to a struct. It returns nil if it does not support
50
+ // exporting the requested field (e.g., already exported).
51
+ type exporter func(v interface{}, i int) interface{}
52
+
53
+ // getMessageInfo returns the MessageInfo for any message type that
54
+ // is generated by our implementation of protoc-gen-go (for v2 and on).
55
+ // If it is unable to obtain a MessageInfo, it returns nil.
56
+ func getMessageInfo(mt reflect.Type) *MessageInfo {
57
+ m, ok := reflect.Zero(mt).Interface().(pref.ProtoMessage)
58
+ if !ok {
59
+ return nil
60
+ }
61
+ mr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo })
62
+ if !ok {
63
+ return nil
64
+ }
65
+ return mr.ProtoMessageInfo()
66
+ }
67
+
68
+ func (mi *MessageInfo) init() {
69
+ // This function is called in the hot path. Inline the sync.Once logic,
70
+ // since allocating a closure for Once.Do is expensive.
71
+ // Keep init small to ensure that it can be inlined.
72
+ if atomic.LoadUint32(&mi.initDone) == 0 {
73
+ mi.initOnce()
74
+ }
75
+ }
76
+
77
+ func (mi *MessageInfo) initOnce() {
78
+ mi.initMu.Lock()
79
+ defer mi.initMu.Unlock()
80
+ if mi.initDone == 1 {
81
+ return
82
+ }
83
+
84
+ t := mi.GoReflectType
85
+ if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {
86
+ panic(fmt.Sprintf("got %v, want *struct kind", t))
87
+ }
88
+ t = t.Elem()
89
+
90
+ si := mi.makeStructInfo(t)
91
+ mi.makeReflectFuncs(t, si)
92
+ mi.makeCoderMethods(t, si)
93
+
94
+ atomic.StoreUint32(&mi.initDone, 1)
95
+ }
96
+
97
+ // getPointer returns the pointer for a message, which should be of
98
+ // the type of the MessageInfo. If the message is of a different type,
99
+ // it returns ok==false.
100
+ func (mi *MessageInfo) getPointer(m pref.Message) (p pointer, ok bool) {
101
+ switch m := m.(type) {
102
+ case *messageState:
103
+ return m.pointer(), m.messageInfo() == mi
104
+ case *messageReflectWrapper:
105
+ return m.pointer(), m.messageInfo() == mi
106
+ }
107
+ return pointer{}, false
108
+ }
109
+
110
+ type (
111
+ SizeCache = int32
112
+ WeakFields = map[int32]protoreflect.ProtoMessage
113
+ UnknownFields = unknownFieldsA // TODO: switch to unknownFieldsB
114
+ unknownFieldsA = []byte
115
+ unknownFieldsB = *[]byte
116
+ ExtensionFields = map[int32]ExtensionField
117
+ )
118
+
119
+ var (
120
+ sizecacheType = reflect.TypeOf(SizeCache(0))
121
+ weakFieldsType = reflect.TypeOf(WeakFields(nil))
122
+ unknownFieldsAType = reflect.TypeOf(unknownFieldsA(nil))
123
+ unknownFieldsBType = reflect.TypeOf(unknownFieldsB(nil))
124
+ extensionFieldsType = reflect.TypeOf(ExtensionFields(nil))
125
+ )
126
+
127
+ type structInfo struct {
128
+ sizecacheOffset offset
129
+ sizecacheType reflect.Type
130
+ weakOffset offset
131
+ weakType reflect.Type
132
+ unknownOffset offset
133
+ unknownType reflect.Type
134
+ extensionOffset offset
135
+ extensionType reflect.Type
136
+
137
+ fieldsByNumber map[pref.FieldNumber]reflect.StructField
138
+ oneofsByName map[pref.Name]reflect.StructField
139
+ oneofWrappersByType map[reflect.Type]pref.FieldNumber
140
+ oneofWrappersByNumber map[pref.FieldNumber]reflect.Type
141
+ }
142
+
143
+ func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {
144
+ si := structInfo{
145
+ sizecacheOffset: invalidOffset,
146
+ weakOffset: invalidOffset,
147
+ unknownOffset: invalidOffset,
148
+ extensionOffset: invalidOffset,
149
+
150
+ fieldsByNumber: map[pref.FieldNumber]reflect.StructField{},
151
+ oneofsByName: map[pref.Name]reflect.StructField{},
152
+ oneofWrappersByType: map[reflect.Type]pref.FieldNumber{},
153
+ oneofWrappersByNumber: map[pref.FieldNumber]reflect.Type{},
154
+ }
155
+
156
+ fieldLoop:
157
+ for i := 0; i < t.NumField(); i++ {
158
+ switch f := t.Field(i); f.Name {
159
+ case genid.SizeCache_goname, genid.SizeCacheA_goname:
160
+ if f.Type == sizecacheType {
161
+ si.sizecacheOffset = offsetOf(f, mi.Exporter)
162
+ si.sizecacheType = f.Type
163
+ }
164
+ case genid.WeakFields_goname, genid.WeakFieldsA_goname:
165
+ if f.Type == weakFieldsType {
166
+ si.weakOffset = offsetOf(f, mi.Exporter)
167
+ si.weakType = f.Type
168
+ }
169
+ case genid.UnknownFields_goname, genid.UnknownFieldsA_goname:
170
+ if f.Type == unknownFieldsAType || f.Type == unknownFieldsBType {
171
+ si.unknownOffset = offsetOf(f, mi.Exporter)
172
+ si.unknownType = f.Type
173
+ }
174
+ case genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname:
175
+ if f.Type == extensionFieldsType {
176
+ si.extensionOffset = offsetOf(f, mi.Exporter)
177
+ si.extensionType = f.Type
178
+ }
179
+ default:
180
+ for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
181
+ if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
182
+ n, _ := strconv.ParseUint(s, 10, 64)
183
+ si.fieldsByNumber[pref.FieldNumber(n)] = f
184
+ continue fieldLoop
185
+ }
186
+ }
187
+ if s := f.Tag.Get("protobuf_oneof"); len(s) > 0 {
188
+ si.oneofsByName[pref.Name(s)] = f
189
+ continue fieldLoop
190
+ }
191
+ }
192
+ }
193
+
194
+ // Derive a mapping of oneof wrappers to fields.
195
+ oneofWrappers := mi.OneofWrappers
196
+ for _, method := range []string{"XXX_OneofFuncs", "XXX_OneofWrappers"} {
197
+ if fn, ok := reflect.PtrTo(t).MethodByName(method); ok {
198
+ for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {
199
+ if vs, ok := v.Interface().([]interface{}); ok {
200
+ oneofWrappers = vs
201
+ }
202
+ }
203
+ }
204
+ }
205
+ for _, v := range oneofWrappers {
206
+ tf := reflect.TypeOf(v).Elem()
207
+ f := tf.Field(0)
208
+ for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
209
+ if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
210
+ n, _ := strconv.ParseUint(s, 10, 64)
211
+ si.oneofWrappersByType[tf] = pref.FieldNumber(n)
212
+ si.oneofWrappersByNumber[pref.FieldNumber(n)] = tf
213
+ break
214
+ }
215
+ }
216
+ }
217
+
218
+ return si
219
+ }
220
+
221
+ func (mi *MessageInfo) New() protoreflect.Message {
222
+ return mi.MessageOf(reflect.New(mi.GoReflectType.Elem()).Interface())
223
+ }
224
+ func (mi *MessageInfo) Zero() protoreflect.Message {
225
+ return mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface())
226
+ }
227
+ func (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor {
228
+ return mi.Desc
229
+ }
230
+ func (mi *MessageInfo) Enum(i int) protoreflect.EnumType {
231
+ mi.init()
232
+ fd := mi.Desc.Fields().Get(i)
233
+ return Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()])
234
+ }
235
+ func (mi *MessageInfo) Message(i int) protoreflect.MessageType {
236
+ mi.init()
237
+ fd := mi.Desc.Fields().Get(i)
238
+ switch {
239
+ case fd.IsWeak():
240
+ mt, _ := preg.GlobalTypes.FindMessageByName(fd.Message().FullName())
241
+ return mt
242
+ case fd.IsMap():
243
+ return mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]}
244
+ default:
245
+ return Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()])
246
+ }
247
+ }
248
+
249
+ type mapEntryType struct {
250
+ desc protoreflect.MessageDescriptor
251
+ valType interface{} // zero value of enum or message type
252
+ }
253
+
254
+ func (mt mapEntryType) New() protoreflect.Message {
255
+ return nil
256
+ }
257
+ func (mt mapEntryType) Zero() protoreflect.Message {
258
+ return nil
259
+ }
260
+ func (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor {
261
+ return mt.desc
262
+ }
263
+ func (mt mapEntryType) Enum(i int) protoreflect.EnumType {
264
+ fd := mt.desc.Fields().Get(i)
265
+ if fd.Enum() == nil {
266
+ return nil
267
+ }
268
+ return Export{}.EnumTypeOf(mt.valType)
269
+ }
270
+ func (mt mapEntryType) Message(i int) protoreflect.MessageType {
271
+ fd := mt.desc.Fields().Get(i)
272
+ if fd.Message() == nil {
273
+ return nil
274
+ }
275
+ return Export{}.MessageTypeOf(mt.valType)
276
+ }