planetscale 0.2.0 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (365) hide show
  1. checksums.yaml +4 -4
  2. data/.buildkite/pipeline.yml +21 -0
  3. data/.github/workflows/ci.yml +9 -1
  4. data/.github/workflows/gem-push.yml +9 -2
  5. data/.licenses/go/github.com/matoous/go-nanoid/v2.dep.yml +34 -0
  6. data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +56 -3
  7. data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +205 -172
  8. data/.licenses/go/go.uber.org/zap/buffer.dep.yml +1 -1
  9. data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +1 -1
  10. data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +1 -1
  11. data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +1 -1
  12. data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +1 -1
  13. data/.licenses/go/go.uber.org/zap.dep.yml +1 -1
  14. data/README.md +11 -8
  15. data/controller.go +24 -26
  16. data/go.mod +4 -3
  17. data/go.sum +42 -27
  18. data/lib/generators/planetscale/install_generator.rb +8 -6
  19. data/lib/planetscale/version.rb +1 -1
  20. data/lib/planetscale.rb +14 -15
  21. data/planetscale.gemspec +2 -2
  22. data/proxy/planetscale-darwin.h +1 -1
  23. data/proxy/planetscale-darwin.so +0 -0
  24. data/proxy/planetscale-linux.h +1 -1
  25. data/proxy/planetscale-linux.so +0 -0
  26. data/proxy.go +1 -5
  27. metadata +6 -342
  28. data/vendor/github.com/armon/circbuf/.gitignore +0 -22
  29. data/vendor/github.com/armon/circbuf/LICENSE +0 -20
  30. data/vendor/github.com/armon/circbuf/README.md +0 -28
  31. data/vendor/github.com/armon/circbuf/circbuf.go +0 -92
  32. data/vendor/github.com/armon/circbuf/go.mod +0 -1
  33. data/vendor/github.com/golang/protobuf/AUTHORS +0 -3
  34. data/vendor/github.com/golang/protobuf/CONTRIBUTORS +0 -3
  35. data/vendor/github.com/golang/protobuf/LICENSE +0 -28
  36. data/vendor/github.com/golang/protobuf/proto/buffer.go +0 -324
  37. data/vendor/github.com/golang/protobuf/proto/defaults.go +0 -63
  38. data/vendor/github.com/golang/protobuf/proto/deprecated.go +0 -113
  39. data/vendor/github.com/golang/protobuf/proto/discard.go +0 -58
  40. data/vendor/github.com/golang/protobuf/proto/extensions.go +0 -356
  41. data/vendor/github.com/golang/protobuf/proto/properties.go +0 -306
  42. data/vendor/github.com/golang/protobuf/proto/proto.go +0 -167
  43. data/vendor/github.com/golang/protobuf/proto/registry.go +0 -317
  44. data/vendor/github.com/golang/protobuf/proto/text_decode.go +0 -801
  45. data/vendor/github.com/golang/protobuf/proto/text_encode.go +0 -560
  46. data/vendor/github.com/golang/protobuf/proto/wire.go +0 -78
  47. data/vendor/github.com/golang/protobuf/proto/wrappers.go +0 -34
  48. data/vendor/github.com/gorilla/mux/AUTHORS +0 -8
  49. data/vendor/github.com/gorilla/mux/LICENSE +0 -27
  50. data/vendor/github.com/gorilla/mux/README.md +0 -805
  51. data/vendor/github.com/gorilla/mux/doc.go +0 -306
  52. data/vendor/github.com/gorilla/mux/go.mod +0 -3
  53. data/vendor/github.com/gorilla/mux/middleware.go +0 -74
  54. data/vendor/github.com/gorilla/mux/mux.go +0 -606
  55. data/vendor/github.com/gorilla/mux/regexp.go +0 -388
  56. data/vendor/github.com/gorilla/mux/route.go +0 -736
  57. data/vendor/github.com/gorilla/mux/test_helpers.go +0 -19
  58. data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +0 -363
  59. data/vendor/github.com/hashicorp/go-cleanhttp/README.md +0 -30
  60. data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +0 -58
  61. data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +0 -20
  62. data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +0 -3
  63. data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +0 -48
  64. data/vendor/github.com/mitchellh/go-homedir/LICENSE +0 -21
  65. data/vendor/github.com/mitchellh/go-homedir/README.md +0 -14
  66. data/vendor/github.com/mitchellh/go-homedir/go.mod +0 -1
  67. data/vendor/github.com/mitchellh/go-homedir/homedir.go +0 -167
  68. data/vendor/github.com/pkg/errors/.gitignore +0 -24
  69. data/vendor/github.com/pkg/errors/.travis.yml +0 -10
  70. data/vendor/github.com/pkg/errors/LICENSE +0 -23
  71. data/vendor/github.com/pkg/errors/Makefile +0 -44
  72. data/vendor/github.com/pkg/errors/README.md +0 -59
  73. data/vendor/github.com/pkg/errors/appveyor.yml +0 -32
  74. data/vendor/github.com/pkg/errors/errors.go +0 -288
  75. data/vendor/github.com/pkg/errors/go113.go +0 -38
  76. data/vendor/github.com/pkg/errors/stack.go +0 -177
  77. data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +0 -139
  78. data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +0 -258
  79. data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +0 -142
  80. data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +0 -305
  81. data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +0 -131
  82. data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +0 -368
  83. data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +0 -78
  84. data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +0 -163
  85. data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +0 -467
  86. data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +0 -73
  87. data/vendor/go.uber.org/atomic/.codecov.yml +0 -19
  88. data/vendor/go.uber.org/atomic/.gitignore +0 -12
  89. data/vendor/go.uber.org/atomic/.travis.yml +0 -27
  90. data/vendor/go.uber.org/atomic/CHANGELOG.md +0 -76
  91. data/vendor/go.uber.org/atomic/LICENSE.txt +0 -19
  92. data/vendor/go.uber.org/atomic/Makefile +0 -78
  93. data/vendor/go.uber.org/atomic/README.md +0 -63
  94. data/vendor/go.uber.org/atomic/bool.go +0 -81
  95. data/vendor/go.uber.org/atomic/bool_ext.go +0 -53
  96. data/vendor/go.uber.org/atomic/doc.go +0 -23
  97. data/vendor/go.uber.org/atomic/duration.go +0 -82
  98. data/vendor/go.uber.org/atomic/duration_ext.go +0 -40
  99. data/vendor/go.uber.org/atomic/error.go +0 -51
  100. data/vendor/go.uber.org/atomic/error_ext.go +0 -39
  101. data/vendor/go.uber.org/atomic/float64.go +0 -76
  102. data/vendor/go.uber.org/atomic/float64_ext.go +0 -47
  103. data/vendor/go.uber.org/atomic/gen.go +0 -26
  104. data/vendor/go.uber.org/atomic/go.mod +0 -8
  105. data/vendor/go.uber.org/atomic/go.sum +0 -9
  106. data/vendor/go.uber.org/atomic/int32.go +0 -102
  107. data/vendor/go.uber.org/atomic/int64.go +0 -102
  108. data/vendor/go.uber.org/atomic/nocmp.go +0 -35
  109. data/vendor/go.uber.org/atomic/string.go +0 -54
  110. data/vendor/go.uber.org/atomic/string_ext.go +0 -43
  111. data/vendor/go.uber.org/atomic/uint32.go +0 -102
  112. data/vendor/go.uber.org/atomic/uint64.go +0 -102
  113. data/vendor/go.uber.org/atomic/value.go +0 -31
  114. data/vendor/go.uber.org/multierr/.codecov.yml +0 -15
  115. data/vendor/go.uber.org/multierr/.gitignore +0 -4
  116. data/vendor/go.uber.org/multierr/.travis.yml +0 -23
  117. data/vendor/go.uber.org/multierr/CHANGELOG.md +0 -60
  118. data/vendor/go.uber.org/multierr/LICENSE.txt +0 -19
  119. data/vendor/go.uber.org/multierr/Makefile +0 -42
  120. data/vendor/go.uber.org/multierr/README.md +0 -23
  121. data/vendor/go.uber.org/multierr/error.go +0 -449
  122. data/vendor/go.uber.org/multierr/glide.yaml +0 -8
  123. data/vendor/go.uber.org/multierr/go.mod +0 -8
  124. data/vendor/go.uber.org/multierr/go.sum +0 -11
  125. data/vendor/go.uber.org/multierr/go113.go +0 -52
  126. data/vendor/go.uber.org/zap/.codecov.yml +0 -17
  127. data/vendor/go.uber.org/zap/.gitignore +0 -32
  128. data/vendor/go.uber.org/zap/.readme.tmpl +0 -109
  129. data/vendor/go.uber.org/zap/.travis.yml +0 -23
  130. data/vendor/go.uber.org/zap/CHANGELOG.md +0 -432
  131. data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +0 -75
  132. data/vendor/go.uber.org/zap/CONTRIBUTING.md +0 -81
  133. data/vendor/go.uber.org/zap/FAQ.md +0 -156
  134. data/vendor/go.uber.org/zap/LICENSE.txt +0 -19
  135. data/vendor/go.uber.org/zap/Makefile +0 -63
  136. data/vendor/go.uber.org/zap/README.md +0 -134
  137. data/vendor/go.uber.org/zap/array.go +0 -320
  138. data/vendor/go.uber.org/zap/buffer/buffer.go +0 -123
  139. data/vendor/go.uber.org/zap/buffer/pool.go +0 -49
  140. data/vendor/go.uber.org/zap/checklicense.sh +0 -17
  141. data/vendor/go.uber.org/zap/config.go +0 -264
  142. data/vendor/go.uber.org/zap/doc.go +0 -113
  143. data/vendor/go.uber.org/zap/encoder.go +0 -79
  144. data/vendor/go.uber.org/zap/error.go +0 -80
  145. data/vendor/go.uber.org/zap/field.go +0 -539
  146. data/vendor/go.uber.org/zap/flag.go +0 -39
  147. data/vendor/go.uber.org/zap/glide.yaml +0 -34
  148. data/vendor/go.uber.org/zap/global.go +0 -168
  149. data/vendor/go.uber.org/zap/global_go112.go +0 -26
  150. data/vendor/go.uber.org/zap/global_prego112.go +0 -26
  151. data/vendor/go.uber.org/zap/go.mod +0 -13
  152. data/vendor/go.uber.org/zap/go.sum +0 -56
  153. data/vendor/go.uber.org/zap/http_handler.go +0 -81
  154. data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +0 -31
  155. data/vendor/go.uber.org/zap/internal/color/color.go +0 -44
  156. data/vendor/go.uber.org/zap/internal/exit/exit.go +0 -64
  157. data/vendor/go.uber.org/zap/level.go +0 -132
  158. data/vendor/go.uber.org/zap/logger.go +0 -344
  159. data/vendor/go.uber.org/zap/options.go +0 -140
  160. data/vendor/go.uber.org/zap/sink.go +0 -161
  161. data/vendor/go.uber.org/zap/stacktrace.go +0 -85
  162. data/vendor/go.uber.org/zap/sugar.go +0 -304
  163. data/vendor/go.uber.org/zap/time.go +0 -27
  164. data/vendor/go.uber.org/zap/writer.go +0 -99
  165. data/vendor/go.uber.org/zap/zapcore/console_encoder.go +0 -161
  166. data/vendor/go.uber.org/zap/zapcore/core.go +0 -113
  167. data/vendor/go.uber.org/zap/zapcore/doc.go +0 -24
  168. data/vendor/go.uber.org/zap/zapcore/encoder.go +0 -443
  169. data/vendor/go.uber.org/zap/zapcore/entry.go +0 -264
  170. data/vendor/go.uber.org/zap/zapcore/error.go +0 -115
  171. data/vendor/go.uber.org/zap/zapcore/field.go +0 -227
  172. data/vendor/go.uber.org/zap/zapcore/hook.go +0 -68
  173. data/vendor/go.uber.org/zap/zapcore/increase_level.go +0 -66
  174. data/vendor/go.uber.org/zap/zapcore/json_encoder.go +0 -534
  175. data/vendor/go.uber.org/zap/zapcore/level.go +0 -175
  176. data/vendor/go.uber.org/zap/zapcore/level_strings.go +0 -46
  177. data/vendor/go.uber.org/zap/zapcore/marshaler.go +0 -61
  178. data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +0 -179
  179. data/vendor/go.uber.org/zap/zapcore/sampler.go +0 -208
  180. data/vendor/go.uber.org/zap/zapcore/tee.go +0 -81
  181. data/vendor/go.uber.org/zap/zapcore/write_syncer.go +0 -123
  182. data/vendor/golang.org/x/net/AUTHORS +0 -3
  183. data/vendor/golang.org/x/net/CONTRIBUTORS +0 -3
  184. data/vendor/golang.org/x/net/LICENSE +0 -27
  185. data/vendor/golang.org/x/net/PATENTS +0 -22
  186. data/vendor/golang.org/x/net/context/context.go +0 -56
  187. data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +0 -71
  188. data/vendor/golang.org/x/net/context/go17.go +0 -73
  189. data/vendor/golang.org/x/net/context/go19.go +0 -21
  190. data/vendor/golang.org/x/net/context/pre_go17.go +0 -301
  191. data/vendor/golang.org/x/net/context/pre_go19.go +0 -110
  192. data/vendor/golang.org/x/oauth2/.travis.yml +0 -13
  193. data/vendor/golang.org/x/oauth2/AUTHORS +0 -3
  194. data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +0 -26
  195. data/vendor/golang.org/x/oauth2/CONTRIBUTORS +0 -3
  196. data/vendor/golang.org/x/oauth2/LICENSE +0 -27
  197. data/vendor/golang.org/x/oauth2/README.md +0 -36
  198. data/vendor/golang.org/x/oauth2/go.mod +0 -9
  199. data/vendor/golang.org/x/oauth2/go.sum +0 -361
  200. data/vendor/golang.org/x/oauth2/internal/client_appengine.go +0 -14
  201. data/vendor/golang.org/x/oauth2/internal/doc.go +0 -6
  202. data/vendor/golang.org/x/oauth2/internal/oauth2.go +0 -37
  203. data/vendor/golang.org/x/oauth2/internal/token.go +0 -294
  204. data/vendor/golang.org/x/oauth2/internal/transport.go +0 -33
  205. data/vendor/golang.org/x/oauth2/oauth2.go +0 -381
  206. data/vendor/golang.org/x/oauth2/token.go +0 -178
  207. data/vendor/golang.org/x/oauth2/transport.go +0 -89
  208. data/vendor/google.golang.org/appengine/LICENSE +0 -202
  209. data/vendor/google.golang.org/appengine/internal/api.go +0 -678
  210. data/vendor/google.golang.org/appengine/internal/api_classic.go +0 -169
  211. data/vendor/google.golang.org/appengine/internal/api_common.go +0 -123
  212. data/vendor/google.golang.org/appengine/internal/app_id.go +0 -28
  213. data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +0 -308
  214. data/vendor/google.golang.org/appengine/internal/base/api_base.proto +0 -33
  215. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +0 -4367
  216. data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +0 -551
  217. data/vendor/google.golang.org/appengine/internal/identity.go +0 -55
  218. data/vendor/google.golang.org/appengine/internal/identity_classic.go +0 -61
  219. data/vendor/google.golang.org/appengine/internal/identity_flex.go +0 -11
  220. data/vendor/google.golang.org/appengine/internal/identity_vm.go +0 -134
  221. data/vendor/google.golang.org/appengine/internal/internal.go +0 -110
  222. data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +0 -1313
  223. data/vendor/google.golang.org/appengine/internal/log/log_service.proto +0 -150
  224. data/vendor/google.golang.org/appengine/internal/main.go +0 -16
  225. data/vendor/google.golang.org/appengine/internal/main_common.go +0 -7
  226. data/vendor/google.golang.org/appengine/internal/main_vm.go +0 -69
  227. data/vendor/google.golang.org/appengine/internal/metadata.go +0 -60
  228. data/vendor/google.golang.org/appengine/internal/net.go +0 -56
  229. data/vendor/google.golang.org/appengine/internal/regen.sh +0 -40
  230. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +0 -361
  231. data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +0 -44
  232. data/vendor/google.golang.org/appengine/internal/transaction.go +0 -115
  233. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +0 -527
  234. data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +0 -64
  235. data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +0 -210
  236. data/vendor/google.golang.org/protobuf/AUTHORS +0 -3
  237. data/vendor/google.golang.org/protobuf/CONTRIBUTORS +0 -3
  238. data/vendor/google.golang.org/protobuf/LICENSE +0 -27
  239. data/vendor/google.golang.org/protobuf/PATENTS +0 -22
  240. data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +0 -773
  241. data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +0 -7
  242. data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +0 -371
  243. data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +0 -538
  244. data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +0 -318
  245. data/vendor/google.golang.org/protobuf/internal/descopts/options.go +0 -29
  246. data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +0 -69
  247. data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +0 -213
  248. data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +0 -241
  249. data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +0 -207
  250. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +0 -665
  251. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +0 -190
  252. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +0 -161
  253. data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +0 -373
  254. data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +0 -29
  255. data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +0 -265
  256. data/vendor/google.golang.org/protobuf/internal/errors/errors.go +0 -89
  257. data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +0 -39
  258. data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +0 -12
  259. data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +0 -158
  260. data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +0 -631
  261. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +0 -471
  262. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +0 -704
  263. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +0 -450
  264. data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +0 -356
  265. data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +0 -107
  266. data/vendor/google.golang.org/protobuf/internal/filetype/build.go +0 -297
  267. data/vendor/google.golang.org/protobuf/internal/flags/flags.go +0 -24
  268. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +0 -9
  269. data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +0 -9
  270. data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +0 -34
  271. data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +0 -106
  272. data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +0 -829
  273. data/vendor/google.golang.org/protobuf/internal/genid/doc.go +0 -11
  274. data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +0 -34
  275. data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +0 -19
  276. data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +0 -31
  277. data/vendor/google.golang.org/protobuf/internal/genid/goname.go +0 -25
  278. data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +0 -16
  279. data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +0 -31
  280. data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +0 -116
  281. data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +0 -34
  282. data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +0 -184
  283. data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +0 -13
  284. data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +0 -175
  285. data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +0 -177
  286. data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +0 -141
  287. data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +0 -223
  288. data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +0 -830
  289. data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +0 -5637
  290. data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +0 -388
  291. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +0 -37
  292. data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +0 -11
  293. data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +0 -217
  294. data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +0 -123
  295. data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +0 -209
  296. data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +0 -557
  297. data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +0 -17
  298. data/vendor/google.golang.org/protobuf/internal/impl/convert.go +0 -496
  299. data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +0 -141
  300. data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +0 -121
  301. data/vendor/google.golang.org/protobuf/internal/impl/decode.go +0 -276
  302. data/vendor/google.golang.org/protobuf/internal/impl/encode.go +0 -201
  303. data/vendor/google.golang.org/protobuf/internal/impl/enum.go +0 -21
  304. data/vendor/google.golang.org/protobuf/internal/impl/extension.go +0 -156
  305. data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +0 -219
  306. data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +0 -92
  307. data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +0 -176
  308. data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +0 -81
  309. data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +0 -558
  310. data/vendor/google.golang.org/protobuf/internal/impl/merge.go +0 -176
  311. data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +0 -209
  312. data/vendor/google.golang.org/protobuf/internal/impl/message.go +0 -276
  313. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +0 -465
  314. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +0 -543
  315. data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +0 -249
  316. data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +0 -178
  317. data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +0 -174
  318. data/vendor/google.golang.org/protobuf/internal/impl/validate.go +0 -576
  319. data/vendor/google.golang.org/protobuf/internal/impl/weak.go +0 -74
  320. data/vendor/google.golang.org/protobuf/internal/order/order.go +0 -89
  321. data/vendor/google.golang.org/protobuf/internal/order/range.go +0 -115
  322. data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +0 -29
  323. data/vendor/google.golang.org/protobuf/internal/set/ints.go +0 -58
  324. data/vendor/google.golang.org/protobuf/internal/strs/strings.go +0 -196
  325. data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +0 -27
  326. data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +0 -94
  327. data/vendor/google.golang.org/protobuf/internal/version/version.go +0 -79
  328. data/vendor/google.golang.org/protobuf/proto/checkinit.go +0 -71
  329. data/vendor/google.golang.org/protobuf/proto/decode.go +0 -278
  330. data/vendor/google.golang.org/protobuf/proto/decode_gen.go +0 -603
  331. data/vendor/google.golang.org/protobuf/proto/doc.go +0 -94
  332. data/vendor/google.golang.org/protobuf/proto/encode.go +0 -319
  333. data/vendor/google.golang.org/protobuf/proto/encode_gen.go +0 -97
  334. data/vendor/google.golang.org/protobuf/proto/equal.go +0 -167
  335. data/vendor/google.golang.org/protobuf/proto/extension.go +0 -92
  336. data/vendor/google.golang.org/protobuf/proto/merge.go +0 -139
  337. data/vendor/google.golang.org/protobuf/proto/messageset.go +0 -93
  338. data/vendor/google.golang.org/protobuf/proto/proto.go +0 -43
  339. data/vendor/google.golang.org/protobuf/proto/proto_methods.go +0 -19
  340. data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +0 -19
  341. data/vendor/google.golang.org/protobuf/proto/reset.go +0 -43
  342. data/vendor/google.golang.org/protobuf/proto/size.go +0 -97
  343. data/vendor/google.golang.org/protobuf/proto/size_gen.go +0 -55
  344. data/vendor/google.golang.org/protobuf/proto/wrappers.go +0 -29
  345. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +0 -276
  346. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +0 -248
  347. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +0 -286
  348. data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +0 -374
  349. data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +0 -252
  350. data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +0 -77
  351. data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +0 -504
  352. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +0 -128
  353. data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +0 -461
  354. data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +0 -665
  355. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +0 -285
  356. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +0 -59
  357. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +0 -411
  358. data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +0 -98
  359. data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +0 -869
  360. data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +0 -15
  361. data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +0 -167
  362. data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +0 -44
  363. data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +0 -56
  364. data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +0 -4039
  365. data/vendor/modules.txt +0 -79
@@ -1,388 +0,0 @@
1
- // Copyright 2019 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
- "reflect"
9
- "sort"
10
-
11
- "google.golang.org/protobuf/encoding/protowire"
12
- "google.golang.org/protobuf/internal/genid"
13
- pref "google.golang.org/protobuf/reflect/protoreflect"
14
- )
15
-
16
- type mapInfo struct {
17
- goType reflect.Type
18
- keyWiretag uint64
19
- valWiretag uint64
20
- keyFuncs valueCoderFuncs
21
- valFuncs valueCoderFuncs
22
- keyZero pref.Value
23
- keyKind pref.Kind
24
- conv *mapConverter
25
- }
26
-
27
- func encoderFuncsForMap(fd pref.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) {
28
- // TODO: Consider generating specialized map coders.
29
- keyField := fd.MapKey()
30
- valField := fd.MapValue()
31
- keyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()])
32
- valWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()])
33
- keyFuncs := encoderFuncsForValue(keyField)
34
- valFuncs := encoderFuncsForValue(valField)
35
- conv := newMapConverter(ft, fd)
36
-
37
- mapi := &mapInfo{
38
- goType: ft,
39
- keyWiretag: keyWiretag,
40
- valWiretag: valWiretag,
41
- keyFuncs: keyFuncs,
42
- valFuncs: valFuncs,
43
- keyZero: keyField.Default(),
44
- keyKind: keyField.Kind(),
45
- conv: conv,
46
- }
47
- if valField.Kind() == pref.MessageKind {
48
- valueMessage = getMessageInfo(ft.Elem())
49
- }
50
-
51
- funcs = pointerCoderFuncs{
52
- size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
53
- return sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts)
54
- },
55
- marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
56
- return appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts)
57
- },
58
- unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
59
- mp := p.AsValueOf(ft)
60
- if mp.Elem().IsNil() {
61
- mp.Elem().Set(reflect.MakeMap(mapi.goType))
62
- }
63
- if f.mi == nil {
64
- return consumeMap(b, mp.Elem(), wtyp, mapi, f, opts)
65
- } else {
66
- return consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts)
67
- }
68
- },
69
- }
70
- switch valField.Kind() {
71
- case pref.MessageKind:
72
- funcs.merge = mergeMapOfMessage
73
- case pref.BytesKind:
74
- funcs.merge = mergeMapOfBytes
75
- default:
76
- funcs.merge = mergeMap
77
- }
78
- if valFuncs.isInit != nil {
79
- funcs.isInit = func(p pointer, f *coderFieldInfo) error {
80
- return isInitMap(p.AsValueOf(ft).Elem(), mapi, f)
81
- }
82
- }
83
- return valueMessage, funcs
84
- }
85
-
86
- const (
87
- mapKeyTagSize = 1 // field 1, tag size 1.
88
- mapValTagSize = 1 // field 2, tag size 2.
89
- )
90
-
91
- func sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int {
92
- if mapv.Len() == 0 {
93
- return 0
94
- }
95
- n := 0
96
- iter := mapRange(mapv)
97
- for iter.Next() {
98
- key := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey()
99
- keySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
100
- var valSize int
101
- value := mapi.conv.valConv.PBValueOf(iter.Value())
102
- if f.mi == nil {
103
- valSize = mapi.valFuncs.size(value, mapValTagSize, opts)
104
- } else {
105
- p := pointerOfValue(iter.Value())
106
- valSize += mapValTagSize
107
- valSize += protowire.SizeBytes(f.mi.sizePointer(p, opts))
108
- }
109
- n += f.tagsize + protowire.SizeBytes(keySize+valSize)
110
- }
111
- return n
112
- }
113
-
114
- func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
115
- if wtyp != protowire.BytesType {
116
- return out, errUnknown
117
- }
118
- b, n := protowire.ConsumeBytes(b)
119
- if n < 0 {
120
- return out, errDecode
121
- }
122
- var (
123
- key = mapi.keyZero
124
- val = mapi.conv.valConv.New()
125
- )
126
- for len(b) > 0 {
127
- num, wtyp, n := protowire.ConsumeTag(b)
128
- if n < 0 {
129
- return out, errDecode
130
- }
131
- if num > protowire.MaxValidNumber {
132
- return out, errDecode
133
- }
134
- b = b[n:]
135
- err := errUnknown
136
- switch num {
137
- case genid.MapEntry_Key_field_number:
138
- var v pref.Value
139
- var o unmarshalOutput
140
- v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)
141
- if err != nil {
142
- break
143
- }
144
- key = v
145
- n = o.n
146
- case genid.MapEntry_Value_field_number:
147
- var v pref.Value
148
- var o unmarshalOutput
149
- v, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts)
150
- if err != nil {
151
- break
152
- }
153
- val = v
154
- n = o.n
155
- }
156
- if err == errUnknown {
157
- n = protowire.ConsumeFieldValue(num, wtyp, b)
158
- if n < 0 {
159
- return out, errDecode
160
- }
161
- } else if err != nil {
162
- return out, err
163
- }
164
- b = b[n:]
165
- }
166
- mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val))
167
- out.n = n
168
- return out, nil
169
- }
170
-
171
- func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
172
- if wtyp != protowire.BytesType {
173
- return out, errUnknown
174
- }
175
- b, n := protowire.ConsumeBytes(b)
176
- if n < 0 {
177
- return out, errDecode
178
- }
179
- var (
180
- key = mapi.keyZero
181
- val = reflect.New(f.mi.GoReflectType.Elem())
182
- )
183
- for len(b) > 0 {
184
- num, wtyp, n := protowire.ConsumeTag(b)
185
- if n < 0 {
186
- return out, errDecode
187
- }
188
- if num > protowire.MaxValidNumber {
189
- return out, errDecode
190
- }
191
- b = b[n:]
192
- err := errUnknown
193
- switch num {
194
- case 1:
195
- var v pref.Value
196
- var o unmarshalOutput
197
- v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)
198
- if err != nil {
199
- break
200
- }
201
- key = v
202
- n = o.n
203
- case 2:
204
- if wtyp != protowire.BytesType {
205
- break
206
- }
207
- var v []byte
208
- v, n = protowire.ConsumeBytes(b)
209
- if n < 0 {
210
- return out, errDecode
211
- }
212
- var o unmarshalOutput
213
- o, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts)
214
- if o.initialized {
215
- // Consider this map item initialized so long as we see
216
- // an initialized value.
217
- out.initialized = true
218
- }
219
- }
220
- if err == errUnknown {
221
- n = protowire.ConsumeFieldValue(num, wtyp, b)
222
- if n < 0 {
223
- return out, errDecode
224
- }
225
- } else if err != nil {
226
- return out, err
227
- }
228
- b = b[n:]
229
- }
230
- mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val)
231
- out.n = n
232
- return out, nil
233
- }
234
-
235
- func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
236
- if f.mi == nil {
237
- key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()
238
- val := mapi.conv.valConv.PBValueOf(valrv)
239
- size := 0
240
- size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
241
- size += mapi.valFuncs.size(val, mapValTagSize, opts)
242
- b = protowire.AppendVarint(b, uint64(size))
243
- b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)
244
- if err != nil {
245
- return nil, err
246
- }
247
- return mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts)
248
- } else {
249
- key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()
250
- val := pointerOfValue(valrv)
251
- valSize := f.mi.sizePointer(val, opts)
252
- size := 0
253
- size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
254
- size += mapValTagSize + protowire.SizeBytes(valSize)
255
- b = protowire.AppendVarint(b, uint64(size))
256
- b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)
257
- if err != nil {
258
- return nil, err
259
- }
260
- b = protowire.AppendVarint(b, mapi.valWiretag)
261
- b = protowire.AppendVarint(b, uint64(valSize))
262
- return f.mi.marshalAppendPointer(b, val, opts)
263
- }
264
- }
265
-
266
- func appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
267
- if mapv.Len() == 0 {
268
- return b, nil
269
- }
270
- if opts.Deterministic() {
271
- return appendMapDeterministic(b, mapv, mapi, f, opts)
272
- }
273
- iter := mapRange(mapv)
274
- for iter.Next() {
275
- var err error
276
- b = protowire.AppendVarint(b, f.wiretag)
277
- b, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts)
278
- if err != nil {
279
- return b, err
280
- }
281
- }
282
- return b, nil
283
- }
284
-
285
- func appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
286
- keys := mapv.MapKeys()
287
- sort.Slice(keys, func(i, j int) bool {
288
- switch keys[i].Kind() {
289
- case reflect.Bool:
290
- return !keys[i].Bool() && keys[j].Bool()
291
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
292
- return keys[i].Int() < keys[j].Int()
293
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
294
- return keys[i].Uint() < keys[j].Uint()
295
- case reflect.Float32, reflect.Float64:
296
- return keys[i].Float() < keys[j].Float()
297
- case reflect.String:
298
- return keys[i].String() < keys[j].String()
299
- default:
300
- panic("invalid kind: " + keys[i].Kind().String())
301
- }
302
- })
303
- for _, key := range keys {
304
- var err error
305
- b = protowire.AppendVarint(b, f.wiretag)
306
- b, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts)
307
- if err != nil {
308
- return b, err
309
- }
310
- }
311
- return b, nil
312
- }
313
-
314
- func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {
315
- if mi := f.mi; mi != nil {
316
- mi.init()
317
- if !mi.needsInitCheck {
318
- return nil
319
- }
320
- iter := mapRange(mapv)
321
- for iter.Next() {
322
- val := pointerOfValue(iter.Value())
323
- if err := mi.checkInitializedPointer(val); err != nil {
324
- return err
325
- }
326
- }
327
- } else {
328
- iter := mapRange(mapv)
329
- for iter.Next() {
330
- val := mapi.conv.valConv.PBValueOf(iter.Value())
331
- if err := mapi.valFuncs.isInit(val); err != nil {
332
- return err
333
- }
334
- }
335
- }
336
- return nil
337
- }
338
-
339
- func mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
340
- dstm := dst.AsValueOf(f.ft).Elem()
341
- srcm := src.AsValueOf(f.ft).Elem()
342
- if srcm.Len() == 0 {
343
- return
344
- }
345
- if dstm.IsNil() {
346
- dstm.Set(reflect.MakeMap(f.ft))
347
- }
348
- iter := mapRange(srcm)
349
- for iter.Next() {
350
- dstm.SetMapIndex(iter.Key(), iter.Value())
351
- }
352
- }
353
-
354
- func mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
355
- dstm := dst.AsValueOf(f.ft).Elem()
356
- srcm := src.AsValueOf(f.ft).Elem()
357
- if srcm.Len() == 0 {
358
- return
359
- }
360
- if dstm.IsNil() {
361
- dstm.Set(reflect.MakeMap(f.ft))
362
- }
363
- iter := mapRange(srcm)
364
- for iter.Next() {
365
- dstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...)))
366
- }
367
- }
368
-
369
- func mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
370
- dstm := dst.AsValueOf(f.ft).Elem()
371
- srcm := src.AsValueOf(f.ft).Elem()
372
- if srcm.Len() == 0 {
373
- return
374
- }
375
- if dstm.IsNil() {
376
- dstm.Set(reflect.MakeMap(f.ft))
377
- }
378
- iter := mapRange(srcm)
379
- for iter.Next() {
380
- val := reflect.New(f.ft.Elem().Elem())
381
- if f.mi != nil {
382
- f.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts)
383
- } else {
384
- opts.Merge(asMessage(val), asMessage(iter.Value()))
385
- }
386
- dstm.SetMapIndex(iter.Key(), val)
387
- }
388
- }
@@ -1,37 +0,0 @@
1
- // Copyright 2019 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
- // +build !go1.12
6
-
7
- package impl
8
-
9
- import "reflect"
10
-
11
- type mapIter struct {
12
- v reflect.Value
13
- keys []reflect.Value
14
- }
15
-
16
- // mapRange provides a less-efficient equivalent to
17
- // the Go 1.12 reflect.Value.MapRange method.
18
- func mapRange(v reflect.Value) *mapIter {
19
- return &mapIter{v: v}
20
- }
21
-
22
- func (i *mapIter) Next() bool {
23
- if i.keys == nil {
24
- i.keys = i.v.MapKeys()
25
- } else {
26
- i.keys = i.keys[1:]
27
- }
28
- return len(i.keys) > 0
29
- }
30
-
31
- func (i *mapIter) Key() reflect.Value {
32
- return i.keys[0]
33
- }
34
-
35
- func (i *mapIter) Value() reflect.Value {
36
- return i.v.MapIndex(i.keys[0])
37
- }
@@ -1,11 +0,0 @@
1
- // Copyright 2019 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
- // +build go1.12
6
-
7
- package impl
8
-
9
- import "reflect"
10
-
11
- func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() }
@@ -1,217 +0,0 @@
1
- // Copyright 2019 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
- "sort"
11
-
12
- "google.golang.org/protobuf/encoding/protowire"
13
- "google.golang.org/protobuf/internal/encoding/messageset"
14
- "google.golang.org/protobuf/internal/order"
15
- pref "google.golang.org/protobuf/reflect/protoreflect"
16
- piface "google.golang.org/protobuf/runtime/protoiface"
17
- )
18
-
19
- // coderMessageInfo contains per-message information used by the fast-path functions.
20
- // This is a different type from MessageInfo to keep MessageInfo as general-purpose as
21
- // possible.
22
- type coderMessageInfo struct {
23
- methods piface.Methods
24
-
25
- orderedCoderFields []*coderFieldInfo
26
- denseCoderFields []*coderFieldInfo
27
- coderFields map[protowire.Number]*coderFieldInfo
28
- sizecacheOffset offset
29
- unknownOffset offset
30
- unknownPtrKind bool
31
- extensionOffset offset
32
- needsInitCheck bool
33
- isMessageSet bool
34
- numRequiredFields uint8
35
- }
36
-
37
- type coderFieldInfo struct {
38
- funcs pointerCoderFuncs // fast-path per-field functions
39
- mi *MessageInfo // field's message
40
- ft reflect.Type
41
- validation validationInfo // information used by message validation
42
- num pref.FieldNumber // field number
43
- offset offset // struct field offset
44
- wiretag uint64 // field tag (number + wire type)
45
- tagsize int // size of the varint-encoded tag
46
- isPointer bool // true if IsNil may be called on the struct field
47
- isRequired bool // true if field is required
48
- }
49
-
50
- func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
51
- mi.sizecacheOffset = invalidOffset
52
- mi.unknownOffset = invalidOffset
53
- mi.extensionOffset = invalidOffset
54
-
55
- if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {
56
- mi.sizecacheOffset = si.sizecacheOffset
57
- }
58
- if si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) {
59
- mi.unknownOffset = si.unknownOffset
60
- mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr
61
- }
62
- if si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType {
63
- mi.extensionOffset = si.extensionOffset
64
- }
65
-
66
- mi.coderFields = make(map[protowire.Number]*coderFieldInfo)
67
- fields := mi.Desc.Fields()
68
- preallocFields := make([]coderFieldInfo, fields.Len())
69
- for i := 0; i < fields.Len(); i++ {
70
- fd := fields.Get(i)
71
-
72
- fs := si.fieldsByNumber[fd.Number()]
73
- isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()
74
- if isOneof {
75
- fs = si.oneofsByName[fd.ContainingOneof().Name()]
76
- }
77
- ft := fs.Type
78
- var wiretag uint64
79
- if !fd.IsPacked() {
80
- wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])
81
- } else {
82
- wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)
83
- }
84
- var fieldOffset offset
85
- var funcs pointerCoderFuncs
86
- var childMessage *MessageInfo
87
- switch {
88
- case ft == nil:
89
- // This never occurs for generated message types.
90
- // It implies that a hand-crafted type has missing Go fields
91
- // for specific protobuf message fields.
92
- funcs = pointerCoderFuncs{
93
- size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
94
- return 0
95
- },
96
- marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
97
- return nil, nil
98
- },
99
- unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
100
- panic("missing Go struct field for " + string(fd.FullName()))
101
- },
102
- isInit: func(p pointer, f *coderFieldInfo) error {
103
- panic("missing Go struct field for " + string(fd.FullName()))
104
- },
105
- merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
106
- panic("missing Go struct field for " + string(fd.FullName()))
107
- },
108
- }
109
- case isOneof:
110
- fieldOffset = offsetOf(fs, mi.Exporter)
111
- case fd.IsWeak():
112
- fieldOffset = si.weakOffset
113
- funcs = makeWeakMessageFieldCoder(fd)
114
- default:
115
- fieldOffset = offsetOf(fs, mi.Exporter)
116
- childMessage, funcs = fieldCoder(fd, ft)
117
- }
118
- cf := &preallocFields[i]
119
- *cf = coderFieldInfo{
120
- num: fd.Number(),
121
- offset: fieldOffset,
122
- wiretag: wiretag,
123
- ft: ft,
124
- tagsize: protowire.SizeVarint(wiretag),
125
- funcs: funcs,
126
- mi: childMessage,
127
- validation: newFieldValidationInfo(mi, si, fd, ft),
128
- isPointer: fd.Cardinality() == pref.Repeated || fd.HasPresence(),
129
- isRequired: fd.Cardinality() == pref.Required,
130
- }
131
- mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
132
- mi.coderFields[cf.num] = cf
133
- }
134
- for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {
135
- if od := oneofs.Get(i); !od.IsSynthetic() {
136
- mi.initOneofFieldCoders(od, si)
137
- }
138
- }
139
- if messageset.IsMessageSet(mi.Desc) {
140
- if !mi.extensionOffset.IsValid() {
141
- panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName()))
142
- }
143
- if !mi.unknownOffset.IsValid() {
144
- panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName()))
145
- }
146
- mi.isMessageSet = true
147
- }
148
- sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
149
- return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num
150
- })
151
-
152
- var maxDense pref.FieldNumber
153
- for _, cf := range mi.orderedCoderFields {
154
- if cf.num >= 16 && cf.num >= 2*maxDense {
155
- break
156
- }
157
- maxDense = cf.num
158
- }
159
- mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)
160
- for _, cf := range mi.orderedCoderFields {
161
- if int(cf.num) >= len(mi.denseCoderFields) {
162
- break
163
- }
164
- mi.denseCoderFields[cf.num] = cf
165
- }
166
-
167
- // To preserve compatibility with historic wire output, marshal oneofs last.
168
- if mi.Desc.Oneofs().Len() > 0 {
169
- sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
170
- fi := fields.ByNumber(mi.orderedCoderFields[i].num)
171
- fj := fields.ByNumber(mi.orderedCoderFields[j].num)
172
- return order.LegacyFieldOrder(fi, fj)
173
- })
174
- }
175
-
176
- mi.needsInitCheck = needsInitCheck(mi.Desc)
177
- if mi.methods.Marshal == nil && mi.methods.Size == nil {
178
- mi.methods.Flags |= piface.SupportMarshalDeterministic
179
- mi.methods.Marshal = mi.marshal
180
- mi.methods.Size = mi.size
181
- }
182
- if mi.methods.Unmarshal == nil {
183
- mi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown
184
- mi.methods.Unmarshal = mi.unmarshal
185
- }
186
- if mi.methods.CheckInitialized == nil {
187
- mi.methods.CheckInitialized = mi.checkInitialized
188
- }
189
- if mi.methods.Merge == nil {
190
- mi.methods.Merge = mi.merge
191
- }
192
- }
193
-
194
- // getUnknownBytes returns a *[]byte for the unknown fields.
195
- // It is the caller's responsibility to check whether the pointer is nil.
196
- // This function is specially designed to be inlineable.
197
- func (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte {
198
- if mi.unknownPtrKind {
199
- return *p.Apply(mi.unknownOffset).BytesPtr()
200
- } else {
201
- return p.Apply(mi.unknownOffset).Bytes()
202
- }
203
- }
204
-
205
- // mutableUnknownBytes returns a *[]byte for the unknown fields.
206
- // The returned pointer is guaranteed to not be nil.
207
- func (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte {
208
- if mi.unknownPtrKind {
209
- bp := p.Apply(mi.unknownOffset).BytesPtr()
210
- if *bp == nil {
211
- *bp = new([]byte)
212
- }
213
- return *bp
214
- } else {
215
- return p.Apply(mi.unknownOffset).Bytes()
216
- }
217
- }