build(deps): bump the golang group across 1 directory with 3 updates
Bumps the golang group with 1 update in the / directory: [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo). Updates `github.com/onsi/ginkgo/v2` from 2.22.0 to 2.22.2 - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.22.0...v2.22.2) Updates `github.com/onsi/gomega` from 1.36.0 to 1.36.2 - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.36.0...v1.36.2) Updates `golang.org/x/sys` from 0.27.0 to 0.28.0 - [Commits](https://github.com/golang/sys/compare/v0.27.0...v0.28.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: golang - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch dependency-group: golang - dependency-name: golang.org/x/sys dependency-type: direct:production update-type: version-update:semver-minor dependency-group: golang ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
41d548592d
commit
eded0afca8
18
go.mod
18
go.mod
@ -13,12 +13,12 @@ require (
|
|||||||
github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475
|
github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475
|
||||||
github.com/mattn/go-shellwords v1.0.12
|
github.com/mattn/go-shellwords v1.0.12
|
||||||
github.com/networkplumbing/go-nft v0.4.0
|
github.com/networkplumbing/go-nft v0.4.0
|
||||||
github.com/onsi/ginkgo/v2 v2.22.0
|
github.com/onsi/ginkgo/v2 v2.22.2
|
||||||
github.com/onsi/gomega v1.36.0
|
github.com/onsi/gomega v1.36.2
|
||||||
github.com/opencontainers/selinux v1.11.1
|
github.com/opencontainers/selinux v1.11.1
|
||||||
github.com/safchain/ethtool v0.5.9
|
github.com/safchain/ethtool v0.5.9
|
||||||
github.com/vishvananda/netlink v1.3.0
|
github.com/vishvananda/netlink v1.3.0
|
||||||
golang.org/x/sys v0.27.0
|
golang.org/x/sys v0.28.0
|
||||||
sigs.k8s.io/knftables v0.0.18
|
sigs.k8s.io/knftables v0.0.18
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ require (
|
|||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
github.com/google/go-cmp v0.6.0 // indirect
|
github.com/google/go-cmp v0.6.0 // indirect
|
||||||
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
|
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
|
||||||
github.com/josharian/native v1.1.0 // indirect
|
github.com/josharian/native v1.1.0 // indirect
|
||||||
github.com/mdlayher/packet v1.1.2 // indirect
|
github.com/mdlayher/packet v1.1.2 // indirect
|
||||||
github.com/mdlayher/socket v0.5.1 // indirect
|
github.com/mdlayher/socket v0.5.1 // indirect
|
||||||
@ -43,12 +43,12 @@ require (
|
|||||||
github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 // indirect
|
github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 // indirect
|
||||||
github.com/vishvananda/netns v0.0.4 // indirect
|
github.com/vishvananda/netns v0.0.4 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
golang.org/x/net v0.30.0 // indirect
|
golang.org/x/net v0.33.0 // indirect
|
||||||
golang.org/x/sync v0.8.0 // indirect
|
golang.org/x/sync v0.10.0 // indirect
|
||||||
golang.org/x/text v0.19.0 // indirect
|
golang.org/x/text v0.21.0 // indirect
|
||||||
golang.org/x/tools v0.26.0 // indirect
|
golang.org/x/tools v0.28.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
||||||
google.golang.org/grpc v1.67.0 // indirect
|
google.golang.org/grpc v1.67.0 // indirect
|
||||||
google.golang.org/protobuf v1.35.1 // indirect
|
google.golang.org/protobuf v1.36.1 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
35
go.sum
35
go.sum
@ -63,8 +63,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||||||
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
|
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
|
||||||
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
|
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714 h1:/jC7qQFrv8CrSJVmaolDVOxTfS9kc36uB6H40kdbQq8=
|
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714 h1:/jC7qQFrv8CrSJVmaolDVOxTfS9kc36uB6H40kdbQq8=
|
||||||
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714/go.mod h1:2Goc3h8EklBH5mspfHFxBnEoURQCGzQQH1ga9Myjvis=
|
github.com/hugelgupf/socketpair v0.0.0-20190730060125-05d35a94e714/go.mod h1:2Goc3h8EklBH5mspfHFxBnEoURQCGzQQH1ga9Myjvis=
|
||||||
@ -84,10 +84,10 @@ github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos
|
|||||||
github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ=
|
github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ=
|
||||||
github.com/networkplumbing/go-nft v0.4.0 h1:kExVMwXW48DOAukkBwyI16h4uhE5lN9iMvQd52lpTyU=
|
github.com/networkplumbing/go-nft v0.4.0 h1:kExVMwXW48DOAukkBwyI16h4uhE5lN9iMvQd52lpTyU=
|
||||||
github.com/networkplumbing/go-nft v0.4.0/go.mod h1:HnnM+tYvlGAsMU7yoYwXEVLLiDW9gdMmb5HoGcwpuQs=
|
github.com/networkplumbing/go-nft v0.4.0/go.mod h1:HnnM+tYvlGAsMU7yoYwXEVLLiDW9gdMmb5HoGcwpuQs=
|
||||||
github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg=
|
github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU=
|
||||||
github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
|
github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk=
|
||||||
github.com/onsi/gomega v1.36.0 h1:Pb12RlruUtj4XUuPUqeEWc6j5DkVVVA49Uf6YLfC95Y=
|
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
|
||||||
github.com/onsi/gomega v1.36.0/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
|
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
|
||||||
github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8=
|
github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8=
|
||||||
github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
|
github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
|
||||||
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
||||||
@ -142,8 +142,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL
|
|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
|
||||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@ -151,8 +151,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
|
|||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
||||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
@ -164,13 +164,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
|
|
||||||
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
||||||
|
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
@ -180,8 +181,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
|
|||||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
|
golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
|
||||||
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
|
golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
@ -209,8 +210,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
|||||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
|
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
|
||||||
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
3
vendor/github.com/onsi/ginkgo/v2/.gitignore
generated
vendored
3
vendor/github.com/onsi/ginkgo/v2/.gitignore
generated
vendored
@ -4,4 +4,5 @@ tmp/**/*
|
|||||||
*.coverprofile
|
*.coverprofile
|
||||||
.vscode
|
.vscode
|
||||||
.idea/
|
.idea/
|
||||||
*.log
|
*.log
|
||||||
|
*.test
|
24
vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
generated
vendored
24
vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md
generated
vendored
@ -1,3 +1,23 @@
|
|||||||
|
## 2.22.2
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
- Bump github.com/onsi/gomega from 1.36.1 to 1.36.2 (#1499) [cc553ce]
|
||||||
|
- Bump golang.org/x/crypto (#1498) [2170370]
|
||||||
|
- Bump golang.org/x/net from 0.32.0 to 0.33.0 (#1496) [a96c44f]
|
||||||
|
|
||||||
|
## 2.22.1
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
Fix CSV encoding
|
||||||
|
- Update tests [aab3da6]
|
||||||
|
- Properly encode CSV rows [c09df39]
|
||||||
|
- Add test case for proper csv escaping [96a80fc]
|
||||||
|
- Add meta-test [43dad69]
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
- ensure *.test files are gitignored so we don't accidentally commit compiled tests again [c88c634]
|
||||||
|
- remove golang.org/x/net/context in favour of stdlib context [4df44bf]
|
||||||
|
|
||||||
## 2.22.0
|
## 2.22.0
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
@ -1022,7 +1042,7 @@ New Features:
|
|||||||
- `ginkgo -tags=TAG_LIST` passes a list of tags down to the `go build` command.
|
- `ginkgo -tags=TAG_LIST` passes a list of tags down to the `go build` command.
|
||||||
- `ginkgo --failFast` aborts the test suite after the first failure.
|
- `ginkgo --failFast` aborts the test suite after the first failure.
|
||||||
- `ginkgo generate file_1 file_2` can take multiple file arguments.
|
- `ginkgo generate file_1 file_2` can take multiple file arguments.
|
||||||
- Ginkgo now summarizes any spec failures that occurred at the end of the test run.
|
- Ginkgo now summarizes any spec failures that occurred at the end of the test run.
|
||||||
- `ginkgo --randomizeSuites` will run tests *suites* in random order using the generated/passed-in seed.
|
- `ginkgo --randomizeSuites` will run tests *suites* in random order using the generated/passed-in seed.
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
@ -1056,7 +1076,7 @@ Bug Fixes:
|
|||||||
Breaking changes:
|
Breaking changes:
|
||||||
|
|
||||||
- `thirdparty/gomocktestreporter` is gone. Use `GinkgoT()` instead
|
- `thirdparty/gomocktestreporter` is gone. Use `GinkgoT()` instead
|
||||||
- Modified the Reporter interface
|
- Modified the Reporter interface
|
||||||
- `watch` is now a subcommand, not a flag.
|
- `watch` is now a subcommand, not a flag.
|
||||||
|
|
||||||
DSL changes:
|
DSL changes:
|
||||||
|
26
vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go
generated
vendored
26
vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go
generated
vendored
@ -1,10 +1,13 @@
|
|||||||
package outline
|
package outline
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/csv"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/token"
|
"go/token"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"golang.org/x/tools/go/ast/inspector"
|
"golang.org/x/tools/go/ast/inspector"
|
||||||
@ -84,9 +87,11 @@ func (o *outline) String() string {
|
|||||||
// StringIndent returns a CSV-formated outline, but every line is indented by
|
// StringIndent returns a CSV-formated outline, but every line is indented by
|
||||||
// one 'width' of spaces for every level of nesting.
|
// one 'width' of spaces for every level of nesting.
|
||||||
func (o *outline) StringIndent(width int) string {
|
func (o *outline) StringIndent(width int) string {
|
||||||
var b strings.Builder
|
var b bytes.Buffer
|
||||||
b.WriteString("Name,Text,Start,End,Spec,Focused,Pending,Labels\n")
|
b.WriteString("Name,Text,Start,End,Spec,Focused,Pending,Labels\n")
|
||||||
|
|
||||||
|
csvWriter := csv.NewWriter(&b)
|
||||||
|
|
||||||
currentIndent := 0
|
currentIndent := 0
|
||||||
pre := func(n *ginkgoNode) {
|
pre := func(n *ginkgoNode) {
|
||||||
b.WriteString(fmt.Sprintf("%*s", currentIndent, ""))
|
b.WriteString(fmt.Sprintf("%*s", currentIndent, ""))
|
||||||
@ -96,8 +101,22 @@ func (o *outline) StringIndent(width int) string {
|
|||||||
} else {
|
} else {
|
||||||
labels = strings.Join(n.Labels, ", ")
|
labels = strings.Join(n.Labels, ", ")
|
||||||
}
|
}
|
||||||
//enclosing labels in a double quoted comma separate listed so that when inmported into a CSV app the Labels column has comma separate strings
|
|
||||||
b.WriteString(fmt.Sprintf("%s,%s,%d,%d,%t,%t,%t,\"%s\"\n", n.Name, n.Text, n.Start, n.End, n.Spec, n.Focused, n.Pending, labels))
|
row := []string{
|
||||||
|
n.Name,
|
||||||
|
n.Text,
|
||||||
|
strconv.Itoa(n.Start),
|
||||||
|
strconv.Itoa(n.End),
|
||||||
|
strconv.FormatBool(n.Spec),
|
||||||
|
strconv.FormatBool(n.Focused),
|
||||||
|
strconv.FormatBool(n.Pending),
|
||||||
|
labels,
|
||||||
|
}
|
||||||
|
csvWriter.Write(row)
|
||||||
|
|
||||||
|
// Ensure we write to `b' before the next `b.WriteString()', which might be adding indentation
|
||||||
|
csvWriter.Flush()
|
||||||
|
|
||||||
currentIndent += width
|
currentIndent += width
|
||||||
}
|
}
|
||||||
post := func(n *ginkgoNode) {
|
post := func(n *ginkgoNode) {
|
||||||
@ -106,5 +125,6 @@ func (o *outline) StringIndent(width int) string {
|
|||||||
for _, n := range o.Nodes {
|
for _, n := range o.Nodes {
|
||||||
n.Walk(pre, post)
|
n.Walk(pre, post)
|
||||||
}
|
}
|
||||||
|
|
||||||
return b.String()
|
return b.String()
|
||||||
}
|
}
|
||||||
|
6
vendor/github.com/onsi/ginkgo/v2/internal/suite.go
generated
vendored
6
vendor/github.com/onsi/ginkgo/v2/internal/suite.go
generated
vendored
@ -1,6 +1,7 @@
|
|||||||
package internal
|
package internal
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@ -9,7 +10,6 @@ import (
|
|||||||
"github.com/onsi/ginkgo/v2/internal/parallel_support"
|
"github.com/onsi/ginkgo/v2/internal/parallel_support"
|
||||||
"github.com/onsi/ginkgo/v2/reporters"
|
"github.com/onsi/ginkgo/v2/reporters"
|
||||||
"github.com/onsi/ginkgo/v2/types"
|
"github.com/onsi/ginkgo/v2/types"
|
||||||
"golang.org/x/net/context"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Phase uint
|
type Phase uint
|
||||||
@ -20,7 +20,7 @@ const (
|
|||||||
PhaseRun
|
PhaseRun
|
||||||
)
|
)
|
||||||
|
|
||||||
var PROGRESS_REPORTER_DEADLING = 5 * time.Second
|
const ProgressReporterDeadline = 5 * time.Second
|
||||||
|
|
||||||
type Suite struct {
|
type Suite struct {
|
||||||
tree *TreeNode
|
tree *TreeNode
|
||||||
@ -370,7 +370,7 @@ func (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport
|
|||||||
suite.selectiveLock.Lock()
|
suite.selectiveLock.Lock()
|
||||||
defer suite.selectiveLock.Unlock()
|
defer suite.selectiveLock.Unlock()
|
||||||
|
|
||||||
deadline, cancel := context.WithTimeout(context.Background(), PROGRESS_REPORTER_DEADLING)
|
deadline, cancel := context.WithTimeout(context.Background(), ProgressReporterDeadline)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
var additionalReports []string
|
var additionalReports []string
|
||||||
if suite.currentSpecContext != nil {
|
if suite.currentSpecContext != nil {
|
||||||
|
2
vendor/github.com/onsi/ginkgo/v2/types/version.go
generated
vendored
2
vendor/github.com/onsi/ginkgo/v2/types/version.go
generated
vendored
@ -1,3 +1,3 @@
|
|||||||
package types
|
package types
|
||||||
|
|
||||||
const VERSION = "2.22.0"
|
const VERSION = "2.22.2"
|
||||||
|
14
vendor/github.com/onsi/gomega/CHANGELOG.md
generated
vendored
14
vendor/github.com/onsi/gomega/CHANGELOG.md
generated
vendored
@ -1,3 +1,17 @@
|
|||||||
|
## 1.36.2
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
- Bump google.golang.org/protobuf from 1.35.1 to 1.36.1 (#810) [9a7609d]
|
||||||
|
- Bump golang.org/x/net from 0.30.0 to 0.33.0 (#807) [b6cb028]
|
||||||
|
- Bump github.com/onsi/ginkgo/v2 from 2.20.1 to 2.22.1 (#808) [5756529]
|
||||||
|
- Bump nokogiri from 1.16.3 to 1.16.5 in /docs (#757) [dabc12e]
|
||||||
|
|
||||||
|
## 1.36.1
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix https://github.com/onsi/gomega/issues/803 [1c6c112]
|
||||||
|
- resolves onsi/gomega#696: make HaveField great on pointer receivers given only a non-addressable value [4feb9d7]
|
||||||
|
|
||||||
## 1.36.0
|
## 1.36.0
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
2
vendor/github.com/onsi/gomega/gomega_dsl.go
generated
vendored
2
vendor/github.com/onsi/gomega/gomega_dsl.go
generated
vendored
@ -22,7 +22,7 @@ import (
|
|||||||
"github.com/onsi/gomega/types"
|
"github.com/onsi/gomega/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
const GOMEGA_VERSION = "1.36.0"
|
const GOMEGA_VERSION = "1.36.2"
|
||||||
|
|
||||||
const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler.
|
const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler.
|
||||||
If you're using Ginkgo then you probably forgot to put your assertion in an It().
|
If you're using Ginkgo then you probably forgot to put your assertion in an It().
|
||||||
|
7
vendor/github.com/onsi/gomega/matchers/have_field.go
generated
vendored
7
vendor/github.com/onsi/gomega/matchers/have_field.go
generated
vendored
@ -40,7 +40,12 @@ func extractField(actual interface{}, field string, matchername string) (any, er
|
|||||||
extractedValue = actualValue.Addr().MethodByName(strings.TrimSuffix(fields[0], "()"))
|
extractedValue = actualValue.Addr().MethodByName(strings.TrimSuffix(fields[0], "()"))
|
||||||
}
|
}
|
||||||
if extractedValue == (reflect.Value{}) {
|
if extractedValue == (reflect.Value{}) {
|
||||||
return nil, missingFieldError(fmt.Sprintf("%s could not find method named '%s' in struct of type %T.", matchername, fields[0], actual))
|
ptr := reflect.New(actualValue.Type())
|
||||||
|
ptr.Elem().Set(actualValue)
|
||||||
|
extractedValue = ptr.MethodByName(strings.TrimSuffix(fields[0], "()"))
|
||||||
|
if extractedValue == (reflect.Value{}) {
|
||||||
|
return nil, missingFieldError(fmt.Sprintf("%s could not find method named '%s' in struct of type %T.", matchername, fields[0], actual))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
t := extractedValue.Type()
|
t := extractedValue.Type()
|
||||||
if t.NumIn() != 0 || t.NumOut() != 1 {
|
if t.NumIn() != 0 || t.NumOut() != 1 {
|
||||||
|
56
vendor/golang.org/x/net/context/context.go
generated
vendored
56
vendor/golang.org/x/net/context/context.go
generated
vendored
@ -1,56 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// Package context defines the Context type, which carries deadlines,
|
|
||||||
// cancelation signals, and other request-scoped values across API boundaries
|
|
||||||
// and between processes.
|
|
||||||
// As of Go 1.7 this package is available in the standard library under the
|
|
||||||
// name context. https://golang.org/pkg/context.
|
|
||||||
//
|
|
||||||
// Incoming requests to a server should create a Context, and outgoing calls to
|
|
||||||
// servers should accept a Context. The chain of function calls between must
|
|
||||||
// propagate the Context, optionally replacing it with a modified copy created
|
|
||||||
// using WithDeadline, WithTimeout, WithCancel, or WithValue.
|
|
||||||
//
|
|
||||||
// Programs that use Contexts should follow these rules to keep interfaces
|
|
||||||
// consistent across packages and enable static analysis tools to check context
|
|
||||||
// propagation:
|
|
||||||
//
|
|
||||||
// Do not store Contexts inside a struct type; instead, pass a Context
|
|
||||||
// explicitly to each function that needs it. The Context should be the first
|
|
||||||
// parameter, typically named ctx:
|
|
||||||
//
|
|
||||||
// func DoSomething(ctx context.Context, arg Arg) error {
|
|
||||||
// // ... use ctx ...
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Do not pass a nil Context, even if a function permits it. Pass context.TODO
|
|
||||||
// if you are unsure about which Context to use.
|
|
||||||
//
|
|
||||||
// Use context Values only for request-scoped data that transits processes and
|
|
||||||
// APIs, not for passing optional parameters to functions.
|
|
||||||
//
|
|
||||||
// The same Context may be passed to functions running in different goroutines;
|
|
||||||
// Contexts are safe for simultaneous use by multiple goroutines.
|
|
||||||
//
|
|
||||||
// See http://blog.golang.org/context for example code for a server that uses
|
|
||||||
// Contexts.
|
|
||||||
package context // import "golang.org/x/net/context"
|
|
||||||
|
|
||||||
// Background returns a non-nil, empty Context. It is never canceled, has no
|
|
||||||
// values, and has no deadline. It is typically used by the main function,
|
|
||||||
// initialization, and tests, and as the top-level Context for incoming
|
|
||||||
// requests.
|
|
||||||
func Background() Context {
|
|
||||||
return background
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO returns a non-nil, empty Context. Code should use context.TODO when
|
|
||||||
// it's unclear which Context to use or it is not yet available (because the
|
|
||||||
// surrounding function has not yet been extended to accept a Context
|
|
||||||
// parameter). TODO is recognized by static analysis tools that determine
|
|
||||||
// whether Contexts are propagated correctly in a program.
|
|
||||||
func TODO() Context {
|
|
||||||
return todo
|
|
||||||
}
|
|
72
vendor/golang.org/x/net/context/go17.go
generated
vendored
72
vendor/golang.org/x/net/context/go17.go
generated
vendored
@ -1,72 +0,0 @@
|
|||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build go1.7
|
|
||||||
|
|
||||||
package context
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context" // standard library's context, as of Go 1.7
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
todo = context.TODO()
|
|
||||||
background = context.Background()
|
|
||||||
)
|
|
||||||
|
|
||||||
// Canceled is the error returned by Context.Err when the context is canceled.
|
|
||||||
var Canceled = context.Canceled
|
|
||||||
|
|
||||||
// DeadlineExceeded is the error returned by Context.Err when the context's
|
|
||||||
// deadline passes.
|
|
||||||
var DeadlineExceeded = context.DeadlineExceeded
|
|
||||||
|
|
||||||
// WithCancel returns a copy of parent with a new Done channel. The returned
|
|
||||||
// context's Done channel is closed when the returned cancel function is called
|
|
||||||
// or when the parent context's Done channel is closed, whichever happens first.
|
|
||||||
//
|
|
||||||
// Canceling this context releases resources associated with it, so code should
|
|
||||||
// call cancel as soon as the operations running in this Context complete.
|
|
||||||
func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
|
|
||||||
ctx, f := context.WithCancel(parent)
|
|
||||||
return ctx, f
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithDeadline returns a copy of the parent context with the deadline adjusted
|
|
||||||
// to be no later than d. If the parent's deadline is already earlier than d,
|
|
||||||
// WithDeadline(parent, d) is semantically equivalent to parent. The returned
|
|
||||||
// context's Done channel is closed when the deadline expires, when the returned
|
|
||||||
// cancel function is called, or when the parent context's Done channel is
|
|
||||||
// closed, whichever happens first.
|
|
||||||
//
|
|
||||||
// Canceling this context releases resources associated with it, so code should
|
|
||||||
// call cancel as soon as the operations running in this Context complete.
|
|
||||||
func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
|
|
||||||
ctx, f := context.WithDeadline(parent, deadline)
|
|
||||||
return ctx, f
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
|
|
||||||
//
|
|
||||||
// Canceling this context releases resources associated with it, so code should
|
|
||||||
// call cancel as soon as the operations running in this Context complete:
|
|
||||||
//
|
|
||||||
// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
|
|
||||||
// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
|
|
||||||
// defer cancel() // releases resources if slowOperation completes before timeout elapses
|
|
||||||
// return slowOperation(ctx)
|
|
||||||
// }
|
|
||||||
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
|
|
||||||
return WithDeadline(parent, time.Now().Add(timeout))
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithValue returns a copy of parent in which the value associated with key is
|
|
||||||
// val.
|
|
||||||
//
|
|
||||||
// Use context Values only for request-scoped data that transits processes and
|
|
||||||
// APIs, not for passing optional parameters to functions.
|
|
||||||
func WithValue(parent Context, key interface{}, val interface{}) Context {
|
|
||||||
return context.WithValue(parent, key, val)
|
|
||||||
}
|
|
20
vendor/golang.org/x/net/context/go19.go
generated
vendored
20
vendor/golang.org/x/net/context/go19.go
generated
vendored
@ -1,20 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build go1.9
|
|
||||||
|
|
||||||
package context
|
|
||||||
|
|
||||||
import "context" // standard library's context, as of Go 1.7
|
|
||||||
|
|
||||||
// A Context carries a deadline, a cancelation signal, and other values across
|
|
||||||
// API boundaries.
|
|
||||||
//
|
|
||||||
// Context's methods may be called by multiple goroutines simultaneously.
|
|
||||||
type Context = context.Context
|
|
||||||
|
|
||||||
// A CancelFunc tells an operation to abandon its work.
|
|
||||||
// A CancelFunc does not wait for the work to stop.
|
|
||||||
// After the first call, subsequent calls to a CancelFunc do nothing.
|
|
||||||
type CancelFunc = context.CancelFunc
|
|
300
vendor/golang.org/x/net/context/pre_go17.go
generated
vendored
300
vendor/golang.org/x/net/context/pre_go17.go
generated
vendored
@ -1,300 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build !go1.7
|
|
||||||
|
|
||||||
package context
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// An emptyCtx is never canceled, has no values, and has no deadline. It is not
|
|
||||||
// struct{}, since vars of this type must have distinct addresses.
|
|
||||||
type emptyCtx int
|
|
||||||
|
|
||||||
func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*emptyCtx) Done() <-chan struct{} {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*emptyCtx) Err() error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*emptyCtx) Value(key interface{}) interface{} {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *emptyCtx) String() string {
|
|
||||||
switch e {
|
|
||||||
case background:
|
|
||||||
return "context.Background"
|
|
||||||
case todo:
|
|
||||||
return "context.TODO"
|
|
||||||
}
|
|
||||||
return "unknown empty Context"
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
background = new(emptyCtx)
|
|
||||||
todo = new(emptyCtx)
|
|
||||||
)
|
|
||||||
|
|
||||||
// Canceled is the error returned by Context.Err when the context is canceled.
|
|
||||||
var Canceled = errors.New("context canceled")
|
|
||||||
|
|
||||||
// DeadlineExceeded is the error returned by Context.Err when the context's
|
|
||||||
// deadline passes.
|
|
||||||
var DeadlineExceeded = errors.New("context deadline exceeded")
|
|
||||||
|
|
||||||
// WithCancel returns a copy of parent with a new Done channel. The returned
|
|
||||||
// context's Done channel is closed when the returned cancel function is called
|
|
||||||
// or when the parent context's Done channel is closed, whichever happens first.
|
|
||||||
//
|
|
||||||
// Canceling this context releases resources associated with it, so code should
|
|
||||||
// call cancel as soon as the operations running in this Context complete.
|
|
||||||
func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
|
|
||||||
c := newCancelCtx(parent)
|
|
||||||
propagateCancel(parent, c)
|
|
||||||
return c, func() { c.cancel(true, Canceled) }
|
|
||||||
}
|
|
||||||
|
|
||||||
// newCancelCtx returns an initialized cancelCtx.
|
|
||||||
func newCancelCtx(parent Context) *cancelCtx {
|
|
||||||
return &cancelCtx{
|
|
||||||
Context: parent,
|
|
||||||
done: make(chan struct{}),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// propagateCancel arranges for child to be canceled when parent is.
|
|
||||||
func propagateCancel(parent Context, child canceler) {
|
|
||||||
if parent.Done() == nil {
|
|
||||||
return // parent is never canceled
|
|
||||||
}
|
|
||||||
if p, ok := parentCancelCtx(parent); ok {
|
|
||||||
p.mu.Lock()
|
|
||||||
if p.err != nil {
|
|
||||||
// parent has already been canceled
|
|
||||||
child.cancel(false, p.err)
|
|
||||||
} else {
|
|
||||||
if p.children == nil {
|
|
||||||
p.children = make(map[canceler]bool)
|
|
||||||
}
|
|
||||||
p.children[child] = true
|
|
||||||
}
|
|
||||||
p.mu.Unlock()
|
|
||||||
} else {
|
|
||||||
go func() {
|
|
||||||
select {
|
|
||||||
case <-parent.Done():
|
|
||||||
child.cancel(false, parent.Err())
|
|
||||||
case <-child.Done():
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// parentCancelCtx follows a chain of parent references until it finds a
|
|
||||||
// *cancelCtx. This function understands how each of the concrete types in this
|
|
||||||
// package represents its parent.
|
|
||||||
func parentCancelCtx(parent Context) (*cancelCtx, bool) {
|
|
||||||
for {
|
|
||||||
switch c := parent.(type) {
|
|
||||||
case *cancelCtx:
|
|
||||||
return c, true
|
|
||||||
case *timerCtx:
|
|
||||||
return c.cancelCtx, true
|
|
||||||
case *valueCtx:
|
|
||||||
parent = c.Context
|
|
||||||
default:
|
|
||||||
return nil, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// removeChild removes a context from its parent.
|
|
||||||
func removeChild(parent Context, child canceler) {
|
|
||||||
p, ok := parentCancelCtx(parent)
|
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
p.mu.Lock()
|
|
||||||
if p.children != nil {
|
|
||||||
delete(p.children, child)
|
|
||||||
}
|
|
||||||
p.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
// A canceler is a context type that can be canceled directly. The
|
|
||||||
// implementations are *cancelCtx and *timerCtx.
|
|
||||||
type canceler interface {
|
|
||||||
cancel(removeFromParent bool, err error)
|
|
||||||
Done() <-chan struct{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// A cancelCtx can be canceled. When canceled, it also cancels any children
|
|
||||||
// that implement canceler.
|
|
||||||
type cancelCtx struct {
|
|
||||||
Context
|
|
||||||
|
|
||||||
done chan struct{} // closed by the first cancel call.
|
|
||||||
|
|
||||||
mu sync.Mutex
|
|
||||||
children map[canceler]bool // set to nil by the first cancel call
|
|
||||||
err error // set to non-nil by the first cancel call
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cancelCtx) Done() <-chan struct{} {
|
|
||||||
return c.done
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cancelCtx) Err() error {
|
|
||||||
c.mu.Lock()
|
|
||||||
defer c.mu.Unlock()
|
|
||||||
return c.err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *cancelCtx) String() string {
|
|
||||||
return fmt.Sprintf("%v.WithCancel", c.Context)
|
|
||||||
}
|
|
||||||
|
|
||||||
// cancel closes c.done, cancels each of c's children, and, if
|
|
||||||
// removeFromParent is true, removes c from its parent's children.
|
|
||||||
func (c *cancelCtx) cancel(removeFromParent bool, err error) {
|
|
||||||
if err == nil {
|
|
||||||
panic("context: internal error: missing cancel error")
|
|
||||||
}
|
|
||||||
c.mu.Lock()
|
|
||||||
if c.err != nil {
|
|
||||||
c.mu.Unlock()
|
|
||||||
return // already canceled
|
|
||||||
}
|
|
||||||
c.err = err
|
|
||||||
close(c.done)
|
|
||||||
for child := range c.children {
|
|
||||||
// NOTE: acquiring the child's lock while holding parent's lock.
|
|
||||||
child.cancel(false, err)
|
|
||||||
}
|
|
||||||
c.children = nil
|
|
||||||
c.mu.Unlock()
|
|
||||||
|
|
||||||
if removeFromParent {
|
|
||||||
removeChild(c.Context, c)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithDeadline returns a copy of the parent context with the deadline adjusted
|
|
||||||
// to be no later than d. If the parent's deadline is already earlier than d,
|
|
||||||
// WithDeadline(parent, d) is semantically equivalent to parent. The returned
|
|
||||||
// context's Done channel is closed when the deadline expires, when the returned
|
|
||||||
// cancel function is called, or when the parent context's Done channel is
|
|
||||||
// closed, whichever happens first.
|
|
||||||
//
|
|
||||||
// Canceling this context releases resources associated with it, so code should
|
|
||||||
// call cancel as soon as the operations running in this Context complete.
|
|
||||||
func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
|
|
||||||
if cur, ok := parent.Deadline(); ok && cur.Before(deadline) {
|
|
||||||
// The current deadline is already sooner than the new one.
|
|
||||||
return WithCancel(parent)
|
|
||||||
}
|
|
||||||
c := &timerCtx{
|
|
||||||
cancelCtx: newCancelCtx(parent),
|
|
||||||
deadline: deadline,
|
|
||||||
}
|
|
||||||
propagateCancel(parent, c)
|
|
||||||
d := deadline.Sub(time.Now())
|
|
||||||
if d <= 0 {
|
|
||||||
c.cancel(true, DeadlineExceeded) // deadline has already passed
|
|
||||||
return c, func() { c.cancel(true, Canceled) }
|
|
||||||
}
|
|
||||||
c.mu.Lock()
|
|
||||||
defer c.mu.Unlock()
|
|
||||||
if c.err == nil {
|
|
||||||
c.timer = time.AfterFunc(d, func() {
|
|
||||||
c.cancel(true, DeadlineExceeded)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return c, func() { c.cancel(true, Canceled) }
|
|
||||||
}
|
|
||||||
|
|
||||||
// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to
|
|
||||||
// implement Done and Err. It implements cancel by stopping its timer then
|
|
||||||
// delegating to cancelCtx.cancel.
|
|
||||||
type timerCtx struct {
|
|
||||||
*cancelCtx
|
|
||||||
timer *time.Timer // Under cancelCtx.mu.
|
|
||||||
|
|
||||||
deadline time.Time
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *timerCtx) Deadline() (deadline time.Time, ok bool) {
|
|
||||||
return c.deadline, true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *timerCtx) String() string {
|
|
||||||
return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *timerCtx) cancel(removeFromParent bool, err error) {
|
|
||||||
c.cancelCtx.cancel(false, err)
|
|
||||||
if removeFromParent {
|
|
||||||
// Remove this timerCtx from its parent cancelCtx's children.
|
|
||||||
removeChild(c.cancelCtx.Context, c)
|
|
||||||
}
|
|
||||||
c.mu.Lock()
|
|
||||||
if c.timer != nil {
|
|
||||||
c.timer.Stop()
|
|
||||||
c.timer = nil
|
|
||||||
}
|
|
||||||
c.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
|
|
||||||
//
|
|
||||||
// Canceling this context releases resources associated with it, so code should
|
|
||||||
// call cancel as soon as the operations running in this Context complete:
|
|
||||||
//
|
|
||||||
// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
|
|
||||||
// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
|
|
||||||
// defer cancel() // releases resources if slowOperation completes before timeout elapses
|
|
||||||
// return slowOperation(ctx)
|
|
||||||
// }
|
|
||||||
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
|
|
||||||
return WithDeadline(parent, time.Now().Add(timeout))
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithValue returns a copy of parent in which the value associated with key is
|
|
||||||
// val.
|
|
||||||
//
|
|
||||||
// Use context Values only for request-scoped data that transits processes and
|
|
||||||
// APIs, not for passing optional parameters to functions.
|
|
||||||
func WithValue(parent Context, key interface{}, val interface{}) Context {
|
|
||||||
return &valueCtx{parent, key, val}
|
|
||||||
}
|
|
||||||
|
|
||||||
// A valueCtx carries a key-value pair. It implements Value for that key and
|
|
||||||
// delegates all other calls to the embedded Context.
|
|
||||||
type valueCtx struct {
|
|
||||||
Context
|
|
||||||
key, val interface{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *valueCtx) String() string {
|
|
||||||
return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *valueCtx) Value(key interface{}) interface{} {
|
|
||||||
if c.key == key {
|
|
||||||
return c.val
|
|
||||||
}
|
|
||||||
return c.Context.Value(key)
|
|
||||||
}
|
|
109
vendor/golang.org/x/net/context/pre_go19.go
generated
vendored
109
vendor/golang.org/x/net/context/pre_go19.go
generated
vendored
@ -1,109 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build !go1.9
|
|
||||||
|
|
||||||
package context
|
|
||||||
|
|
||||||
import "time"
|
|
||||||
|
|
||||||
// A Context carries a deadline, a cancelation signal, and other values across
|
|
||||||
// API boundaries.
|
|
||||||
//
|
|
||||||
// Context's methods may be called by multiple goroutines simultaneously.
|
|
||||||
type Context interface {
|
|
||||||
// Deadline returns the time when work done on behalf of this context
|
|
||||||
// should be canceled. Deadline returns ok==false when no deadline is
|
|
||||||
// set. Successive calls to Deadline return the same results.
|
|
||||||
Deadline() (deadline time.Time, ok bool)
|
|
||||||
|
|
||||||
// Done returns a channel that's closed when work done on behalf of this
|
|
||||||
// context should be canceled. Done may return nil if this context can
|
|
||||||
// never be canceled. Successive calls to Done return the same value.
|
|
||||||
//
|
|
||||||
// WithCancel arranges for Done to be closed when cancel is called;
|
|
||||||
// WithDeadline arranges for Done to be closed when the deadline
|
|
||||||
// expires; WithTimeout arranges for Done to be closed when the timeout
|
|
||||||
// elapses.
|
|
||||||
//
|
|
||||||
// Done is provided for use in select statements:
|
|
||||||
//
|
|
||||||
// // Stream generates values with DoSomething and sends them to out
|
|
||||||
// // until DoSomething returns an error or ctx.Done is closed.
|
|
||||||
// func Stream(ctx context.Context, out chan<- Value) error {
|
|
||||||
// for {
|
|
||||||
// v, err := DoSomething(ctx)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// select {
|
|
||||||
// case <-ctx.Done():
|
|
||||||
// return ctx.Err()
|
|
||||||
// case out <- v:
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// See http://blog.golang.org/pipelines for more examples of how to use
|
|
||||||
// a Done channel for cancelation.
|
|
||||||
Done() <-chan struct{}
|
|
||||||
|
|
||||||
// Err returns a non-nil error value after Done is closed. Err returns
|
|
||||||
// Canceled if the context was canceled or DeadlineExceeded if the
|
|
||||||
// context's deadline passed. No other values for Err are defined.
|
|
||||||
// After Done is closed, successive calls to Err return the same value.
|
|
||||||
Err() error
|
|
||||||
|
|
||||||
// Value returns the value associated with this context for key, or nil
|
|
||||||
// if no value is associated with key. Successive calls to Value with
|
|
||||||
// the same key returns the same result.
|
|
||||||
//
|
|
||||||
// Use context values only for request-scoped data that transits
|
|
||||||
// processes and API boundaries, not for passing optional parameters to
|
|
||||||
// functions.
|
|
||||||
//
|
|
||||||
// A key identifies a specific value in a Context. Functions that wish
|
|
||||||
// to store values in Context typically allocate a key in a global
|
|
||||||
// variable then use that key as the argument to context.WithValue and
|
|
||||||
// Context.Value. A key can be any type that supports equality;
|
|
||||||
// packages should define keys as an unexported type to avoid
|
|
||||||
// collisions.
|
|
||||||
//
|
|
||||||
// Packages that define a Context key should provide type-safe accessors
|
|
||||||
// for the values stores using that key:
|
|
||||||
//
|
|
||||||
// // Package user defines a User type that's stored in Contexts.
|
|
||||||
// package user
|
|
||||||
//
|
|
||||||
// import "golang.org/x/net/context"
|
|
||||||
//
|
|
||||||
// // User is the type of value stored in the Contexts.
|
|
||||||
// type User struct {...}
|
|
||||||
//
|
|
||||||
// // key is an unexported type for keys defined in this package.
|
|
||||||
// // This prevents collisions with keys defined in other packages.
|
|
||||||
// type key int
|
|
||||||
//
|
|
||||||
// // userKey is the key for user.User values in Contexts. It is
|
|
||||||
// // unexported; clients use user.NewContext and user.FromContext
|
|
||||||
// // instead of using this key directly.
|
|
||||||
// var userKey key = 0
|
|
||||||
//
|
|
||||||
// // NewContext returns a new Context that carries value u.
|
|
||||||
// func NewContext(ctx context.Context, u *User) context.Context {
|
|
||||||
// return context.WithValue(ctx, userKey, u)
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // FromContext returns the User value stored in ctx, if any.
|
|
||||||
// func FromContext(ctx context.Context) (*User, bool) {
|
|
||||||
// u, ok := ctx.Value(userKey).(*User)
|
|
||||||
// return u, ok
|
|
||||||
// }
|
|
||||||
Value(key interface{}) interface{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// A CancelFunc tells an operation to abandon its work.
|
|
||||||
// A CancelFunc does not wait for the work to stop.
|
|
||||||
// After the first call, subsequent calls to a CancelFunc do nothing.
|
|
||||||
type CancelFunc func()
|
|
7
vendor/golang.org/x/net/html/doc.go
generated
vendored
7
vendor/golang.org/x/net/html/doc.go
generated
vendored
@ -78,16 +78,11 @@ example, to process each anchor node in depth-first order:
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// ...
|
// ...
|
||||||
}
|
}
|
||||||
var f func(*html.Node)
|
for n := range doc.Descendants() {
|
||||||
f = func(n *html.Node) {
|
|
||||||
if n.Type == html.ElementNode && n.Data == "a" {
|
if n.Type == html.ElementNode && n.Data == "a" {
|
||||||
// Do something with n...
|
// Do something with n...
|
||||||
}
|
}
|
||||||
for c := n.FirstChild; c != nil; c = c.NextSibling {
|
|
||||||
f(c)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
f(doc)
|
|
||||||
|
|
||||||
The relevant specifications include:
|
The relevant specifications include:
|
||||||
https://html.spec.whatwg.org/multipage/syntax.html and
|
https://html.spec.whatwg.org/multipage/syntax.html and
|
||||||
|
2
vendor/golang.org/x/net/html/doctype.go
generated
vendored
2
vendor/golang.org/x/net/html/doctype.go
generated
vendored
@ -87,7 +87,7 @@ func parseDoctype(s string) (n *Node, quirks bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" &&
|
if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" &&
|
||||||
strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" {
|
strings.EqualFold(lastAttr.Val, "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd") {
|
||||||
quirks = true
|
quirks = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3
vendor/golang.org/x/net/html/foreign.go
generated
vendored
3
vendor/golang.org/x/net/html/foreign.go
generated
vendored
@ -40,8 +40,7 @@ func htmlIntegrationPoint(n *Node) bool {
|
|||||||
if n.Data == "annotation-xml" {
|
if n.Data == "annotation-xml" {
|
||||||
for _, a := range n.Attr {
|
for _, a := range n.Attr {
|
||||||
if a.Key == "encoding" {
|
if a.Key == "encoding" {
|
||||||
val := strings.ToLower(a.Val)
|
if strings.EqualFold(a.Val, "text/html") || strings.EqualFold(a.Val, "application/xhtml+xml") {
|
||||||
if val == "text/html" || val == "application/xhtml+xml" {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
56
vendor/golang.org/x/net/html/iter.go
generated
vendored
Normal file
56
vendor/golang.org/x/net/html/iter.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build go1.23
|
||||||
|
|
||||||
|
package html
|
||||||
|
|
||||||
|
import "iter"
|
||||||
|
|
||||||
|
// Ancestors returns an iterator over the ancestors of n, starting with n.Parent.
|
||||||
|
//
|
||||||
|
// Mutating a Node or its parents while iterating may have unexpected results.
|
||||||
|
func (n *Node) Ancestors() iter.Seq[*Node] {
|
||||||
|
_ = n.Parent // eager nil check
|
||||||
|
|
||||||
|
return func(yield func(*Node) bool) {
|
||||||
|
for p := n.Parent; p != nil && yield(p); p = p.Parent {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChildNodes returns an iterator over the immediate children of n,
|
||||||
|
// starting with n.FirstChild.
|
||||||
|
//
|
||||||
|
// Mutating a Node or its children while iterating may have unexpected results.
|
||||||
|
func (n *Node) ChildNodes() iter.Seq[*Node] {
|
||||||
|
_ = n.FirstChild // eager nil check
|
||||||
|
|
||||||
|
return func(yield func(*Node) bool) {
|
||||||
|
for c := n.FirstChild; c != nil && yield(c); c = c.NextSibling {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Descendants returns an iterator over all nodes recursively beneath
|
||||||
|
// n, excluding n itself. Nodes are visited in depth-first preorder.
|
||||||
|
//
|
||||||
|
// Mutating a Node or its descendants while iterating may have unexpected results.
|
||||||
|
func (n *Node) Descendants() iter.Seq[*Node] {
|
||||||
|
_ = n.FirstChild // eager nil check
|
||||||
|
|
||||||
|
return func(yield func(*Node) bool) {
|
||||||
|
n.descendants(yield)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *Node) descendants(yield func(*Node) bool) bool {
|
||||||
|
for c := range n.ChildNodes() {
|
||||||
|
if !yield(c) || !c.descendants(yield) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
4
vendor/golang.org/x/net/html/node.go
generated
vendored
4
vendor/golang.org/x/net/html/node.go
generated
vendored
@ -38,6 +38,10 @@ var scopeMarker = Node{Type: scopeMarkerNode}
|
|||||||
// that it looks like "a<b" rather than "a<b". For element nodes, DataAtom
|
// that it looks like "a<b" rather than "a<b". For element nodes, DataAtom
|
||||||
// is the atom for Data, or zero if Data is not a known tag name.
|
// is the atom for Data, or zero if Data is not a known tag name.
|
||||||
//
|
//
|
||||||
|
// Node trees may be navigated using the link fields (Parent,
|
||||||
|
// FirstChild, and so on) or a range loop over iterators such as
|
||||||
|
// [Node.Descendants].
|
||||||
|
//
|
||||||
// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace.
|
// An empty Namespace implies a "http://www.w3.org/1999/xhtml" namespace.
|
||||||
// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and
|
// Similarly, "math" is short for "http://www.w3.org/1998/Math/MathML", and
|
||||||
// "svg" is short for "http://www.w3.org/2000/svg".
|
// "svg" is short for "http://www.w3.org/2000/svg".
|
||||||
|
8
vendor/golang.org/x/net/html/parse.go
generated
vendored
8
vendor/golang.org/x/net/html/parse.go
generated
vendored
@ -840,6 +840,10 @@ func afterHeadIM(p *parser) bool {
|
|||||||
|
|
||||||
p.parseImpliedToken(StartTagToken, a.Body, a.Body.String())
|
p.parseImpliedToken(StartTagToken, a.Body, a.Body.String())
|
||||||
p.framesetOK = true
|
p.framesetOK = true
|
||||||
|
if p.tok.Type == ErrorToken {
|
||||||
|
// Stop parsing.
|
||||||
|
return true
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1031,7 +1035,7 @@ func inBodyIM(p *parser) bool {
|
|||||||
if p.tok.DataAtom == a.Input {
|
if p.tok.DataAtom == a.Input {
|
||||||
for _, t := range p.tok.Attr {
|
for _, t := range p.tok.Attr {
|
||||||
if t.Key == "type" {
|
if t.Key == "type" {
|
||||||
if strings.ToLower(t.Val) == "hidden" {
|
if strings.EqualFold(t.Val, "hidden") {
|
||||||
// Skip setting framesetOK = false
|
// Skip setting framesetOK = false
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@ -1459,7 +1463,7 @@ func inTableIM(p *parser) bool {
|
|||||||
return inHeadIM(p)
|
return inHeadIM(p)
|
||||||
case a.Input:
|
case a.Input:
|
||||||
for _, t := range p.tok.Attr {
|
for _, t := range p.tok.Attr {
|
||||||
if t.Key == "type" && strings.ToLower(t.Val) == "hidden" {
|
if t.Key == "type" && strings.EqualFold(t.Val, "hidden") {
|
||||||
p.addElement()
|
p.addElement()
|
||||||
p.oe.pop()
|
p.oe.pop()
|
||||||
return true
|
return true
|
||||||
|
9
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
9
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
@ -321,6 +321,9 @@ const (
|
|||||||
AUDIT_INTEGRITY_STATUS = 0x70a
|
AUDIT_INTEGRITY_STATUS = 0x70a
|
||||||
AUDIT_IPC = 0x517
|
AUDIT_IPC = 0x517
|
||||||
AUDIT_IPC_SET_PERM = 0x51f
|
AUDIT_IPC_SET_PERM = 0x51f
|
||||||
|
AUDIT_IPE_ACCESS = 0x58c
|
||||||
|
AUDIT_IPE_CONFIG_CHANGE = 0x58d
|
||||||
|
AUDIT_IPE_POLICY_LOAD = 0x58e
|
||||||
AUDIT_KERNEL = 0x7d0
|
AUDIT_KERNEL = 0x7d0
|
||||||
AUDIT_KERNEL_OTHER = 0x524
|
AUDIT_KERNEL_OTHER = 0x524
|
||||||
AUDIT_KERN_MODULE = 0x532
|
AUDIT_KERN_MODULE = 0x532
|
||||||
@ -489,6 +492,7 @@ const (
|
|||||||
BPF_F_ID = 0x20
|
BPF_F_ID = 0x20
|
||||||
BPF_F_NETFILTER_IP_DEFRAG = 0x1
|
BPF_F_NETFILTER_IP_DEFRAG = 0x1
|
||||||
BPF_F_QUERY_EFFECTIVE = 0x1
|
BPF_F_QUERY_EFFECTIVE = 0x1
|
||||||
|
BPF_F_REDIRECT_FLAGS = 0x19
|
||||||
BPF_F_REPLACE = 0x4
|
BPF_F_REPLACE = 0x4
|
||||||
BPF_F_SLEEPABLE = 0x10
|
BPF_F_SLEEPABLE = 0x10
|
||||||
BPF_F_STRICT_ALIGNMENT = 0x1
|
BPF_F_STRICT_ALIGNMENT = 0x1
|
||||||
@ -1166,6 +1170,7 @@ const (
|
|||||||
EXTA = 0xe
|
EXTA = 0xe
|
||||||
EXTB = 0xf
|
EXTB = 0xf
|
||||||
F2FS_SUPER_MAGIC = 0xf2f52010
|
F2FS_SUPER_MAGIC = 0xf2f52010
|
||||||
|
FALLOC_FL_ALLOCATE_RANGE = 0x0
|
||||||
FALLOC_FL_COLLAPSE_RANGE = 0x8
|
FALLOC_FL_COLLAPSE_RANGE = 0x8
|
||||||
FALLOC_FL_INSERT_RANGE = 0x20
|
FALLOC_FL_INSERT_RANGE = 0x20
|
||||||
FALLOC_FL_KEEP_SIZE = 0x1
|
FALLOC_FL_KEEP_SIZE = 0x1
|
||||||
@ -1799,6 +1804,8 @@ const (
|
|||||||
LANDLOCK_ACCESS_NET_BIND_TCP = 0x1
|
LANDLOCK_ACCESS_NET_BIND_TCP = 0x1
|
||||||
LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2
|
LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2
|
||||||
LANDLOCK_CREATE_RULESET_VERSION = 0x1
|
LANDLOCK_CREATE_RULESET_VERSION = 0x1
|
||||||
|
LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1
|
||||||
|
LANDLOCK_SCOPE_SIGNAL = 0x2
|
||||||
LINUX_REBOOT_CMD_CAD_OFF = 0x0
|
LINUX_REBOOT_CMD_CAD_OFF = 0x0
|
||||||
LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
|
LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
|
||||||
LINUX_REBOOT_CMD_HALT = 0xcdef0123
|
LINUX_REBOOT_CMD_HALT = 0xcdef0123
|
||||||
@ -1924,6 +1931,7 @@ const (
|
|||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
MNT_ID_REQ_SIZE_VER0 = 0x18
|
MNT_ID_REQ_SIZE_VER0 = 0x18
|
||||||
MNT_ID_REQ_SIZE_VER1 = 0x20
|
MNT_ID_REQ_SIZE_VER1 = 0x20
|
||||||
|
MNT_NS_INFO_SIZE_VER0 = 0x10
|
||||||
MODULE_INIT_COMPRESSED_FILE = 0x4
|
MODULE_INIT_COMPRESSED_FILE = 0x4
|
||||||
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
@ -2970,6 +2978,7 @@ const (
|
|||||||
RWF_WRITE_LIFE_NOT_SET = 0x0
|
RWF_WRITE_LIFE_NOT_SET = 0x0
|
||||||
SCHED_BATCH = 0x3
|
SCHED_BATCH = 0x3
|
||||||
SCHED_DEADLINE = 0x6
|
SCHED_DEADLINE = 0x6
|
||||||
|
SCHED_EXT = 0x7
|
||||||
SCHED_FIFO = 0x1
|
SCHED_FIFO = 0x1
|
||||||
SCHED_FLAG_ALL = 0x7f
|
SCHED_FLAG_ALL = 0x7f
|
||||||
SCHED_FLAG_DL_OVERRUN = 0x4
|
SCHED_FLAG_DL_OVERRUN = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
@ -109,6 +109,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -297,6 +298,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -335,6 +338,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
@ -109,6 +109,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -298,6 +299,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -336,6 +339,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -303,6 +304,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -341,6 +344,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
7
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
7
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
@ -112,6 +112,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -205,6 +206,7 @@ const (
|
|||||||
PERF_EVENT_IOC_SET_BPF = 0x40042408
|
PERF_EVENT_IOC_SET_BPF = 0x40042408
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
|
POE_MAGIC = 0x504f4530
|
||||||
PPPIOCATTACH = 0x4004743d
|
PPPIOCATTACH = 0x4004743d
|
||||||
PPPIOCATTCHAN = 0x40047438
|
PPPIOCATTCHAN = 0x40047438
|
||||||
PPPIOCBRIDGECHAN = 0x40047435
|
PPPIOCBRIDGECHAN = 0x40047435
|
||||||
@ -294,6 +296,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -332,6 +336,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
generated
vendored
@ -109,6 +109,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -290,6 +291,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -328,6 +331,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x100
|
IEXTEN = 0x100
|
||||||
@ -296,6 +297,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -334,6 +337,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x1029
|
SO_DOMAIN = 0x1029
|
||||||
SO_DONTROUTE = 0x10
|
SO_DONTROUTE = 0x10
|
||||||
SO_ERROR = 0x1007
|
SO_ERROR = 0x1007
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x100
|
IEXTEN = 0x100
|
||||||
@ -296,6 +297,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -334,6 +337,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x1029
|
SO_DOMAIN = 0x1029
|
||||||
SO_DONTROUTE = 0x10
|
SO_DONTROUTE = 0x10
|
||||||
SO_ERROR = 0x1007
|
SO_ERROR = 0x1007
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x100
|
IEXTEN = 0x100
|
||||||
@ -296,6 +297,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -334,6 +337,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x1029
|
SO_DOMAIN = 0x1029
|
||||||
SO_DONTROUTE = 0x10
|
SO_DONTROUTE = 0x10
|
||||||
SO_ERROR = 0x1007
|
SO_ERROR = 0x1007
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x100
|
IEXTEN = 0x100
|
||||||
@ -296,6 +297,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -334,6 +337,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x1029
|
SO_DOMAIN = 0x1029
|
||||||
SO_DONTROUTE = 0x10
|
SO_DONTROUTE = 0x10
|
||||||
SO_ERROR = 0x1007
|
SO_ERROR = 0x1007
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x4000
|
HUPCL = 0x4000
|
||||||
ICANON = 0x100
|
ICANON = 0x100
|
||||||
IEXTEN = 0x400
|
IEXTEN = 0x400
|
||||||
@ -351,6 +352,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -389,6 +392,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x4000
|
HUPCL = 0x4000
|
||||||
ICANON = 0x100
|
ICANON = 0x100
|
||||||
IEXTEN = 0x400
|
IEXTEN = 0x400
|
||||||
@ -355,6 +356,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -393,6 +396,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x4000
|
HUPCL = 0x4000
|
||||||
ICANON = 0x100
|
ICANON = 0x100
|
||||||
IEXTEN = 0x400
|
IEXTEN = 0x400
|
||||||
@ -355,6 +356,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -393,6 +396,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -287,6 +288,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -325,6 +328,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
@ -108,6 +108,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x80084803
|
HIDIOCGRAWINFO = 0x80084803
|
||||||
HIDIOCGRDESC = 0x90044802
|
HIDIOCGRDESC = 0x90044802
|
||||||
HIDIOCGRDESCSIZE = 0x80044801
|
HIDIOCGRDESCSIZE = 0x80044801
|
||||||
|
HIDIOCREVOKE = 0x4004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -359,6 +360,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x700f
|
RTC_WIE_ON = 0x700f
|
||||||
RTC_WKALM_RD = 0x80287010
|
RTC_WKALM_RD = 0x80287010
|
||||||
RTC_WKALM_SET = 0x4028700f
|
RTC_WKALM_SET = 0x4028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x4f
|
||||||
|
SCM_DEVMEM_LINEAR = 0x4e
|
||||||
SCM_TIMESTAMPING = 0x25
|
SCM_TIMESTAMPING = 0x25
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
@ -397,6 +400,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x35
|
SO_CNX_ADVICE = 0x35
|
||||||
SO_COOKIE = 0x39
|
SO_COOKIE = 0x39
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x44
|
SO_DETACH_REUSEPORT_BPF = 0x44
|
||||||
|
SO_DEVMEM_DMABUF = 0x4f
|
||||||
|
SO_DEVMEM_DONTNEED = 0x50
|
||||||
|
SO_DEVMEM_LINEAR = 0x4e
|
||||||
SO_DOMAIN = 0x27
|
SO_DOMAIN = 0x27
|
||||||
SO_DONTROUTE = 0x5
|
SO_DONTROUTE = 0x5
|
||||||
SO_ERROR = 0x4
|
SO_ERROR = 0x4
|
||||||
|
6
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
6
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
@ -112,6 +112,7 @@ const (
|
|||||||
HIDIOCGRAWINFO = 0x40084803
|
HIDIOCGRAWINFO = 0x40084803
|
||||||
HIDIOCGRDESC = 0x50044802
|
HIDIOCGRDESC = 0x50044802
|
||||||
HIDIOCGRDESCSIZE = 0x40044801
|
HIDIOCGRDESCSIZE = 0x40044801
|
||||||
|
HIDIOCREVOKE = 0x8004480d
|
||||||
HUPCL = 0x400
|
HUPCL = 0x400
|
||||||
ICANON = 0x2
|
ICANON = 0x2
|
||||||
IEXTEN = 0x8000
|
IEXTEN = 0x8000
|
||||||
@ -350,6 +351,8 @@ const (
|
|||||||
RTC_WIE_ON = 0x2000700f
|
RTC_WIE_ON = 0x2000700f
|
||||||
RTC_WKALM_RD = 0x40287010
|
RTC_WKALM_RD = 0x40287010
|
||||||
RTC_WKALM_SET = 0x8028700f
|
RTC_WKALM_SET = 0x8028700f
|
||||||
|
SCM_DEVMEM_DMABUF = 0x58
|
||||||
|
SCM_DEVMEM_LINEAR = 0x57
|
||||||
SCM_TIMESTAMPING = 0x23
|
SCM_TIMESTAMPING = 0x23
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x38
|
SCM_TIMESTAMPING_OPT_STATS = 0x38
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3c
|
SCM_TIMESTAMPING_PKTINFO = 0x3c
|
||||||
@ -436,6 +439,9 @@ const (
|
|||||||
SO_CNX_ADVICE = 0x37
|
SO_CNX_ADVICE = 0x37
|
||||||
SO_COOKIE = 0x3b
|
SO_COOKIE = 0x3b
|
||||||
SO_DETACH_REUSEPORT_BPF = 0x47
|
SO_DETACH_REUSEPORT_BPF = 0x47
|
||||||
|
SO_DEVMEM_DMABUF = 0x58
|
||||||
|
SO_DEVMEM_DONTNEED = 0x59
|
||||||
|
SO_DEVMEM_LINEAR = 0x57
|
||||||
SO_DOMAIN = 0x1029
|
SO_DOMAIN = 0x1029
|
||||||
SO_DONTROUTE = 0x10
|
SO_DONTROUTE = 0x10
|
||||||
SO_ERROR = 0x1007
|
SO_ERROR = 0x1007
|
||||||
|
60
vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
generated
vendored
60
vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
generated
vendored
@ -462,11 +462,14 @@ type FdSet struct {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofIfMsghdr = 0x70
|
SizeofIfMsghdr = 0x70
|
||||||
|
SizeofIfMsghdr2 = 0xa0
|
||||||
SizeofIfData = 0x60
|
SizeofIfData = 0x60
|
||||||
|
SizeofIfData64 = 0x80
|
||||||
SizeofIfaMsghdr = 0x14
|
SizeofIfaMsghdr = 0x14
|
||||||
SizeofIfmaMsghdr = 0x10
|
SizeofIfmaMsghdr = 0x10
|
||||||
SizeofIfmaMsghdr2 = 0x14
|
SizeofIfmaMsghdr2 = 0x14
|
||||||
SizeofRtMsghdr = 0x5c
|
SizeofRtMsghdr = 0x5c
|
||||||
|
SizeofRtMsghdr2 = 0x5c
|
||||||
SizeofRtMetrics = 0x38
|
SizeofRtMetrics = 0x38
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -480,6 +483,20 @@ type IfMsghdr struct {
|
|||||||
Data IfData
|
Data IfData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type IfMsghdr2 struct {
|
||||||
|
Msglen uint16
|
||||||
|
Version uint8
|
||||||
|
Type uint8
|
||||||
|
Addrs int32
|
||||||
|
Flags int32
|
||||||
|
Index uint16
|
||||||
|
Snd_len int32
|
||||||
|
Snd_maxlen int32
|
||||||
|
Snd_drops int32
|
||||||
|
Timer int32
|
||||||
|
Data IfData64
|
||||||
|
}
|
||||||
|
|
||||||
type IfData struct {
|
type IfData struct {
|
||||||
Type uint8
|
Type uint8
|
||||||
Typelen uint8
|
Typelen uint8
|
||||||
@ -512,6 +529,34 @@ type IfData struct {
|
|||||||
Reserved2 uint32
|
Reserved2 uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type IfData64 struct {
|
||||||
|
Type uint8
|
||||||
|
Typelen uint8
|
||||||
|
Physical uint8
|
||||||
|
Addrlen uint8
|
||||||
|
Hdrlen uint8
|
||||||
|
Recvquota uint8
|
||||||
|
Xmitquota uint8
|
||||||
|
Unused1 uint8
|
||||||
|
Mtu uint32
|
||||||
|
Metric uint32
|
||||||
|
Baudrate uint64
|
||||||
|
Ipackets uint64
|
||||||
|
Ierrors uint64
|
||||||
|
Opackets uint64
|
||||||
|
Oerrors uint64
|
||||||
|
Collisions uint64
|
||||||
|
Ibytes uint64
|
||||||
|
Obytes uint64
|
||||||
|
Imcasts uint64
|
||||||
|
Omcasts uint64
|
||||||
|
Iqdrops uint64
|
||||||
|
Noproto uint64
|
||||||
|
Recvtiming uint32
|
||||||
|
Xmittiming uint32
|
||||||
|
Lastchange Timeval32
|
||||||
|
}
|
||||||
|
|
||||||
type IfaMsghdr struct {
|
type IfaMsghdr struct {
|
||||||
Msglen uint16
|
Msglen uint16
|
||||||
Version uint8
|
Version uint8
|
||||||
@ -557,6 +602,21 @@ type RtMsghdr struct {
|
|||||||
Rmx RtMetrics
|
Rmx RtMetrics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RtMsghdr2 struct {
|
||||||
|
Msglen uint16
|
||||||
|
Version uint8
|
||||||
|
Type uint8
|
||||||
|
Index uint16
|
||||||
|
Flags int32
|
||||||
|
Addrs int32
|
||||||
|
Refcnt int32
|
||||||
|
Parentflags int32
|
||||||
|
Reserved int32
|
||||||
|
Use int32
|
||||||
|
Inits uint32
|
||||||
|
Rmx RtMetrics
|
||||||
|
}
|
||||||
|
|
||||||
type RtMetrics struct {
|
type RtMetrics struct {
|
||||||
Locks uint32
|
Locks uint32
|
||||||
Mtu uint32
|
Mtu uint32
|
||||||
|
60
vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
generated
vendored
60
vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
generated
vendored
@ -462,11 +462,14 @@ type FdSet struct {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
SizeofIfMsghdr = 0x70
|
SizeofIfMsghdr = 0x70
|
||||||
|
SizeofIfMsghdr2 = 0xa0
|
||||||
SizeofIfData = 0x60
|
SizeofIfData = 0x60
|
||||||
|
SizeofIfData64 = 0x80
|
||||||
SizeofIfaMsghdr = 0x14
|
SizeofIfaMsghdr = 0x14
|
||||||
SizeofIfmaMsghdr = 0x10
|
SizeofIfmaMsghdr = 0x10
|
||||||
SizeofIfmaMsghdr2 = 0x14
|
SizeofIfmaMsghdr2 = 0x14
|
||||||
SizeofRtMsghdr = 0x5c
|
SizeofRtMsghdr = 0x5c
|
||||||
|
SizeofRtMsghdr2 = 0x5c
|
||||||
SizeofRtMetrics = 0x38
|
SizeofRtMetrics = 0x38
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -480,6 +483,20 @@ type IfMsghdr struct {
|
|||||||
Data IfData
|
Data IfData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type IfMsghdr2 struct {
|
||||||
|
Msglen uint16
|
||||||
|
Version uint8
|
||||||
|
Type uint8
|
||||||
|
Addrs int32
|
||||||
|
Flags int32
|
||||||
|
Index uint16
|
||||||
|
Snd_len int32
|
||||||
|
Snd_maxlen int32
|
||||||
|
Snd_drops int32
|
||||||
|
Timer int32
|
||||||
|
Data IfData64
|
||||||
|
}
|
||||||
|
|
||||||
type IfData struct {
|
type IfData struct {
|
||||||
Type uint8
|
Type uint8
|
||||||
Typelen uint8
|
Typelen uint8
|
||||||
@ -512,6 +529,34 @@ type IfData struct {
|
|||||||
Reserved2 uint32
|
Reserved2 uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type IfData64 struct {
|
||||||
|
Type uint8
|
||||||
|
Typelen uint8
|
||||||
|
Physical uint8
|
||||||
|
Addrlen uint8
|
||||||
|
Hdrlen uint8
|
||||||
|
Recvquota uint8
|
||||||
|
Xmitquota uint8
|
||||||
|
Unused1 uint8
|
||||||
|
Mtu uint32
|
||||||
|
Metric uint32
|
||||||
|
Baudrate uint64
|
||||||
|
Ipackets uint64
|
||||||
|
Ierrors uint64
|
||||||
|
Opackets uint64
|
||||||
|
Oerrors uint64
|
||||||
|
Collisions uint64
|
||||||
|
Ibytes uint64
|
||||||
|
Obytes uint64
|
||||||
|
Imcasts uint64
|
||||||
|
Omcasts uint64
|
||||||
|
Iqdrops uint64
|
||||||
|
Noproto uint64
|
||||||
|
Recvtiming uint32
|
||||||
|
Xmittiming uint32
|
||||||
|
Lastchange Timeval32
|
||||||
|
}
|
||||||
|
|
||||||
type IfaMsghdr struct {
|
type IfaMsghdr struct {
|
||||||
Msglen uint16
|
Msglen uint16
|
||||||
Version uint8
|
Version uint8
|
||||||
@ -557,6 +602,21 @@ type RtMsghdr struct {
|
|||||||
Rmx RtMetrics
|
Rmx RtMetrics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RtMsghdr2 struct {
|
||||||
|
Msglen uint16
|
||||||
|
Version uint8
|
||||||
|
Type uint8
|
||||||
|
Index uint16
|
||||||
|
Flags int32
|
||||||
|
Addrs int32
|
||||||
|
Refcnt int32
|
||||||
|
Parentflags int32
|
||||||
|
Reserved int32
|
||||||
|
Use int32
|
||||||
|
Inits uint32
|
||||||
|
Rmx RtMetrics
|
||||||
|
}
|
||||||
|
|
||||||
type RtMetrics struct {
|
type RtMetrics struct {
|
||||||
Locks uint32
|
Locks uint32
|
||||||
Mtu uint32
|
Mtu uint32
|
||||||
|
20
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
20
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
@ -2594,8 +2594,8 @@ const (
|
|||||||
SOF_TIMESTAMPING_BIND_PHC = 0x8000
|
SOF_TIMESTAMPING_BIND_PHC = 0x8000
|
||||||
SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000
|
SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000
|
||||||
|
|
||||||
SOF_TIMESTAMPING_LAST = 0x10000
|
SOF_TIMESTAMPING_LAST = 0x20000
|
||||||
SOF_TIMESTAMPING_MASK = 0x1ffff
|
SOF_TIMESTAMPING_MASK = 0x3ffff
|
||||||
|
|
||||||
SCM_TSTAMP_SND = 0x0
|
SCM_TSTAMP_SND = 0x0
|
||||||
SCM_TSTAMP_SCHED = 0x1
|
SCM_TSTAMP_SCHED = 0x1
|
||||||
@ -3541,7 +3541,7 @@ type Nhmsg struct {
|
|||||||
type NexthopGrp struct {
|
type NexthopGrp struct {
|
||||||
Id uint32
|
Id uint32
|
||||||
Weight uint8
|
Weight uint8
|
||||||
Resvd1 uint8
|
High uint8
|
||||||
Resvd2 uint16
|
Resvd2 uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3802,7 +3802,7 @@ const (
|
|||||||
ETHTOOL_MSG_PSE_GET = 0x24
|
ETHTOOL_MSG_PSE_GET = 0x24
|
||||||
ETHTOOL_MSG_PSE_SET = 0x25
|
ETHTOOL_MSG_PSE_SET = 0x25
|
||||||
ETHTOOL_MSG_RSS_GET = 0x26
|
ETHTOOL_MSG_RSS_GET = 0x26
|
||||||
ETHTOOL_MSG_USER_MAX = 0x2c
|
ETHTOOL_MSG_USER_MAX = 0x2d
|
||||||
ETHTOOL_MSG_KERNEL_NONE = 0x0
|
ETHTOOL_MSG_KERNEL_NONE = 0x0
|
||||||
ETHTOOL_MSG_STRSET_GET_REPLY = 0x1
|
ETHTOOL_MSG_STRSET_GET_REPLY = 0x1
|
||||||
ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2
|
ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2
|
||||||
@ -3842,7 +3842,7 @@ const (
|
|||||||
ETHTOOL_MSG_MODULE_NTF = 0x24
|
ETHTOOL_MSG_MODULE_NTF = 0x24
|
||||||
ETHTOOL_MSG_PSE_GET_REPLY = 0x25
|
ETHTOOL_MSG_PSE_GET_REPLY = 0x25
|
||||||
ETHTOOL_MSG_RSS_GET_REPLY = 0x26
|
ETHTOOL_MSG_RSS_GET_REPLY = 0x26
|
||||||
ETHTOOL_MSG_KERNEL_MAX = 0x2c
|
ETHTOOL_MSG_KERNEL_MAX = 0x2e
|
||||||
ETHTOOL_FLAG_COMPACT_BITSETS = 0x1
|
ETHTOOL_FLAG_COMPACT_BITSETS = 0x1
|
||||||
ETHTOOL_FLAG_OMIT_REPLY = 0x2
|
ETHTOOL_FLAG_OMIT_REPLY = 0x2
|
||||||
ETHTOOL_FLAG_STATS = 0x4
|
ETHTOOL_FLAG_STATS = 0x4
|
||||||
@ -3850,7 +3850,7 @@ const (
|
|||||||
ETHTOOL_A_HEADER_DEV_INDEX = 0x1
|
ETHTOOL_A_HEADER_DEV_INDEX = 0x1
|
||||||
ETHTOOL_A_HEADER_DEV_NAME = 0x2
|
ETHTOOL_A_HEADER_DEV_NAME = 0x2
|
||||||
ETHTOOL_A_HEADER_FLAGS = 0x3
|
ETHTOOL_A_HEADER_FLAGS = 0x3
|
||||||
ETHTOOL_A_HEADER_MAX = 0x3
|
ETHTOOL_A_HEADER_MAX = 0x4
|
||||||
ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0
|
ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0
|
||||||
ETHTOOL_A_BITSET_BIT_INDEX = 0x1
|
ETHTOOL_A_BITSET_BIT_INDEX = 0x1
|
||||||
ETHTOOL_A_BITSET_BIT_NAME = 0x2
|
ETHTOOL_A_BITSET_BIT_NAME = 0x2
|
||||||
@ -4031,11 +4031,11 @@ const (
|
|||||||
ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0
|
ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0
|
||||||
ETHTOOL_A_CABLE_RESULT_PAIR = 0x1
|
ETHTOOL_A_CABLE_RESULT_PAIR = 0x1
|
||||||
ETHTOOL_A_CABLE_RESULT_CODE = 0x2
|
ETHTOOL_A_CABLE_RESULT_CODE = 0x2
|
||||||
ETHTOOL_A_CABLE_RESULT_MAX = 0x2
|
ETHTOOL_A_CABLE_RESULT_MAX = 0x3
|
||||||
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0
|
ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0
|
||||||
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1
|
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1
|
||||||
ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2
|
ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2
|
||||||
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2
|
ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3
|
||||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0
|
ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0
|
||||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1
|
ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1
|
||||||
ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2
|
ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2
|
||||||
@ -4200,7 +4200,8 @@ type (
|
|||||||
}
|
}
|
||||||
PtpSysOffsetExtended struct {
|
PtpSysOffsetExtended struct {
|
||||||
Samples uint32
|
Samples uint32
|
||||||
Rsv [3]uint32
|
Clockid int32
|
||||||
|
Rsv [2]uint32
|
||||||
Ts [25][3]PtpClockTime
|
Ts [25][3]PtpClockTime
|
||||||
}
|
}
|
||||||
PtpSysOffsetPrecise struct {
|
PtpSysOffsetPrecise struct {
|
||||||
@ -4399,6 +4400,7 @@ const (
|
|||||||
type LandlockRulesetAttr struct {
|
type LandlockRulesetAttr struct {
|
||||||
Access_fs uint64
|
Access_fs uint64
|
||||||
Access_net uint64
|
Access_net uint64
|
||||||
|
Scoped uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
type LandlockPathBeneathAttr struct {
|
type LandlockPathBeneathAttr struct {
|
||||||
|
2
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
2
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
@ -168,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW
|
//sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW
|
||||||
//sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)
|
//sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)
|
||||||
//sys DisconnectNamedPipe(pipe Handle) (err error)
|
//sys DisconnectNamedPipe(pipe Handle) (err error)
|
||||||
|
//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error)
|
||||||
|
//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error)
|
||||||
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
||||||
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
||||||
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
||||||
|
1
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
1
vendor/golang.org/x/sys/windows/types_windows.go
generated
vendored
@ -176,6 +176,7 @@ const (
|
|||||||
WAIT_FAILED = 0xFFFFFFFF
|
WAIT_FAILED = 0xFFFFFFFF
|
||||||
|
|
||||||
// Access rights for process.
|
// Access rights for process.
|
||||||
|
PROCESS_ALL_ACCESS = 0xFFFF
|
||||||
PROCESS_CREATE_PROCESS = 0x0080
|
PROCESS_CREATE_PROCESS = 0x0080
|
||||||
PROCESS_CREATE_THREAD = 0x0002
|
PROCESS_CREATE_THREAD = 0x0002
|
||||||
PROCESS_DUP_HANDLE = 0x0040
|
PROCESS_DUP_HANDLE = 0x0040
|
||||||
|
28
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
28
vendor/golang.org/x/sys/windows/zsyscall_windows.go
generated
vendored
@ -280,8 +280,10 @@ var (
|
|||||||
procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount")
|
procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount")
|
||||||
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
|
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
|
||||||
procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
|
procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
|
||||||
|
procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId")
|
||||||
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
||||||
procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo")
|
procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo")
|
||||||
|
procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId")
|
||||||
procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
|
procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult")
|
||||||
procGetPriorityClass = modkernel32.NewProc("GetPriorityClass")
|
procGetPriorityClass = modkernel32.NewProc("GetPriorityClass")
|
||||||
procGetProcAddress = modkernel32.NewProc("GetProcAddress")
|
procGetProcAddress = modkernel32.NewProc("GetProcAddress")
|
||||||
@ -1612,7 +1614,7 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {
|
func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) {
|
||||||
r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle))
|
r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
errcode = syscall.Errno(r0)
|
errcode = syscall.Errno(r0)
|
||||||
}
|
}
|
||||||
@ -1652,7 +1654,7 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {
|
func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {
|
||||||
r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row)))
|
r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
errcode = syscall.Errno(r0)
|
errcode = syscall.Errno(r0)
|
||||||
}
|
}
|
||||||
@ -1660,7 +1662,7 @@ func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {
|
func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) {
|
||||||
r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row)))
|
r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
errcode = syscall.Errno(r0)
|
errcode = syscall.Errno(r0)
|
||||||
}
|
}
|
||||||
@ -1672,7 +1674,7 @@ func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsa
|
|||||||
if initialNotification {
|
if initialNotification {
|
||||||
_p0 = 1
|
_p0 = 1
|
||||||
}
|
}
|
||||||
r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))
|
r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
errcode = syscall.Errno(r0)
|
errcode = syscall.Errno(r0)
|
||||||
}
|
}
|
||||||
@ -1684,7 +1686,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext
|
|||||||
if initialNotification {
|
if initialNotification {
|
||||||
_p0 = 1
|
_p0 = 1
|
||||||
}
|
}
|
||||||
r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)))
|
r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
errcode = syscall.Errno(r0)
|
errcode = syscall.Errno(r0)
|
||||||
}
|
}
|
||||||
@ -2446,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {
|
func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
|
r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -2462,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
|
func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {
|
||||||
var _p0 uint32
|
var _p0 uint32
|
||||||
if wait {
|
if wait {
|
||||||
|
4
vendor/golang.org/x/tools/go/ast/inspector/inspector.go
generated
vendored
4
vendor/golang.org/x/tools/go/ast/inspector/inspector.go
generated
vendored
@ -180,7 +180,9 @@ func (in *Inspector) WithStack(types []ast.Node, f func(n ast.Node, push bool, s
|
|||||||
// traverse builds the table of events representing a traversal.
|
// traverse builds the table of events representing a traversal.
|
||||||
func traverse(files []*ast.File) []event {
|
func traverse(files []*ast.File) []event {
|
||||||
// Preallocate approximate number of events
|
// Preallocate approximate number of events
|
||||||
// based on source file extent.
|
// based on source file extent of the declarations.
|
||||||
|
// (We use End-Pos not FileStart-FileEnd to neglect
|
||||||
|
// the effect of long doc comments.)
|
||||||
// This makes traverse faster by 4x (!).
|
// This makes traverse faster by 4x (!).
|
||||||
var extent int
|
var extent int
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
|
6
vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go
generated
vendored
6
vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go
generated
vendored
@ -348,7 +348,11 @@ func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m protoreflect.Messa
|
|||||||
switch tok.Kind() {
|
switch tok.Kind() {
|
||||||
case json.ObjectClose:
|
case json.ObjectClose:
|
||||||
if !found {
|
if !found {
|
||||||
return d.newError(tok.Pos(), `missing "value" field`)
|
// We tolerate an omitted `value` field with the google.protobuf.Empty Well-Known-Type,
|
||||||
|
// for compatibility with other proto runtimes that have interpreted the spec differently.
|
||||||
|
if m.Descriptor().FullName() != genid.Empty_message_fullname {
|
||||||
|
return d.newError(tok.Pos(), `missing "value" field`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
|
BIN
vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb
generated
vendored
BIN
vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb
generated
vendored
Binary file not shown.
40
vendor/google.golang.org/protobuf/internal/errors/is_go112.go
generated
vendored
40
vendor/google.golang.org/protobuf/internal/errors/is_go112.go
generated
vendored
@ -1,40 +0,0 @@
|
|||||||
// Copyright 2020 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build !go1.13
|
|
||||||
// +build !go1.13
|
|
||||||
|
|
||||||
package errors
|
|
||||||
|
|
||||||
import "reflect"
|
|
||||||
|
|
||||||
// Is is a copy of Go 1.13's errors.Is for use with older Go versions.
|
|
||||||
func Is(err, target error) bool {
|
|
||||||
if target == nil {
|
|
||||||
return err == target
|
|
||||||
}
|
|
||||||
|
|
||||||
isComparable := reflect.TypeOf(target).Comparable()
|
|
||||||
for {
|
|
||||||
if isComparable && err == target {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
if err = unwrap(err); err == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func unwrap(err error) error {
|
|
||||||
u, ok := err.(interface {
|
|
||||||
Unwrap() error
|
|
||||||
})
|
|
||||||
if !ok {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return u.Unwrap()
|
|
||||||
}
|
|
13
vendor/google.golang.org/protobuf/internal/errors/is_go113.go
generated
vendored
13
vendor/google.golang.org/protobuf/internal/errors/is_go113.go
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
// Copyright 2020 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//go:build go1.13
|
|
||||||
// +build go1.13
|
|
||||||
|
|
||||||
package errors
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// Is is errors.Is.
|
|
||||||
func Is(err, target error) bool { return errors.Is(err, target) }
|
|
18
vendor/google.golang.org/protobuf/internal/filedesc/desc.go
generated
vendored
18
vendor/google.golang.org/protobuf/internal/filedesc/desc.go
generated
vendored
@ -32,6 +32,7 @@ const (
|
|||||||
EditionProto2 Edition = 998
|
EditionProto2 Edition = 998
|
||||||
EditionProto3 Edition = 999
|
EditionProto3 Edition = 999
|
||||||
Edition2023 Edition = 1000
|
Edition2023 Edition = 1000
|
||||||
|
Edition2024 Edition = 1001
|
||||||
EditionUnsupported Edition = 100000
|
EditionUnsupported Edition = 100000
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -77,31 +78,48 @@ type (
|
|||||||
Locations SourceLocations
|
Locations SourceLocations
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditionFeatures is a frequently-instantiated struct, so please take care
|
||||||
|
// to minimize padding when adding new fields to this struct (add them in
|
||||||
|
// the right place/order).
|
||||||
EditionFeatures struct {
|
EditionFeatures struct {
|
||||||
|
// StripEnumPrefix determines if the plugin generates enum value
|
||||||
|
// constants as-is, with their prefix stripped, or both variants.
|
||||||
|
StripEnumPrefix int
|
||||||
|
|
||||||
// IsFieldPresence is true if field_presence is EXPLICIT
|
// IsFieldPresence is true if field_presence is EXPLICIT
|
||||||
// https://protobuf.dev/editions/features/#field_presence
|
// https://protobuf.dev/editions/features/#field_presence
|
||||||
IsFieldPresence bool
|
IsFieldPresence bool
|
||||||
|
|
||||||
// IsFieldPresence is true if field_presence is LEGACY_REQUIRED
|
// IsFieldPresence is true if field_presence is LEGACY_REQUIRED
|
||||||
// https://protobuf.dev/editions/features/#field_presence
|
// https://protobuf.dev/editions/features/#field_presence
|
||||||
IsLegacyRequired bool
|
IsLegacyRequired bool
|
||||||
|
|
||||||
// IsOpenEnum is true if enum_type is OPEN
|
// IsOpenEnum is true if enum_type is OPEN
|
||||||
// https://protobuf.dev/editions/features/#enum_type
|
// https://protobuf.dev/editions/features/#enum_type
|
||||||
IsOpenEnum bool
|
IsOpenEnum bool
|
||||||
|
|
||||||
// IsPacked is true if repeated_field_encoding is PACKED
|
// IsPacked is true if repeated_field_encoding is PACKED
|
||||||
// https://protobuf.dev/editions/features/#repeated_field_encoding
|
// https://protobuf.dev/editions/features/#repeated_field_encoding
|
||||||
IsPacked bool
|
IsPacked bool
|
||||||
|
|
||||||
// IsUTF8Validated is true if utf_validation is VERIFY
|
// IsUTF8Validated is true if utf_validation is VERIFY
|
||||||
// https://protobuf.dev/editions/features/#utf8_validation
|
// https://protobuf.dev/editions/features/#utf8_validation
|
||||||
IsUTF8Validated bool
|
IsUTF8Validated bool
|
||||||
|
|
||||||
// IsDelimitedEncoded is true if message_encoding is DELIMITED
|
// IsDelimitedEncoded is true if message_encoding is DELIMITED
|
||||||
// https://protobuf.dev/editions/features/#message_encoding
|
// https://protobuf.dev/editions/features/#message_encoding
|
||||||
IsDelimitedEncoded bool
|
IsDelimitedEncoded bool
|
||||||
|
|
||||||
// IsJSONCompliant is true if json_format is ALLOW
|
// IsJSONCompliant is true if json_format is ALLOW
|
||||||
// https://protobuf.dev/editions/features/#json_format
|
// https://protobuf.dev/editions/features/#json_format
|
||||||
IsJSONCompliant bool
|
IsJSONCompliant bool
|
||||||
|
|
||||||
// GenerateLegacyUnmarshalJSON determines if the plugin generates the
|
// GenerateLegacyUnmarshalJSON determines if the plugin generates the
|
||||||
// UnmarshalJSON([]byte) error method for enums.
|
// UnmarshalJSON([]byte) error method for enums.
|
||||||
GenerateLegacyUnmarshalJSON bool
|
GenerateLegacyUnmarshalJSON bool
|
||||||
|
// APILevel controls which API (Open, Hybrid or Opaque) should be used
|
||||||
|
// for generated code (.pb.go files).
|
||||||
|
APILevel int
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
8
vendor/google.golang.org/protobuf/internal/filedesc/editions.go
generated
vendored
8
vendor/google.golang.org/protobuf/internal/filedesc/editions.go
generated
vendored
@ -32,6 +32,14 @@ func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures {
|
|||||||
v, m := protowire.ConsumeVarint(b)
|
v, m := protowire.ConsumeVarint(b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v)
|
parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v)
|
||||||
|
case genid.GoFeatures_ApiLevel_field_number:
|
||||||
|
v, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
parent.APILevel = int(v)
|
||||||
|
case genid.GoFeatures_StripEnumPrefix_field_number:
|
||||||
|
v, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
parent.StripEnumPrefix = int(v)
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num))
|
panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num))
|
||||||
}
|
}
|
||||||
|
34
vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go
generated
vendored
34
vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go
generated
vendored
@ -21,13 +21,47 @@ const (
|
|||||||
// Field names for pb.GoFeatures.
|
// Field names for pb.GoFeatures.
|
||||||
const (
|
const (
|
||||||
GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum"
|
GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum"
|
||||||
|
GoFeatures_ApiLevel_field_name protoreflect.Name = "api_level"
|
||||||
|
GoFeatures_StripEnumPrefix_field_name protoreflect.Name = "strip_enum_prefix"
|
||||||
|
|
||||||
GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "pb.GoFeatures.legacy_unmarshal_json_enum"
|
GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "pb.GoFeatures.legacy_unmarshal_json_enum"
|
||||||
|
GoFeatures_ApiLevel_field_fullname protoreflect.FullName = "pb.GoFeatures.api_level"
|
||||||
|
GoFeatures_StripEnumPrefix_field_fullname protoreflect.FullName = "pb.GoFeatures.strip_enum_prefix"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Field numbers for pb.GoFeatures.
|
// Field numbers for pb.GoFeatures.
|
||||||
const (
|
const (
|
||||||
GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1
|
GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1
|
||||||
|
GoFeatures_ApiLevel_field_number protoreflect.FieldNumber = 2
|
||||||
|
GoFeatures_StripEnumPrefix_field_number protoreflect.FieldNumber = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
// Full and short names for pb.GoFeatures.APILevel.
|
||||||
|
const (
|
||||||
|
GoFeatures_APILevel_enum_fullname = "pb.GoFeatures.APILevel"
|
||||||
|
GoFeatures_APILevel_enum_name = "APILevel"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum values for pb.GoFeatures.APILevel.
|
||||||
|
const (
|
||||||
|
GoFeatures_API_LEVEL_UNSPECIFIED_enum_value = 0
|
||||||
|
GoFeatures_API_OPEN_enum_value = 1
|
||||||
|
GoFeatures_API_HYBRID_enum_value = 2
|
||||||
|
GoFeatures_API_OPAQUE_enum_value = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
// Full and short names for pb.GoFeatures.StripEnumPrefix.
|
||||||
|
const (
|
||||||
|
GoFeatures_StripEnumPrefix_enum_fullname = "pb.GoFeatures.StripEnumPrefix"
|
||||||
|
GoFeatures_StripEnumPrefix_enum_name = "StripEnumPrefix"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum values for pb.GoFeatures.StripEnumPrefix.
|
||||||
|
const (
|
||||||
|
GoFeatures_STRIP_ENUM_PREFIX_UNSPECIFIED_enum_value = 0
|
||||||
|
GoFeatures_STRIP_ENUM_PREFIX_KEEP_enum_value = 1
|
||||||
|
GoFeatures_STRIP_ENUM_PREFIX_GENERATE_BOTH_enum_value = 2
|
||||||
|
GoFeatures_STRIP_ENUM_PREFIX_STRIP_enum_value = 3
|
||||||
)
|
)
|
||||||
|
|
||||||
// Extension numbers
|
// Extension numbers
|
||||||
|
12
vendor/google.golang.org/protobuf/internal/genid/name.go
generated
vendored
Normal file
12
vendor/google.golang.org/protobuf/internal/genid/name.go
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package genid
|
||||||
|
|
||||||
|
const (
|
||||||
|
NoUnkeyedLiteral_goname = "noUnkeyedLiteral"
|
||||||
|
NoUnkeyedLiteralA_goname = "XXX_NoUnkeyedLiteral"
|
||||||
|
|
||||||
|
BuilderSuffix_goname = "_builder"
|
||||||
|
)
|
128
vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go
generated
vendored
Normal file
128
vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go
generated
vendored
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"sync/atomic"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (Export) UnmarshalField(msg any, fieldNum int32) {
|
||||||
|
UnmarshalField(msg.(protoreflect.ProtoMessage).ProtoReflect(), protoreflect.FieldNumber(fieldNum))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Present checks the presence set for a certain field number (zero
|
||||||
|
// based, ordered by appearance in original proto file). part is
|
||||||
|
// a pointer to the correct element in the bitmask array, num is the
|
||||||
|
// field number unaltered. Example (field number 70 -> part =
|
||||||
|
// &m.XXX_presence[1], num = 70)
|
||||||
|
func (Export) Present(part *uint32, num uint32) bool {
|
||||||
|
// This hook will read an unprotected shadow presence set if
|
||||||
|
// we're unning under the race detector
|
||||||
|
raceDetectHookPresent(part, num)
|
||||||
|
return atomic.LoadUint32(part)&(1<<(num%32)) > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPresent adds a field to the presence set. part is a pointer to
|
||||||
|
// the relevant element in the array and num is the field number
|
||||||
|
// unaltered. size is the number of fields in the protocol
|
||||||
|
// buffer.
|
||||||
|
func (Export) SetPresent(part *uint32, num uint32, size uint32) {
|
||||||
|
// This hook will mutate an unprotected shadow presence set if
|
||||||
|
// we're running under the race detector
|
||||||
|
raceDetectHookSetPresent(part, num, presenceSize(size))
|
||||||
|
for {
|
||||||
|
old := atomic.LoadUint32(part)
|
||||||
|
if atomic.CompareAndSwapUint32(part, old, old|(1<<(num%32))) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPresentNonAtomic is like SetPresent, but operates non-atomically.
|
||||||
|
// It is meant for use by builder methods, where the message is known not
|
||||||
|
// to be accessible yet by other goroutines.
|
||||||
|
func (Export) SetPresentNonAtomic(part *uint32, num uint32, size uint32) {
|
||||||
|
// This hook will mutate an unprotected shadow presence set if
|
||||||
|
// we're running under the race detector
|
||||||
|
raceDetectHookSetPresent(part, num, presenceSize(size))
|
||||||
|
*part |= 1 << (num % 32)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClearPresence removes a field from the presence set. part is a
|
||||||
|
// pointer to the relevant element in the presence array and num is
|
||||||
|
// the field number unaltered.
|
||||||
|
func (Export) ClearPresent(part *uint32, num uint32) {
|
||||||
|
// This hook will mutate an unprotected shadow presence set if
|
||||||
|
// we're running under the race detector
|
||||||
|
raceDetectHookClearPresent(part, num)
|
||||||
|
for {
|
||||||
|
old := atomic.LoadUint32(part)
|
||||||
|
if atomic.CompareAndSwapUint32(part, old, old&^(1<<(num%32))) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// interfaceToPointer takes a pointer to an empty interface whose value is a
|
||||||
|
// pointer type, and converts it into a "pointer" that points to the same
|
||||||
|
// target
|
||||||
|
func interfaceToPointer(i *any) pointer {
|
||||||
|
return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p pointer) atomicGetPointer() pointer {
|
||||||
|
return pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p pointer) atomicSetPointer(q pointer) {
|
||||||
|
atomic.StorePointer((*unsafe.Pointer)(p.p), q.p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AtomicCheckPointerIsNil takes an interface (which is a pointer to a
|
||||||
|
// pointer) and returns true if the pointed-to pointer is nil (using an
|
||||||
|
// atomic load). This function is inlineable and, on x86, just becomes a
|
||||||
|
// simple load and compare.
|
||||||
|
func (Export) AtomicCheckPointerIsNil(ptr any) bool {
|
||||||
|
return interfaceToPointer(&ptr).atomicGetPointer().IsNil()
|
||||||
|
}
|
||||||
|
|
||||||
|
// AtomicSetPointer takes two interfaces (first is a pointer to a pointer,
|
||||||
|
// second is a pointer) and atomically sets the second pointer into location
|
||||||
|
// referenced by first pointer. Unfortunately, atomicSetPointer() does not inline
|
||||||
|
// (even on x86), so this does not become a simple store on x86.
|
||||||
|
func (Export) AtomicSetPointer(dstPtr, valPtr any) {
|
||||||
|
interfaceToPointer(&dstPtr).atomicSetPointer(interfaceToPointer(&valPtr))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AtomicLoadPointer loads the pointer at the location pointed at by src,
|
||||||
|
// and stores that pointer value into the location pointed at by dst.
|
||||||
|
func (Export) AtomicLoadPointer(ptr Pointer, dst Pointer) {
|
||||||
|
*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AtomicInitializePointer makes ptr and dst point to the same value.
|
||||||
|
//
|
||||||
|
// If *ptr is a nil pointer, it sets *ptr = *dst.
|
||||||
|
//
|
||||||
|
// If *ptr is a non-nil pointer, it sets *dst = *ptr.
|
||||||
|
func (Export) AtomicInitializePointer(ptr Pointer, dst Pointer) {
|
||||||
|
if !atomic.CompareAndSwapPointer((*unsafe.Pointer)(ptr), unsafe.Pointer(nil), *(*unsafe.Pointer)(dst)) {
|
||||||
|
*(*unsafe.Pointer)(unsafe.Pointer(dst)) = atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(ptr)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MessageFieldStringOf returns the field formatted as a string,
|
||||||
|
// either as the field name if resolvable otherwise as a decimal string.
|
||||||
|
func (Export) MessageFieldStringOf(md protoreflect.MessageDescriptor, n protoreflect.FieldNumber) string {
|
||||||
|
fd := md.Fields().ByNumber(n)
|
||||||
|
if fd != nil {
|
||||||
|
return string(fd.Name())
|
||||||
|
}
|
||||||
|
return strconv.Itoa(int(n))
|
||||||
|
}
|
34
vendor/google.golang.org/protobuf/internal/impl/bitmap.go
generated
vendored
Normal file
34
vendor/google.golang.org/protobuf/internal/impl/bitmap.go
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !race
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
// There is no additional data as we're not running under race detector.
|
||||||
|
type RaceDetectHookData struct{}
|
||||||
|
|
||||||
|
// Empty stubs for when not using the race detector. Calls to these from index.go should be optimized away.
|
||||||
|
func (presence) raceDetectHookPresent(num uint32) {}
|
||||||
|
func (presence) raceDetectHookSetPresent(num uint32, size presenceSize) {}
|
||||||
|
func (presence) raceDetectHookClearPresent(num uint32) {}
|
||||||
|
func (presence) raceDetectHookAllocAndCopy(src presence) {}
|
||||||
|
|
||||||
|
// raceDetectHookPresent is called by the generated file interface
|
||||||
|
// (*proto.internalFuncs) Present to optionally read an unprotected
|
||||||
|
// shadow bitmap when race detection is enabled. In regular code it is
|
||||||
|
// a noop.
|
||||||
|
func raceDetectHookPresent(field *uint32, num uint32) {}
|
||||||
|
|
||||||
|
// raceDetectHookSetPresent is called by the generated file interface
|
||||||
|
// (*proto.internalFuncs) SetPresent to optionally write an unprotected
|
||||||
|
// shadow bitmap when race detection is enabled. In regular code it is
|
||||||
|
// a noop.
|
||||||
|
func raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {}
|
||||||
|
|
||||||
|
// raceDetectHookClearPresent is called by the generated file interface
|
||||||
|
// (*proto.internalFuncs) ClearPresent to optionally write an unprotected
|
||||||
|
// shadow bitmap when race detection is enabled. In regular code it is
|
||||||
|
// a noop.
|
||||||
|
func raceDetectHookClearPresent(field *uint32, num uint32) {}
|
126
vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go
generated
vendored
Normal file
126
vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go
generated
vendored
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build race
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
// When running under race detector, we add a presence map of bytes, that we can access
|
||||||
|
// in the hook functions so that we trigger the race detection whenever we have concurrent
|
||||||
|
// Read-Writes or Write-Writes. The race detector does not otherwise detect invalid concurrent
|
||||||
|
// access to lazy fields as all updates of bitmaps and pointers are done using atomic operations.
|
||||||
|
type RaceDetectHookData struct {
|
||||||
|
shadowPresence *[]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hooks for presence bitmap operations that allocate, read and write the shadowPresence
|
||||||
|
// using non-atomic operations.
|
||||||
|
func (data *RaceDetectHookData) raceDetectHookAlloc(size presenceSize) {
|
||||||
|
sp := make([]byte, size)
|
||||||
|
atomicStoreShadowPresence(&data.shadowPresence, &sp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p presence) raceDetectHookPresent(num uint32) {
|
||||||
|
data := p.toRaceDetectData()
|
||||||
|
if data == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sp := atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
if sp != nil {
|
||||||
|
_ = (*sp)[num]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p presence) raceDetectHookSetPresent(num uint32, size presenceSize) {
|
||||||
|
data := p.toRaceDetectData()
|
||||||
|
if data == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sp := atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
if sp == nil {
|
||||||
|
data.raceDetectHookAlloc(size)
|
||||||
|
sp = atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
}
|
||||||
|
(*sp)[num] = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p presence) raceDetectHookClearPresent(num uint32) {
|
||||||
|
data := p.toRaceDetectData()
|
||||||
|
if data == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sp := atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
if sp != nil {
|
||||||
|
(*sp)[num] = 0
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// raceDetectHookAllocAndCopy allocates a new shadowPresence slice at lazy and copies
|
||||||
|
// shadowPresence bytes from src to lazy.
|
||||||
|
func (p presence) raceDetectHookAllocAndCopy(q presence) {
|
||||||
|
sData := q.toRaceDetectData()
|
||||||
|
dData := p.toRaceDetectData()
|
||||||
|
if sData == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
srcSp := atomicLoadShadowPresence(&sData.shadowPresence)
|
||||||
|
if srcSp == nil {
|
||||||
|
atomicStoreShadowPresence(&dData.shadowPresence, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
n := len(*srcSp)
|
||||||
|
dSlice := make([]byte, n)
|
||||||
|
atomicStoreShadowPresence(&dData.shadowPresence, &dSlice)
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
dSlice[i] = (*srcSp)[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// raceDetectHookPresent is called by the generated file interface
|
||||||
|
// (*proto.internalFuncs) Present to optionally read an unprotected
|
||||||
|
// shadow bitmap when race detection is enabled. In regular code it is
|
||||||
|
// a noop.
|
||||||
|
func raceDetectHookPresent(field *uint32, num uint32) {
|
||||||
|
data := findPointerToRaceDetectData(field, num)
|
||||||
|
if data == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sp := atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
if sp != nil {
|
||||||
|
_ = (*sp)[num]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// raceDetectHookSetPresent is called by the generated file interface
|
||||||
|
// (*proto.internalFuncs) SetPresent to optionally write an unprotected
|
||||||
|
// shadow bitmap when race detection is enabled. In regular code it is
|
||||||
|
// a noop.
|
||||||
|
func raceDetectHookSetPresent(field *uint32, num uint32, size presenceSize) {
|
||||||
|
data := findPointerToRaceDetectData(field, num)
|
||||||
|
if data == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sp := atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
if sp == nil {
|
||||||
|
data.raceDetectHookAlloc(size)
|
||||||
|
sp = atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
}
|
||||||
|
(*sp)[num] = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// raceDetectHookClearPresent is called by the generated file interface
|
||||||
|
// (*proto.internalFuncs) ClearPresent to optionally write an unprotected
|
||||||
|
// shadow bitmap when race detection is enabled. In regular code it is
|
||||||
|
// a noop.
|
||||||
|
func raceDetectHookClearPresent(field *uint32, num uint32) {
|
||||||
|
data := findPointerToRaceDetectData(field, num)
|
||||||
|
if data == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sp := atomicLoadShadowPresence(&data.shadowPresence)
|
||||||
|
if sp != nil {
|
||||||
|
(*sp)[num] = 0
|
||||||
|
}
|
||||||
|
}
|
33
vendor/google.golang.org/protobuf/internal/impl/checkinit.go
generated
vendored
33
vendor/google.golang.org/protobuf/internal/impl/checkinit.go
generated
vendored
@ -35,6 +35,12 @@ func (mi *MessageInfo) checkInitializedPointer(p pointer) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var presence presence
|
||||||
|
if mi.presenceOffset.IsValid() {
|
||||||
|
presence = p.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
}
|
||||||
|
|
||||||
if mi.extensionOffset.IsValid() {
|
if mi.extensionOffset.IsValid() {
|
||||||
e := p.Apply(mi.extensionOffset).Extensions()
|
e := p.Apply(mi.extensionOffset).Extensions()
|
||||||
if err := mi.isInitExtensions(e); err != nil {
|
if err := mi.isInitExtensions(e); err != nil {
|
||||||
@ -45,6 +51,33 @@ func (mi *MessageInfo) checkInitializedPointer(p pointer) error {
|
|||||||
if !f.isRequired && f.funcs.isInit == nil {
|
if !f.isRequired && f.funcs.isInit == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.presenceIndex != noPresence {
|
||||||
|
if !presence.Present(f.presenceIndex) {
|
||||||
|
if f.isRequired {
|
||||||
|
return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if f.funcs.isInit != nil {
|
||||||
|
f.mi.init()
|
||||||
|
if f.mi.needsInitCheck {
|
||||||
|
if f.isLazy && p.Apply(f.offset).AtomicGetPointer().IsNil() {
|
||||||
|
lazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()
|
||||||
|
if !lazy.AllowedPartial() {
|
||||||
|
// Nothing to see here, it was checked on unmarshal
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
mi.lazyUnmarshal(p, f.num)
|
||||||
|
}
|
||||||
|
if err := f.funcs.isInit(p.Apply(f.offset), f); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
fptr := p.Apply(f.offset)
|
fptr := p.Apply(f.offset)
|
||||||
if f.isPointer && fptr.Elem().IsNil() {
|
if f.isPointer && fptr.Elem().IsNil() {
|
||||||
if f.isRequired {
|
if f.isRequired {
|
||||||
|
264
vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go
generated
vendored
Normal file
264
vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go
generated
vendored
Normal file
@ -0,0 +1,264 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
|
"google.golang.org/protobuf/internal/errors"
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
func makeOpaqueMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {
|
||||||
|
mi := getMessageInfo(ft)
|
||||||
|
if mi == nil {
|
||||||
|
panic(fmt.Sprintf("invalid field: %v: unsupported message type %v", fd.FullName(), ft))
|
||||||
|
}
|
||||||
|
switch fd.Kind() {
|
||||||
|
case protoreflect.MessageKind:
|
||||||
|
return mi, pointerCoderFuncs{
|
||||||
|
size: sizeOpaqueMessage,
|
||||||
|
marshal: appendOpaqueMessage,
|
||||||
|
unmarshal: consumeOpaqueMessage,
|
||||||
|
isInit: isInitOpaqueMessage,
|
||||||
|
merge: mergeOpaqueMessage,
|
||||||
|
}
|
||||||
|
case protoreflect.GroupKind:
|
||||||
|
return mi, pointerCoderFuncs{
|
||||||
|
size: sizeOpaqueGroup,
|
||||||
|
marshal: appendOpaqueGroup,
|
||||||
|
unmarshal: consumeOpaqueGroup,
|
||||||
|
isInit: isInitOpaqueMessage,
|
||||||
|
merge: mergeOpaqueMessage,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic("unexpected field kind")
|
||||||
|
}
|
||||||
|
|
||||||
|
func sizeOpaqueMessage(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
|
||||||
|
return protowire.SizeBytes(f.mi.sizePointer(p.AtomicGetPointer(), opts)) + f.tagsize
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendOpaqueMessage(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
|
||||||
|
mp := p.AtomicGetPointer()
|
||||||
|
calculatedSize := f.mi.sizePointer(mp, opts)
|
||||||
|
b = protowire.AppendVarint(b, f.wiretag)
|
||||||
|
b = protowire.AppendVarint(b, uint64(calculatedSize))
|
||||||
|
before := len(b)
|
||||||
|
b, err := f.mi.marshalAppendPointer(b, mp, opts)
|
||||||
|
if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil {
|
||||||
|
return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize)
|
||||||
|
}
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func consumeOpaqueMessage(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
|
||||||
|
if wtyp != protowire.BytesType {
|
||||||
|
return out, errUnknown
|
||||||
|
}
|
||||||
|
v, n := protowire.ConsumeBytes(b)
|
||||||
|
if n < 0 {
|
||||||
|
return out, errDecode
|
||||||
|
}
|
||||||
|
mp := p.AtomicGetPointer()
|
||||||
|
if mp.IsNil() {
|
||||||
|
mp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
|
||||||
|
}
|
||||||
|
o, err := f.mi.unmarshalPointer(v, mp, 0, opts)
|
||||||
|
if err != nil {
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
|
out.n = n
|
||||||
|
out.initialized = o.initialized
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func isInitOpaqueMessage(p pointer, f *coderFieldInfo) error {
|
||||||
|
mp := p.AtomicGetPointer()
|
||||||
|
if mp.IsNil() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return f.mi.checkInitializedPointer(mp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeOpaqueMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
|
||||||
|
dstmp := dst.AtomicGetPointer()
|
||||||
|
if dstmp.IsNil() {
|
||||||
|
dstmp = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
|
||||||
|
}
|
||||||
|
f.mi.mergePointer(dstmp, src.AtomicGetPointer(), opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
func sizeOpaqueGroup(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
|
||||||
|
return 2*f.tagsize + f.mi.sizePointer(p.AtomicGetPointer(), opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendOpaqueGroup(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
|
||||||
|
b = protowire.AppendVarint(b, f.wiretag) // start group
|
||||||
|
b, err := f.mi.marshalAppendPointer(b, p.AtomicGetPointer(), opts)
|
||||||
|
b = protowire.AppendVarint(b, f.wiretag+1) // end group
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func consumeOpaqueGroup(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
|
||||||
|
if wtyp != protowire.StartGroupType {
|
||||||
|
return out, errUnknown
|
||||||
|
}
|
||||||
|
mp := p.AtomicGetPointer()
|
||||||
|
if mp.IsNil() {
|
||||||
|
mp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
|
||||||
|
}
|
||||||
|
o, e := f.mi.unmarshalPointer(b, mp, f.num, opts)
|
||||||
|
return o, e
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeOpaqueRepeatedMessageFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {
|
||||||
|
if ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {
|
||||||
|
panic(fmt.Sprintf("invalid field: %v: unsupported type for opaque repeated message: %v", fd.FullName(), ft))
|
||||||
|
}
|
||||||
|
mt := ft.Elem().Elem() // *[]*T -> *T
|
||||||
|
mi := getMessageInfo(mt)
|
||||||
|
if mi == nil {
|
||||||
|
panic(fmt.Sprintf("invalid field: %v: unsupported message type %v", fd.FullName(), mt))
|
||||||
|
}
|
||||||
|
switch fd.Kind() {
|
||||||
|
case protoreflect.MessageKind:
|
||||||
|
return mi, pointerCoderFuncs{
|
||||||
|
size: sizeOpaqueMessageSlice,
|
||||||
|
marshal: appendOpaqueMessageSlice,
|
||||||
|
unmarshal: consumeOpaqueMessageSlice,
|
||||||
|
isInit: isInitOpaqueMessageSlice,
|
||||||
|
merge: mergeOpaqueMessageSlice,
|
||||||
|
}
|
||||||
|
case protoreflect.GroupKind:
|
||||||
|
return mi, pointerCoderFuncs{
|
||||||
|
size: sizeOpaqueGroupSlice,
|
||||||
|
marshal: appendOpaqueGroupSlice,
|
||||||
|
unmarshal: consumeOpaqueGroupSlice,
|
||||||
|
isInit: isInitOpaqueMessageSlice,
|
||||||
|
merge: mergeOpaqueMessageSlice,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic("unexpected field kind")
|
||||||
|
}
|
||||||
|
|
||||||
|
func sizeOpaqueMessageSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
|
||||||
|
s := p.AtomicGetPointer().PointerSlice()
|
||||||
|
n := 0
|
||||||
|
for _, v := range s {
|
||||||
|
n += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendOpaqueMessageSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
|
||||||
|
s := p.AtomicGetPointer().PointerSlice()
|
||||||
|
var err error
|
||||||
|
for _, v := range s {
|
||||||
|
b = protowire.AppendVarint(b, f.wiretag)
|
||||||
|
siz := f.mi.sizePointer(v, opts)
|
||||||
|
b = protowire.AppendVarint(b, uint64(siz))
|
||||||
|
before := len(b)
|
||||||
|
b, err = f.mi.marshalAppendPointer(b, v, opts)
|
||||||
|
if err != nil {
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
if measuredSize := len(b) - before; siz != measuredSize {
|
||||||
|
return nil, errors.MismatchedSizeCalculation(siz, measuredSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return b, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func consumeOpaqueMessageSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
|
||||||
|
if wtyp != protowire.BytesType {
|
||||||
|
return out, errUnknown
|
||||||
|
}
|
||||||
|
v, n := protowire.ConsumeBytes(b)
|
||||||
|
if n < 0 {
|
||||||
|
return out, errDecode
|
||||||
|
}
|
||||||
|
mp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))
|
||||||
|
o, err := f.mi.unmarshalPointer(v, mp, 0, opts)
|
||||||
|
if err != nil {
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
|
sp := p.AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
sp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))
|
||||||
|
}
|
||||||
|
sp.AppendPointerSlice(mp)
|
||||||
|
out.n = n
|
||||||
|
out.initialized = o.initialized
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func isInitOpaqueMessageSlice(p pointer, f *coderFieldInfo) error {
|
||||||
|
sp := p.AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
s := sp.PointerSlice()
|
||||||
|
for _, v := range s {
|
||||||
|
if err := f.mi.checkInitializedPointer(v); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeOpaqueMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
|
||||||
|
ds := dst.AtomicGetPointer()
|
||||||
|
if ds.IsNil() {
|
||||||
|
ds = dst.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))
|
||||||
|
}
|
||||||
|
for _, sp := range src.AtomicGetPointer().PointerSlice() {
|
||||||
|
dm := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))
|
||||||
|
f.mi.mergePointer(dm, sp, opts)
|
||||||
|
ds.AppendPointerSlice(dm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func sizeOpaqueGroupSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
|
||||||
|
s := p.AtomicGetPointer().PointerSlice()
|
||||||
|
n := 0
|
||||||
|
for _, v := range s {
|
||||||
|
n += 2*f.tagsize + f.mi.sizePointer(v, opts)
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendOpaqueGroupSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
|
||||||
|
s := p.AtomicGetPointer().PointerSlice()
|
||||||
|
var err error
|
||||||
|
for _, v := range s {
|
||||||
|
b = protowire.AppendVarint(b, f.wiretag) // start group
|
||||||
|
b, err = f.mi.marshalAppendPointer(b, v, opts)
|
||||||
|
if err != nil {
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
b = protowire.AppendVarint(b, f.wiretag+1) // end group
|
||||||
|
}
|
||||||
|
return b, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func consumeOpaqueGroupSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
|
||||||
|
if wtyp != protowire.StartGroupType {
|
||||||
|
return out, errUnknown
|
||||||
|
}
|
||||||
|
mp := pointerOfValue(reflect.New(f.mi.GoReflectType.Elem()))
|
||||||
|
out, err = f.mi.unmarshalPointer(b, mp, f.num, opts)
|
||||||
|
if err != nil {
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
|
sp := p.AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
sp = p.AtomicSetPointerIfNil(pointerOfValue(reflect.New(f.ft.Elem())))
|
||||||
|
}
|
||||||
|
sp.AppendPointerSlice(mp)
|
||||||
|
return out, err
|
||||||
|
}
|
13
vendor/google.golang.org/protobuf/internal/impl/codec_message.go
generated
vendored
13
vendor/google.golang.org/protobuf/internal/impl/codec_message.go
generated
vendored
@ -32,6 +32,10 @@ type coderMessageInfo struct {
|
|||||||
needsInitCheck bool
|
needsInitCheck bool
|
||||||
isMessageSet bool
|
isMessageSet bool
|
||||||
numRequiredFields uint8
|
numRequiredFields uint8
|
||||||
|
|
||||||
|
lazyOffset offset
|
||||||
|
presenceOffset offset
|
||||||
|
presenceSize presenceSize
|
||||||
}
|
}
|
||||||
|
|
||||||
type coderFieldInfo struct {
|
type coderFieldInfo struct {
|
||||||
@ -45,12 +49,19 @@ type coderFieldInfo struct {
|
|||||||
tagsize int // size of the varint-encoded tag
|
tagsize int // size of the varint-encoded tag
|
||||||
isPointer bool // true if IsNil may be called on the struct field
|
isPointer bool // true if IsNil may be called on the struct field
|
||||||
isRequired bool // true if field is required
|
isRequired bool // true if field is required
|
||||||
|
|
||||||
|
isLazy bool
|
||||||
|
presenceIndex uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const noPresence = 0xffffffff
|
||||||
|
|
||||||
func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
|
func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
|
||||||
mi.sizecacheOffset = invalidOffset
|
mi.sizecacheOffset = invalidOffset
|
||||||
mi.unknownOffset = invalidOffset
|
mi.unknownOffset = invalidOffset
|
||||||
mi.extensionOffset = invalidOffset
|
mi.extensionOffset = invalidOffset
|
||||||
|
mi.lazyOffset = invalidOffset
|
||||||
|
mi.presenceOffset = si.presenceOffset
|
||||||
|
|
||||||
if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {
|
if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {
|
||||||
mi.sizecacheOffset = si.sizecacheOffset
|
mi.sizecacheOffset = si.sizecacheOffset
|
||||||
@ -127,6 +138,8 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
|
|||||||
validation: newFieldValidationInfo(mi, si, fd, ft),
|
validation: newFieldValidationInfo(mi, si, fd, ft),
|
||||||
isPointer: fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(),
|
isPointer: fd.Cardinality() == protoreflect.Repeated || fd.HasPresence(),
|
||||||
isRequired: fd.Cardinality() == protoreflect.Required,
|
isRequired: fd.Cardinality() == protoreflect.Required,
|
||||||
|
|
||||||
|
presenceIndex: noPresence,
|
||||||
}
|
}
|
||||||
mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
|
mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
|
||||||
mi.coderFields[cf.num] = cf
|
mi.coderFields[cf.num] = cf
|
||||||
|
156
vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go
generated
vendored
Normal file
156
vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go
generated
vendored
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"sort"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
|
"google.golang.org/protobuf/internal/encoding/messageset"
|
||||||
|
"google.golang.org/protobuf/internal/order"
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
piface "google.golang.org/protobuf/runtime/protoiface"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (mi *MessageInfo) makeOpaqueCoderMethods(t reflect.Type, si opaqueStructInfo) {
|
||||||
|
mi.sizecacheOffset = si.sizecacheOffset
|
||||||
|
mi.unknownOffset = si.unknownOffset
|
||||||
|
mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr
|
||||||
|
mi.extensionOffset = si.extensionOffset
|
||||||
|
mi.lazyOffset = si.lazyOffset
|
||||||
|
mi.presenceOffset = si.presenceOffset
|
||||||
|
|
||||||
|
mi.coderFields = make(map[protowire.Number]*coderFieldInfo)
|
||||||
|
fields := mi.Desc.Fields()
|
||||||
|
for i := 0; i < fields.Len(); i++ {
|
||||||
|
fd := fields.Get(i)
|
||||||
|
|
||||||
|
fs := si.fieldsByNumber[fd.Number()]
|
||||||
|
if fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic() {
|
||||||
|
fs = si.oneofsByName[fd.ContainingOneof().Name()]
|
||||||
|
}
|
||||||
|
ft := fs.Type
|
||||||
|
var wiretag uint64
|
||||||
|
if !fd.IsPacked() {
|
||||||
|
wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])
|
||||||
|
} else {
|
||||||
|
wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)
|
||||||
|
}
|
||||||
|
var fieldOffset offset
|
||||||
|
var funcs pointerCoderFuncs
|
||||||
|
var childMessage *MessageInfo
|
||||||
|
switch {
|
||||||
|
case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
|
||||||
|
fieldOffset = offsetOf(fs, mi.Exporter)
|
||||||
|
case fd.IsWeak():
|
||||||
|
fieldOffset = si.weakOffset
|
||||||
|
funcs = makeWeakMessageFieldCoder(fd)
|
||||||
|
case fd.Message() != nil && !fd.IsMap():
|
||||||
|
fieldOffset = offsetOf(fs, mi.Exporter)
|
||||||
|
if fd.IsList() {
|
||||||
|
childMessage, funcs = makeOpaqueRepeatedMessageFieldCoder(fd, ft)
|
||||||
|
} else {
|
||||||
|
childMessage, funcs = makeOpaqueMessageFieldCoder(fd, ft)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
fieldOffset = offsetOf(fs, mi.Exporter)
|
||||||
|
childMessage, funcs = fieldCoder(fd, ft)
|
||||||
|
}
|
||||||
|
cf := &coderFieldInfo{
|
||||||
|
num: fd.Number(),
|
||||||
|
offset: fieldOffset,
|
||||||
|
wiretag: wiretag,
|
||||||
|
ft: ft,
|
||||||
|
tagsize: protowire.SizeVarint(wiretag),
|
||||||
|
funcs: funcs,
|
||||||
|
mi: childMessage,
|
||||||
|
validation: newFieldValidationInfo(mi, si.structInfo, fd, ft),
|
||||||
|
isPointer: (fd.Cardinality() == protoreflect.Repeated ||
|
||||||
|
fd.Kind() == protoreflect.MessageKind ||
|
||||||
|
fd.Kind() == protoreflect.GroupKind),
|
||||||
|
isRequired: fd.Cardinality() == protoreflect.Required,
|
||||||
|
presenceIndex: noPresence,
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Use presence for all fields.
|
||||||
|
//
|
||||||
|
// In some cases, such as maps, presence means only "might be set" rather
|
||||||
|
// than "is definitely set", but every field should have a presence bit to
|
||||||
|
// permit us to skip over definitely-unset fields at marshal time.
|
||||||
|
|
||||||
|
var hasPresence bool
|
||||||
|
hasPresence, cf.isLazy = usePresenceForField(si, fd)
|
||||||
|
|
||||||
|
if hasPresence {
|
||||||
|
cf.presenceIndex, mi.presenceSize = presenceIndex(mi.Desc, fd)
|
||||||
|
}
|
||||||
|
|
||||||
|
mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
|
||||||
|
mi.coderFields[cf.num] = cf
|
||||||
|
}
|
||||||
|
for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {
|
||||||
|
if od := oneofs.Get(i); !od.IsSynthetic() {
|
||||||
|
mi.initOneofFieldCoders(od, si.structInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if messageset.IsMessageSet(mi.Desc) {
|
||||||
|
if !mi.extensionOffset.IsValid() {
|
||||||
|
panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName()))
|
||||||
|
}
|
||||||
|
if !mi.unknownOffset.IsValid() {
|
||||||
|
panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName()))
|
||||||
|
}
|
||||||
|
mi.isMessageSet = true
|
||||||
|
}
|
||||||
|
sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
|
||||||
|
return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num
|
||||||
|
})
|
||||||
|
|
||||||
|
var maxDense protoreflect.FieldNumber
|
||||||
|
for _, cf := range mi.orderedCoderFields {
|
||||||
|
if cf.num >= 16 && cf.num >= 2*maxDense {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
maxDense = cf.num
|
||||||
|
}
|
||||||
|
mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)
|
||||||
|
for _, cf := range mi.orderedCoderFields {
|
||||||
|
if int(cf.num) > len(mi.denseCoderFields) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
mi.denseCoderFields[cf.num] = cf
|
||||||
|
}
|
||||||
|
|
||||||
|
// To preserve compatibility with historic wire output, marshal oneofs last.
|
||||||
|
if mi.Desc.Oneofs().Len() > 0 {
|
||||||
|
sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
|
||||||
|
fi := fields.ByNumber(mi.orderedCoderFields[i].num)
|
||||||
|
fj := fields.ByNumber(mi.orderedCoderFields[j].num)
|
||||||
|
return order.LegacyFieldOrder(fi, fj)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
mi.needsInitCheck = needsInitCheck(mi.Desc)
|
||||||
|
if mi.methods.Marshal == nil && mi.methods.Size == nil {
|
||||||
|
mi.methods.Flags |= piface.SupportMarshalDeterministic
|
||||||
|
mi.methods.Marshal = mi.marshal
|
||||||
|
mi.methods.Size = mi.size
|
||||||
|
}
|
||||||
|
if mi.methods.Unmarshal == nil {
|
||||||
|
mi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown
|
||||||
|
mi.methods.Unmarshal = mi.unmarshal
|
||||||
|
}
|
||||||
|
if mi.methods.CheckInitialized == nil {
|
||||||
|
mi.methods.CheckInitialized = mi.checkInitialized
|
||||||
|
}
|
||||||
|
if mi.methods.Merge == nil {
|
||||||
|
mi.methods.Merge = mi.merge
|
||||||
|
}
|
||||||
|
if mi.methods.Equal == nil {
|
||||||
|
mi.methods.Equal = equal
|
||||||
|
}
|
||||||
|
}
|
56
vendor/google.golang.org/protobuf/internal/impl/decode.go
generated
vendored
56
vendor/google.golang.org/protobuf/internal/impl/decode.go
generated
vendored
@ -34,6 +34,8 @@ func (o unmarshalOptions) Options() proto.UnmarshalOptions {
|
|||||||
AllowPartial: true,
|
AllowPartial: true,
|
||||||
DiscardUnknown: o.DiscardUnknown(),
|
DiscardUnknown: o.DiscardUnknown(),
|
||||||
Resolver: o.resolver,
|
Resolver: o.resolver,
|
||||||
|
|
||||||
|
NoLazyDecoding: o.NoLazyDecoding(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,13 +43,26 @@ func (o unmarshalOptions) DiscardUnknown() bool {
|
|||||||
return o.flags&protoiface.UnmarshalDiscardUnknown != 0
|
return o.flags&protoiface.UnmarshalDiscardUnknown != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o unmarshalOptions) IsDefault() bool {
|
func (o unmarshalOptions) AliasBuffer() bool { return o.flags&protoiface.UnmarshalAliasBuffer != 0 }
|
||||||
return o.flags == 0 && o.resolver == protoregistry.GlobalTypes
|
func (o unmarshalOptions) Validated() bool { return o.flags&protoiface.UnmarshalValidated != 0 }
|
||||||
|
func (o unmarshalOptions) NoLazyDecoding() bool {
|
||||||
|
return o.flags&protoiface.UnmarshalNoLazyDecoding != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o unmarshalOptions) CanBeLazy() bool {
|
||||||
|
if o.resolver != protoregistry.GlobalTypes {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// We ignore the UnmarshalInvalidateSizeCache even though it's not in the default set
|
||||||
|
return (o.flags & ^(protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated | protoiface.UnmarshalCheckRequired)) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
var lazyUnmarshalOptions = unmarshalOptions{
|
var lazyUnmarshalOptions = unmarshalOptions{
|
||||||
resolver: protoregistry.GlobalTypes,
|
resolver: protoregistry.GlobalTypes,
|
||||||
depth: protowire.DefaultRecursionLimit,
|
|
||||||
|
flags: protoiface.UnmarshalAliasBuffer | protoiface.UnmarshalValidated,
|
||||||
|
|
||||||
|
depth: protowire.DefaultRecursionLimit,
|
||||||
}
|
}
|
||||||
|
|
||||||
type unmarshalOutput struct {
|
type unmarshalOutput struct {
|
||||||
@ -94,9 +109,30 @@ func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.
|
|||||||
if flags.ProtoLegacy && mi.isMessageSet {
|
if flags.ProtoLegacy && mi.isMessageSet {
|
||||||
return unmarshalMessageSet(mi, b, p, opts)
|
return unmarshalMessageSet(mi, b, p, opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lazyDecoding := LazyEnabled() // default
|
||||||
|
if opts.NoLazyDecoding() {
|
||||||
|
lazyDecoding = false // explicitly disabled
|
||||||
|
}
|
||||||
|
if mi.lazyOffset.IsValid() && lazyDecoding {
|
||||||
|
return mi.unmarshalPointerLazy(b, p, groupTag, opts)
|
||||||
|
}
|
||||||
|
return mi.unmarshalPointerEager(b, p, groupTag, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// unmarshalPointerEager is the message unmarshalling function for all messages that are not lazy.
|
||||||
|
// The corresponding function for Lazy is in google_lazy.go.
|
||||||
|
func (mi *MessageInfo) unmarshalPointerEager(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
|
||||||
|
|
||||||
initialized := true
|
initialized := true
|
||||||
var requiredMask uint64
|
var requiredMask uint64
|
||||||
var exts *map[int32]ExtensionField
|
var exts *map[int32]ExtensionField
|
||||||
|
|
||||||
|
var presence presence
|
||||||
|
if mi.presenceOffset.IsValid() {
|
||||||
|
presence = p.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
}
|
||||||
|
|
||||||
start := len(b)
|
start := len(b)
|
||||||
for len(b) > 0 {
|
for len(b) > 0 {
|
||||||
// Parse the tag (field number and wire type).
|
// Parse the tag (field number and wire type).
|
||||||
@ -154,6 +190,11 @@ func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.
|
|||||||
if f.funcs.isInit != nil && !o.initialized {
|
if f.funcs.isInit != nil && !o.initialized {
|
||||||
initialized = false
|
initialized = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if f.presenceIndex != noPresence {
|
||||||
|
presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Possible extension.
|
// Possible extension.
|
||||||
if exts == nil && mi.extensionOffset.IsValid() {
|
if exts == nil && mi.extensionOffset.IsValid() {
|
||||||
@ -222,7 +263,7 @@ func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp p
|
|||||||
return out, errUnknown
|
return out, errUnknown
|
||||||
}
|
}
|
||||||
if flags.LazyUnmarshalExtensions {
|
if flags.LazyUnmarshalExtensions {
|
||||||
if opts.IsDefault() && x.canLazy(xt) {
|
if opts.CanBeLazy() && x.canLazy(xt) {
|
||||||
out, valid := skipExtension(b, xi, num, wtyp, opts)
|
out, valid := skipExtension(b, xi, num, wtyp, opts)
|
||||||
switch valid {
|
switch valid {
|
||||||
case ValidationValid:
|
case ValidationValid:
|
||||||
@ -270,6 +311,13 @@ func skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp
|
|||||||
if n < 0 {
|
if n < 0 {
|
||||||
return out, ValidationUnknown
|
return out, ValidationUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.Validated() {
|
||||||
|
out.initialized = true
|
||||||
|
out.n = n
|
||||||
|
return out, ValidationValid
|
||||||
|
}
|
||||||
|
|
||||||
out, st := xi.validation.mi.validate(v, 0, opts)
|
out, st := xi.validation.mi.validate(v, 0, opts)
|
||||||
out.n = n
|
out.n = n
|
||||||
return out, st
|
return out, st
|
||||||
|
78
vendor/google.golang.org/protobuf/internal/impl/encode.go
generated
vendored
78
vendor/google.golang.org/protobuf/internal/impl/encode.go
generated
vendored
@ -10,6 +10,7 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"google.golang.org/protobuf/internal/flags"
|
"google.golang.org/protobuf/internal/flags"
|
||||||
|
"google.golang.org/protobuf/internal/protolazy"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
piface "google.golang.org/protobuf/runtime/protoiface"
|
piface "google.golang.org/protobuf/runtime/protoiface"
|
||||||
)
|
)
|
||||||
@ -71,11 +72,39 @@ func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int
|
|||||||
e := p.Apply(mi.extensionOffset).Extensions()
|
e := p.Apply(mi.extensionOffset).Extensions()
|
||||||
size += mi.sizeExtensions(e, opts)
|
size += mi.sizeExtensions(e, opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var lazy **protolazy.XXX_lazyUnmarshalInfo
|
||||||
|
var presence presence
|
||||||
|
if mi.presenceOffset.IsValid() {
|
||||||
|
presence = p.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
if mi.lazyOffset.IsValid() {
|
||||||
|
lazy = p.Apply(mi.lazyOffset).LazyInfoPtr()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, f := range mi.orderedCoderFields {
|
for _, f := range mi.orderedCoderFields {
|
||||||
if f.funcs.size == nil {
|
if f.funcs.size == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fptr := p.Apply(f.offset)
|
fptr := p.Apply(f.offset)
|
||||||
|
|
||||||
|
if f.presenceIndex != noPresence {
|
||||||
|
if !presence.Present(f.presenceIndex) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.isLazy && fptr.AtomicGetPointer().IsNil() {
|
||||||
|
if lazyFields(opts) {
|
||||||
|
size += (*lazy).SizeField(uint32(f.num))
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
mi.lazyUnmarshal(p, f.num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
size += f.funcs.size(fptr, f, opts)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if f.isPointer && fptr.Elem().IsNil() {
|
if f.isPointer && fptr.Elem().IsNil() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -134,11 +163,52 @@ func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOpt
|
|||||||
return b, err
|
return b, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var lazy **protolazy.XXX_lazyUnmarshalInfo
|
||||||
|
var presence presence
|
||||||
|
if mi.presenceOffset.IsValid() {
|
||||||
|
presence = p.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
if mi.lazyOffset.IsValid() {
|
||||||
|
lazy = p.Apply(mi.lazyOffset).LazyInfoPtr()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, f := range mi.orderedCoderFields {
|
for _, f := range mi.orderedCoderFields {
|
||||||
if f.funcs.marshal == nil {
|
if f.funcs.marshal == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
fptr := p.Apply(f.offset)
|
fptr := p.Apply(f.offset)
|
||||||
|
|
||||||
|
if f.presenceIndex != noPresence {
|
||||||
|
if !presence.Present(f.presenceIndex) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if f.isLazy {
|
||||||
|
// Be careful, this field needs to be read atomically, like for a get
|
||||||
|
if f.isPointer && fptr.AtomicGetPointer().IsNil() {
|
||||||
|
if lazyFields(opts) {
|
||||||
|
b, _ = (*lazy).AppendField(b, uint32(f.num))
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
mi.lazyUnmarshal(p, f.num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err = f.funcs.marshal(b, fptr, f, opts)
|
||||||
|
if err != nil {
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
} else if f.isPointer && fptr.Elem().IsNil() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
b, err = f.funcs.marshal(b, fptr, f, opts)
|
||||||
|
if err != nil {
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if f.isPointer && fptr.Elem().IsNil() {
|
if f.isPointer && fptr.Elem().IsNil() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -163,6 +233,14 @@ func fullyLazyExtensions(opts marshalOptions) bool {
|
|||||||
return opts.flags&piface.MarshalDeterministic == 0
|
return opts.flags&piface.MarshalDeterministic == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// lazyFields returns true if we should attempt to keep fields lazy over size and marshal.
|
||||||
|
func lazyFields(opts marshalOptions) bool {
|
||||||
|
// When deterministic marshaling is requested, force an unmarshal for lazy
|
||||||
|
// fields to produce a deterministic result, instead of passing through
|
||||||
|
// bytes lazily that may or may not match what Go Protobuf would produce.
|
||||||
|
return opts.flags&piface.MarshalDeterministic == 0
|
||||||
|
}
|
||||||
|
|
||||||
func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {
|
func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {
|
||||||
if ext == nil {
|
if ext == nil {
|
||||||
return 0
|
return 0
|
||||||
|
433
vendor/google.golang.org/protobuf/internal/impl/lazy.go
generated
vendored
Normal file
433
vendor/google.golang.org/protobuf/internal/impl/lazy.go
generated
vendored
Normal file
@ -0,0 +1,433 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math/bits"
|
||||||
|
"os"
|
||||||
|
"reflect"
|
||||||
|
"sort"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
|
"google.golang.org/protobuf/internal/errors"
|
||||||
|
"google.golang.org/protobuf/internal/protolazy"
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
preg "google.golang.org/protobuf/reflect/protoregistry"
|
||||||
|
piface "google.golang.org/protobuf/runtime/protoiface"
|
||||||
|
)
|
||||||
|
|
||||||
|
var enableLazy int32 = func() int32 {
|
||||||
|
if os.Getenv("GOPROTODEBUG") == "nolazy" {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return 1
|
||||||
|
}()
|
||||||
|
|
||||||
|
// EnableLazyUnmarshal enables lazy unmarshaling.
|
||||||
|
func EnableLazyUnmarshal(enable bool) {
|
||||||
|
if enable {
|
||||||
|
atomic.StoreInt32(&enableLazy, 1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
atomic.StoreInt32(&enableLazy, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LazyEnabled reports whether lazy unmarshalling is currently enabled.
|
||||||
|
func LazyEnabled() bool {
|
||||||
|
return atomic.LoadInt32(&enableLazy) != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalField unmarshals a field in a message.
|
||||||
|
func UnmarshalField(m interface{}, num protowire.Number) {
|
||||||
|
switch m := m.(type) {
|
||||||
|
case *messageState:
|
||||||
|
m.messageInfo().lazyUnmarshal(m.pointer(), num)
|
||||||
|
case *messageReflectWrapper:
|
||||||
|
m.messageInfo().lazyUnmarshal(m.pointer(), num)
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("unsupported wrapper type %T", m))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) lazyUnmarshal(p pointer, num protoreflect.FieldNumber) {
|
||||||
|
var f *coderFieldInfo
|
||||||
|
if int(num) < len(mi.denseCoderFields) {
|
||||||
|
f = mi.denseCoderFields[num]
|
||||||
|
} else {
|
||||||
|
f = mi.coderFields[num]
|
||||||
|
}
|
||||||
|
if f == nil {
|
||||||
|
panic(fmt.Sprintf("lazyUnmarshal: field info for %v.%v", mi.Desc.FullName(), num))
|
||||||
|
}
|
||||||
|
lazy := *p.Apply(mi.lazyOffset).LazyInfoPtr()
|
||||||
|
start, end, found, _, multipleEntries := lazy.FindFieldInProto(uint32(num))
|
||||||
|
if !found && multipleEntries == nil {
|
||||||
|
panic(fmt.Sprintf("lazyUnmarshal: can't find field data for %v.%v", mi.Desc.FullName(), num))
|
||||||
|
}
|
||||||
|
// The actual pointer in the message can not be set until the whole struct is filled in, otherwise we will have races.
|
||||||
|
// Create another pointer and set it atomically, if we won the race and the pointer in the original message is still nil.
|
||||||
|
fp := pointerOfValue(reflect.New(f.ft))
|
||||||
|
if multipleEntries != nil {
|
||||||
|
for _, entry := range multipleEntries {
|
||||||
|
mi.unmarshalField(lazy.Buffer()[entry.Start:entry.End], fp, f, lazy, lazy.UnmarshalFlags())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mi.unmarshalField(lazy.Buffer()[start:end], fp, f, lazy, lazy.UnmarshalFlags())
|
||||||
|
}
|
||||||
|
p.Apply(f.offset).AtomicSetPointerIfNil(fp.Elem())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) unmarshalField(b []byte, p pointer, f *coderFieldInfo, lazyInfo *protolazy.XXX_lazyUnmarshalInfo, flags piface.UnmarshalInputFlags) error {
|
||||||
|
opts := lazyUnmarshalOptions
|
||||||
|
opts.flags |= flags
|
||||||
|
for len(b) > 0 {
|
||||||
|
// Parse the tag (field number and wire type).
|
||||||
|
var tag uint64
|
||||||
|
if b[0] < 0x80 {
|
||||||
|
tag = uint64(b[0])
|
||||||
|
b = b[1:]
|
||||||
|
} else if len(b) >= 2 && b[1] < 128 {
|
||||||
|
tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
|
||||||
|
b = b[2:]
|
||||||
|
} else {
|
||||||
|
var n int
|
||||||
|
tag, n = protowire.ConsumeVarint(b)
|
||||||
|
if n < 0 {
|
||||||
|
return errors.New("invalid wire data")
|
||||||
|
}
|
||||||
|
b = b[n:]
|
||||||
|
}
|
||||||
|
var num protowire.Number
|
||||||
|
if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
|
||||||
|
return errors.New("invalid wire data")
|
||||||
|
} else {
|
||||||
|
num = protowire.Number(n)
|
||||||
|
}
|
||||||
|
wtyp := protowire.Type(tag & 7)
|
||||||
|
if num == f.num {
|
||||||
|
o, err := f.funcs.unmarshal(b, p, wtyp, f, opts)
|
||||||
|
if err == nil {
|
||||||
|
b = b[o.n:]
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if err != errUnknown {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
n := protowire.ConsumeFieldValue(num, wtyp, b)
|
||||||
|
if n < 0 {
|
||||||
|
return errors.New("invalid wire data")
|
||||||
|
}
|
||||||
|
b = b[n:]
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) skipField(b []byte, f *coderFieldInfo, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {
|
||||||
|
fmi := f.validation.mi
|
||||||
|
if fmi == nil {
|
||||||
|
fd := mi.Desc.Fields().ByNumber(f.num)
|
||||||
|
if fd == nil || !fd.IsWeak() {
|
||||||
|
return out, ValidationUnknown
|
||||||
|
}
|
||||||
|
messageName := fd.Message().FullName()
|
||||||
|
messageType, err := preg.GlobalTypes.FindMessageByName(messageName)
|
||||||
|
if err != nil {
|
||||||
|
return out, ValidationUnknown
|
||||||
|
}
|
||||||
|
var ok bool
|
||||||
|
fmi, ok = messageType.(*MessageInfo)
|
||||||
|
if !ok {
|
||||||
|
return out, ValidationUnknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmi.init()
|
||||||
|
switch f.validation.typ {
|
||||||
|
case validationTypeMessage:
|
||||||
|
if wtyp != protowire.BytesType {
|
||||||
|
return out, ValidationWrongWireType
|
||||||
|
}
|
||||||
|
v, n := protowire.ConsumeBytes(b)
|
||||||
|
if n < 0 {
|
||||||
|
return out, ValidationInvalid
|
||||||
|
}
|
||||||
|
out, st := fmi.validate(v, 0, opts)
|
||||||
|
out.n = n
|
||||||
|
return out, st
|
||||||
|
case validationTypeGroup:
|
||||||
|
if wtyp != protowire.StartGroupType {
|
||||||
|
return out, ValidationWrongWireType
|
||||||
|
}
|
||||||
|
out, st := fmi.validate(b, f.num, opts)
|
||||||
|
return out, st
|
||||||
|
default:
|
||||||
|
return out, ValidationUnknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// unmarshalPointerLazy is similar to unmarshalPointerEager, but it
|
||||||
|
// specifically handles lazy unmarshalling. it expects lazyOffset and
|
||||||
|
// presenceOffset to both be valid.
|
||||||
|
func (mi *MessageInfo) unmarshalPointerLazy(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
|
||||||
|
initialized := true
|
||||||
|
var requiredMask uint64
|
||||||
|
var lazy **protolazy.XXX_lazyUnmarshalInfo
|
||||||
|
var presence presence
|
||||||
|
var lazyIndex []protolazy.IndexEntry
|
||||||
|
var lastNum protowire.Number
|
||||||
|
outOfOrder := false
|
||||||
|
lazyDecode := false
|
||||||
|
presence = p.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
lazy = p.Apply(mi.lazyOffset).LazyInfoPtr()
|
||||||
|
if !presence.AnyPresent(mi.presenceSize) {
|
||||||
|
if opts.CanBeLazy() {
|
||||||
|
// If the message contains existing data, we need to merge into it.
|
||||||
|
// Lazy unmarshaling doesn't merge, so only enable it when the
|
||||||
|
// message is empty (has no presence bitmap).
|
||||||
|
lazyDecode = true
|
||||||
|
if *lazy == nil {
|
||||||
|
*lazy = &protolazy.XXX_lazyUnmarshalInfo{}
|
||||||
|
}
|
||||||
|
(*lazy).SetUnmarshalFlags(opts.flags)
|
||||||
|
if !opts.AliasBuffer() {
|
||||||
|
// Make a copy of the buffer for lazy unmarshaling.
|
||||||
|
// Set the AliasBuffer flag so recursive unmarshal
|
||||||
|
// operations reuse the copy.
|
||||||
|
b = append([]byte{}, b...)
|
||||||
|
opts.flags |= piface.UnmarshalAliasBuffer
|
||||||
|
}
|
||||||
|
(*lazy).SetBuffer(b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Track special handling of lazy fields.
|
||||||
|
//
|
||||||
|
// In the common case, all fields are lazyValidateOnly (and lazyFields remains nil).
|
||||||
|
// In the event that validation for a field fails, this map tracks handling of the field.
|
||||||
|
type lazyAction uint8
|
||||||
|
const (
|
||||||
|
lazyValidateOnly lazyAction = iota // validate the field only
|
||||||
|
lazyUnmarshalNow // eagerly unmarshal the field
|
||||||
|
lazyUnmarshalLater // unmarshal the field after the message is fully processed
|
||||||
|
)
|
||||||
|
var lazyFields map[*coderFieldInfo]lazyAction
|
||||||
|
var exts *map[int32]ExtensionField
|
||||||
|
start := len(b)
|
||||||
|
pos := 0
|
||||||
|
for len(b) > 0 {
|
||||||
|
// Parse the tag (field number and wire type).
|
||||||
|
var tag uint64
|
||||||
|
if b[0] < 0x80 {
|
||||||
|
tag = uint64(b[0])
|
||||||
|
b = b[1:]
|
||||||
|
} else if len(b) >= 2 && b[1] < 128 {
|
||||||
|
tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
|
||||||
|
b = b[2:]
|
||||||
|
} else {
|
||||||
|
var n int
|
||||||
|
tag, n = protowire.ConsumeVarint(b)
|
||||||
|
if n < 0 {
|
||||||
|
return out, errDecode
|
||||||
|
}
|
||||||
|
b = b[n:]
|
||||||
|
}
|
||||||
|
var num protowire.Number
|
||||||
|
if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
|
||||||
|
return out, errors.New("invalid field number")
|
||||||
|
} else {
|
||||||
|
num = protowire.Number(n)
|
||||||
|
}
|
||||||
|
wtyp := protowire.Type(tag & 7)
|
||||||
|
|
||||||
|
if wtyp == protowire.EndGroupType {
|
||||||
|
if num != groupTag {
|
||||||
|
return out, errors.New("mismatching end group marker")
|
||||||
|
}
|
||||||
|
groupTag = 0
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
var f *coderFieldInfo
|
||||||
|
if int(num) < len(mi.denseCoderFields) {
|
||||||
|
f = mi.denseCoderFields[num]
|
||||||
|
} else {
|
||||||
|
f = mi.coderFields[num]
|
||||||
|
}
|
||||||
|
var n int
|
||||||
|
err := errUnknown
|
||||||
|
discardUnknown := false
|
||||||
|
Field:
|
||||||
|
switch {
|
||||||
|
case f != nil:
|
||||||
|
if f.funcs.unmarshal == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if f.isLazy && lazyDecode {
|
||||||
|
switch {
|
||||||
|
case lazyFields == nil || lazyFields[f] == lazyValidateOnly:
|
||||||
|
// Attempt to validate this field and leave it for later lazy unmarshaling.
|
||||||
|
o, valid := mi.skipField(b, f, wtyp, opts)
|
||||||
|
switch valid {
|
||||||
|
case ValidationValid:
|
||||||
|
// Skip over the valid field and continue.
|
||||||
|
err = nil
|
||||||
|
presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
|
||||||
|
requiredMask |= f.validation.requiredBit
|
||||||
|
if !o.initialized {
|
||||||
|
initialized = false
|
||||||
|
}
|
||||||
|
n = o.n
|
||||||
|
break Field
|
||||||
|
case ValidationInvalid:
|
||||||
|
return out, errors.New("invalid proto wire format")
|
||||||
|
case ValidationWrongWireType:
|
||||||
|
break Field
|
||||||
|
case ValidationUnknown:
|
||||||
|
if lazyFields == nil {
|
||||||
|
lazyFields = make(map[*coderFieldInfo]lazyAction)
|
||||||
|
}
|
||||||
|
if presence.Present(f.presenceIndex) {
|
||||||
|
// We were unable to determine if the field is valid or not,
|
||||||
|
// and we've already skipped over at least one instance of this
|
||||||
|
// field. Clear the presence bit (so if we stop decoding early,
|
||||||
|
// we don't leave a partially-initialized field around) and flag
|
||||||
|
// the field for unmarshaling before we return.
|
||||||
|
presence.ClearPresent(f.presenceIndex)
|
||||||
|
lazyFields[f] = lazyUnmarshalLater
|
||||||
|
discardUnknown = true
|
||||||
|
break Field
|
||||||
|
} else {
|
||||||
|
// We were unable to determine if the field is valid or not,
|
||||||
|
// but this is the first time we've seen it. Flag it as needing
|
||||||
|
// eager unmarshaling and fall through to the eager unmarshal case below.
|
||||||
|
lazyFields[f] = lazyUnmarshalNow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case lazyFields[f] == lazyUnmarshalLater:
|
||||||
|
// This field will be unmarshaled in a separate pass below.
|
||||||
|
// Skip over it here.
|
||||||
|
discardUnknown = true
|
||||||
|
break Field
|
||||||
|
default:
|
||||||
|
// Eagerly unmarshal the field.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if f.isLazy && !lazyDecode && presence.Present(f.presenceIndex) {
|
||||||
|
if p.Apply(f.offset).AtomicGetPointer().IsNil() {
|
||||||
|
mi.lazyUnmarshal(p, f.num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var o unmarshalOutput
|
||||||
|
o, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)
|
||||||
|
n = o.n
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
requiredMask |= f.validation.requiredBit
|
||||||
|
if f.funcs.isInit != nil && !o.initialized {
|
||||||
|
initialized = false
|
||||||
|
}
|
||||||
|
if f.presenceIndex != noPresence {
|
||||||
|
presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
// Possible extension.
|
||||||
|
if exts == nil && mi.extensionOffset.IsValid() {
|
||||||
|
exts = p.Apply(mi.extensionOffset).Extensions()
|
||||||
|
if *exts == nil {
|
||||||
|
*exts = make(map[int32]ExtensionField)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if exts == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
var o unmarshalOutput
|
||||||
|
o, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
n = o.n
|
||||||
|
if !o.initialized {
|
||||||
|
initialized = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
if err != errUnknown {
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
|
n = protowire.ConsumeFieldValue(num, wtyp, b)
|
||||||
|
if n < 0 {
|
||||||
|
return out, errDecode
|
||||||
|
}
|
||||||
|
if !discardUnknown && !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {
|
||||||
|
u := mi.mutableUnknownBytes(p)
|
||||||
|
*u = protowire.AppendTag(*u, num, wtyp)
|
||||||
|
*u = append(*u, b[:n]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b = b[n:]
|
||||||
|
end := start - len(b)
|
||||||
|
if lazyDecode && f != nil && f.isLazy {
|
||||||
|
if num != lastNum {
|
||||||
|
lazyIndex = append(lazyIndex, protolazy.IndexEntry{
|
||||||
|
FieldNum: uint32(num),
|
||||||
|
Start: uint32(pos),
|
||||||
|
End: uint32(end),
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
i := len(lazyIndex) - 1
|
||||||
|
lazyIndex[i].End = uint32(end)
|
||||||
|
lazyIndex[i].MultipleContiguous = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if num < lastNum {
|
||||||
|
outOfOrder = true
|
||||||
|
}
|
||||||
|
pos = end
|
||||||
|
lastNum = num
|
||||||
|
}
|
||||||
|
if groupTag != 0 {
|
||||||
|
return out, errors.New("missing end group marker")
|
||||||
|
}
|
||||||
|
if lazyFields != nil {
|
||||||
|
// Some fields failed validation, and now need to be unmarshaled.
|
||||||
|
for f, action := range lazyFields {
|
||||||
|
if action != lazyUnmarshalLater {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
initialized = false
|
||||||
|
if *lazy == nil {
|
||||||
|
*lazy = &protolazy.XXX_lazyUnmarshalInfo{}
|
||||||
|
}
|
||||||
|
if err := mi.unmarshalField((*lazy).Buffer(), p.Apply(f.offset), f, *lazy, opts.flags); err != nil {
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
|
presence.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if lazyDecode {
|
||||||
|
if outOfOrder {
|
||||||
|
sort.Slice(lazyIndex, func(i, j int) bool {
|
||||||
|
return lazyIndex[i].FieldNum < lazyIndex[j].FieldNum ||
|
||||||
|
(lazyIndex[i].FieldNum == lazyIndex[j].FieldNum &&
|
||||||
|
lazyIndex[i].Start < lazyIndex[j].Start)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if *lazy == nil {
|
||||||
|
*lazy = &protolazy.XXX_lazyUnmarshalInfo{}
|
||||||
|
}
|
||||||
|
|
||||||
|
(*lazy).SetIndex(lazyIndex)
|
||||||
|
}
|
||||||
|
if mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {
|
||||||
|
initialized = false
|
||||||
|
}
|
||||||
|
if initialized {
|
||||||
|
out.initialized = true
|
||||||
|
}
|
||||||
|
out.n = start - len(b)
|
||||||
|
return out, nil
|
||||||
|
}
|
27
vendor/google.golang.org/protobuf/internal/impl/merge.go
generated
vendored
27
vendor/google.golang.org/protobuf/internal/impl/merge.go
generated
vendored
@ -41,11 +41,38 @@ func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {
|
|||||||
if src.IsNil() {
|
if src.IsNil() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var presenceSrc presence
|
||||||
|
var presenceDst presence
|
||||||
|
if mi.presenceOffset.IsValid() {
|
||||||
|
presenceSrc = src.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
presenceDst = dst.Apply(mi.presenceOffset).PresenceInfo()
|
||||||
|
}
|
||||||
|
|
||||||
for _, f := range mi.orderedCoderFields {
|
for _, f := range mi.orderedCoderFields {
|
||||||
if f.funcs.merge == nil {
|
if f.funcs.merge == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
sfptr := src.Apply(f.offset)
|
sfptr := src.Apply(f.offset)
|
||||||
|
|
||||||
|
if f.presenceIndex != noPresence {
|
||||||
|
if !presenceSrc.Present(f.presenceIndex) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
dfptr := dst.Apply(f.offset)
|
||||||
|
if f.isLazy {
|
||||||
|
if sfptr.AtomicGetPointer().IsNil() {
|
||||||
|
mi.lazyUnmarshal(src, f.num)
|
||||||
|
}
|
||||||
|
if presenceDst.Present(f.presenceIndex) && dfptr.AtomicGetPointer().IsNil() {
|
||||||
|
mi.lazyUnmarshal(dst, f.num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)
|
||||||
|
presenceDst.SetPresentUnatomic(f.presenceIndex, mi.presenceSize)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if f.isPointer && sfptr.Elem().IsNil() {
|
if f.isPointer && sfptr.Elem().IsNil() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
12
vendor/google.golang.org/protobuf/internal/impl/message.go
generated
vendored
12
vendor/google.golang.org/protobuf/internal/impl/message.go
generated
vendored
@ -79,6 +79,9 @@ func (mi *MessageInfo) initOnce() {
|
|||||||
if mi.initDone == 1 {
|
if mi.initDone == 1 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if opaqueInitHook(mi) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
t := mi.GoReflectType
|
t := mi.GoReflectType
|
||||||
if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {
|
if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {
|
||||||
@ -133,6 +136,9 @@ type structInfo struct {
|
|||||||
extensionOffset offset
|
extensionOffset offset
|
||||||
extensionType reflect.Type
|
extensionType reflect.Type
|
||||||
|
|
||||||
|
lazyOffset offset
|
||||||
|
presenceOffset offset
|
||||||
|
|
||||||
fieldsByNumber map[protoreflect.FieldNumber]reflect.StructField
|
fieldsByNumber map[protoreflect.FieldNumber]reflect.StructField
|
||||||
oneofsByName map[protoreflect.Name]reflect.StructField
|
oneofsByName map[protoreflect.Name]reflect.StructField
|
||||||
oneofWrappersByType map[reflect.Type]protoreflect.FieldNumber
|
oneofWrappersByType map[reflect.Type]protoreflect.FieldNumber
|
||||||
@ -145,6 +151,8 @@ func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {
|
|||||||
weakOffset: invalidOffset,
|
weakOffset: invalidOffset,
|
||||||
unknownOffset: invalidOffset,
|
unknownOffset: invalidOffset,
|
||||||
extensionOffset: invalidOffset,
|
extensionOffset: invalidOffset,
|
||||||
|
lazyOffset: invalidOffset,
|
||||||
|
presenceOffset: invalidOffset,
|
||||||
|
|
||||||
fieldsByNumber: map[protoreflect.FieldNumber]reflect.StructField{},
|
fieldsByNumber: map[protoreflect.FieldNumber]reflect.StructField{},
|
||||||
oneofsByName: map[protoreflect.Name]reflect.StructField{},
|
oneofsByName: map[protoreflect.Name]reflect.StructField{},
|
||||||
@ -175,6 +183,10 @@ fieldLoop:
|
|||||||
si.extensionOffset = offsetOf(f, mi.Exporter)
|
si.extensionOffset = offsetOf(f, mi.Exporter)
|
||||||
si.extensionType = f.Type
|
si.extensionType = f.Type
|
||||||
}
|
}
|
||||||
|
case "lazyFields", "XXX_lazyUnmarshalInfo":
|
||||||
|
si.lazyOffset = offsetOf(f, mi.Exporter)
|
||||||
|
case "XXX_presence":
|
||||||
|
si.presenceOffset = offsetOf(f, mi.Exporter)
|
||||||
default:
|
default:
|
||||||
for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
|
for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
|
||||||
if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
|
if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
|
||||||
|
614
vendor/google.golang.org/protobuf/internal/impl/message_opaque.go
generated
vendored
Normal file
614
vendor/google.golang.org/protobuf/internal/impl/message_opaque.go
generated
vendored
Normal file
@ -0,0 +1,614 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
type opaqueStructInfo struct {
|
||||||
|
structInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
// isOpaque determines whether a protobuf message type is on the Opaque API. It
|
||||||
|
// checks whether the type is a Go struct that protoc-gen-go would generate.
|
||||||
|
//
|
||||||
|
// This function only detects newly generated messages from the v2
|
||||||
|
// implementation of protoc-gen-go. It is unable to classify generated messages
|
||||||
|
// that are too old or those that are generated by a different generator
|
||||||
|
// such as protoc-gen-gogo.
|
||||||
|
func isOpaque(t reflect.Type) bool {
|
||||||
|
// The current detection mechanism is to simply check the first field
|
||||||
|
// for a struct tag with the "protogen" key.
|
||||||
|
if t.Kind() == reflect.Struct && t.NumField() > 0 {
|
||||||
|
pgt := t.Field(0).Tag.Get("protogen")
|
||||||
|
return strings.HasPrefix(pgt, "opaque.")
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func opaqueInitHook(mi *MessageInfo) bool {
|
||||||
|
mt := mi.GoReflectType.Elem()
|
||||||
|
si := opaqueStructInfo{
|
||||||
|
structInfo: mi.makeStructInfo(mt),
|
||||||
|
}
|
||||||
|
|
||||||
|
if !isOpaque(mt) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
defer atomic.StoreUint32(&mi.initDone, 1)
|
||||||
|
|
||||||
|
mi.fields = map[protoreflect.FieldNumber]*fieldInfo{}
|
||||||
|
fds := mi.Desc.Fields()
|
||||||
|
for i := 0; i < fds.Len(); i++ {
|
||||||
|
fd := fds.Get(i)
|
||||||
|
fs := si.fieldsByNumber[fd.Number()]
|
||||||
|
var fi fieldInfo
|
||||||
|
usePresence, _ := usePresenceForField(si, fd)
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case fd.IsWeak():
|
||||||
|
// Weak fields are no different for opaque.
|
||||||
|
fi = fieldInfoForWeakMessage(fd, si.weakOffset)
|
||||||
|
case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
|
||||||
|
// Oneofs are no different for opaque.
|
||||||
|
fi = fieldInfoForOneof(fd, si.oneofsByName[fd.ContainingOneof().Name()], mi.Exporter, si.oneofWrappersByNumber[fd.Number()])
|
||||||
|
case fd.IsMap():
|
||||||
|
fi = mi.fieldInfoForMapOpaque(si, fd, fs)
|
||||||
|
case fd.IsList() && fd.Message() == nil && usePresence:
|
||||||
|
fi = mi.fieldInfoForScalarListOpaque(si, fd, fs)
|
||||||
|
case fd.IsList() && fd.Message() == nil:
|
||||||
|
// Proto3 lists without presence can use same access methods as open
|
||||||
|
fi = fieldInfoForList(fd, fs, mi.Exporter)
|
||||||
|
case fd.IsList() && usePresence:
|
||||||
|
fi = mi.fieldInfoForMessageListOpaque(si, fd, fs)
|
||||||
|
case fd.IsList():
|
||||||
|
// Proto3 opaque messages that does not need presence bitmap.
|
||||||
|
// Different representation than open struct, but same logic
|
||||||
|
fi = mi.fieldInfoForMessageListOpaqueNoPresence(si, fd, fs)
|
||||||
|
case fd.Message() != nil && usePresence:
|
||||||
|
fi = mi.fieldInfoForMessageOpaque(si, fd, fs)
|
||||||
|
case fd.Message() != nil:
|
||||||
|
// Proto3 messages without presence can use same access methods as open
|
||||||
|
fi = fieldInfoForMessage(fd, fs, mi.Exporter)
|
||||||
|
default:
|
||||||
|
fi = mi.fieldInfoForScalarOpaque(si, fd, fs)
|
||||||
|
}
|
||||||
|
mi.fields[fd.Number()] = &fi
|
||||||
|
}
|
||||||
|
mi.oneofs = map[protoreflect.Name]*oneofInfo{}
|
||||||
|
for i := 0; i < mi.Desc.Oneofs().Len(); i++ {
|
||||||
|
od := mi.Desc.Oneofs().Get(i)
|
||||||
|
if !od.IsSynthetic() {
|
||||||
|
mi.oneofs[od.Name()] = makeOneofInfo(od, si.structInfo, mi.Exporter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mi.denseFields = make([]*fieldInfo, fds.Len()*2)
|
||||||
|
for i := 0; i < fds.Len(); i++ {
|
||||||
|
if fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {
|
||||||
|
mi.denseFields[fd.Number()] = mi.fields[fd.Number()]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < fds.Len(); {
|
||||||
|
fd := fds.Get(i)
|
||||||
|
if od := fd.ContainingOneof(); od != nil && !fd.ContainingOneof().IsSynthetic() {
|
||||||
|
mi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])
|
||||||
|
i += od.Fields().Len()
|
||||||
|
} else {
|
||||||
|
mi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mi.makeExtensionFieldsFunc(mt, si.structInfo)
|
||||||
|
mi.makeUnknownFieldsFunc(mt, si.structInfo)
|
||||||
|
mi.makeOpaqueCoderMethods(mt, si)
|
||||||
|
mi.makeFieldTypes(si.structInfo)
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) fieldInfoForMapOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
|
||||||
|
ft := fs.Type
|
||||||
|
if ft.Kind() != reflect.Map {
|
||||||
|
panic(fmt.Sprintf("invalid type: got %v, want map kind", ft))
|
||||||
|
}
|
||||||
|
fieldOffset := offsetOf(fs, mi.Exporter)
|
||||||
|
conv := NewConverter(ft, fd)
|
||||||
|
return fieldInfo{
|
||||||
|
fieldDesc: fd,
|
||||||
|
has: func(p pointer) bool {
|
||||||
|
if p.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// Don't bother checking presence bits, since we need to
|
||||||
|
// look at the map length even if the presence bit is set.
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
return rv.Len() > 0
|
||||||
|
},
|
||||||
|
clear: func(p pointer) {
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
rv.Set(reflect.Zero(rv.Type()))
|
||||||
|
},
|
||||||
|
get: func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
if rv.Len() == 0 {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
|
pv := conv.GoValueOf(v)
|
||||||
|
if pv.IsNil() {
|
||||||
|
panic(fmt.Sprintf("invalid value: setting map field to read-only value"))
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
rv.Set(pv)
|
||||||
|
},
|
||||||
|
mutable: func(p pointer) protoreflect.Value {
|
||||||
|
v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
if v.IsNil() {
|
||||||
|
v.Set(reflect.MakeMap(fs.Type))
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(v)
|
||||||
|
},
|
||||||
|
newField: func() protoreflect.Value {
|
||||||
|
return conv.New()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) fieldInfoForScalarListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
|
||||||
|
ft := fs.Type
|
||||||
|
if ft.Kind() != reflect.Slice {
|
||||||
|
panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft))
|
||||||
|
}
|
||||||
|
conv := NewConverter(reflect.PtrTo(ft), fd)
|
||||||
|
fieldOffset := offsetOf(fs, mi.Exporter)
|
||||||
|
index, _ := presenceIndex(mi.Desc, fd)
|
||||||
|
return fieldInfo{
|
||||||
|
fieldDesc: fd,
|
||||||
|
has: func(p pointer) bool {
|
||||||
|
if p.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
return rv.Len() > 0
|
||||||
|
},
|
||||||
|
clear: func(p pointer) {
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
rv.Set(reflect.Zero(rv.Type()))
|
||||||
|
},
|
||||||
|
get: func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type)
|
||||||
|
if rv.Elem().Len() == 0 {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
|
pv := conv.GoValueOf(v)
|
||||||
|
if pv.IsNil() {
|
||||||
|
panic(fmt.Sprintf("invalid value: setting repeated field to read-only value"))
|
||||||
|
}
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
rv.Set(pv.Elem())
|
||||||
|
},
|
||||||
|
mutable: func(p pointer) protoreflect.Value {
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
return conv.PBValueOf(p.Apply(fieldOffset).AsValueOf(fs.Type))
|
||||||
|
},
|
||||||
|
newField: func() protoreflect.Value {
|
||||||
|
return conv.New()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) fieldInfoForMessageListOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
|
||||||
|
ft := fs.Type
|
||||||
|
if ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {
|
||||||
|
panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft))
|
||||||
|
}
|
||||||
|
conv := NewConverter(ft, fd)
|
||||||
|
fieldOffset := offsetOf(fs, mi.Exporter)
|
||||||
|
index, _ := presenceIndex(mi.Desc, fd)
|
||||||
|
fieldNumber := fd.Number()
|
||||||
|
return fieldInfo{
|
||||||
|
fieldDesc: fd,
|
||||||
|
has: func(p pointer) bool {
|
||||||
|
if p.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if !mi.present(p, index) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
sp := p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
// Lazily unmarshal this field.
|
||||||
|
mi.lazyUnmarshal(p, fieldNumber)
|
||||||
|
sp = p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
return rv.Elem().Len() > 0
|
||||||
|
},
|
||||||
|
clear: func(p pointer) {
|
||||||
|
fp := p.Apply(fieldOffset)
|
||||||
|
sp := fp.AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
sp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
rv.Elem().Set(reflect.Zero(rv.Type().Elem()))
|
||||||
|
},
|
||||||
|
get: func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
if !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
sp := p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
// Lazily unmarshal this field.
|
||||||
|
mi.lazyUnmarshal(p, fieldNumber)
|
||||||
|
sp = p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
if rv.Elem().Len() == 0 {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
|
fp := p.Apply(fieldOffset)
|
||||||
|
sp := fp.AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
sp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
val := conv.GoValueOf(v)
|
||||||
|
if val.IsNil() {
|
||||||
|
panic(fmt.Sprintf("invalid value: setting repeated field to read-only value"))
|
||||||
|
} else {
|
||||||
|
rv.Elem().Set(val.Elem())
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mutable: func(p pointer) protoreflect.Value {
|
||||||
|
fp := p.Apply(fieldOffset)
|
||||||
|
sp := fp.AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
if mi.present(p, index) {
|
||||||
|
// Lazily unmarshal this field.
|
||||||
|
mi.lazyUnmarshal(p, fieldNumber)
|
||||||
|
sp = p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
} else {
|
||||||
|
sp = fp.AtomicSetPointerIfNil(pointerOfValue(reflect.New(fs.Type.Elem())))
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
newField: func() protoreflect.Value {
|
||||||
|
return conv.New()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) fieldInfoForMessageListOpaqueNoPresence(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
|
||||||
|
ft := fs.Type
|
||||||
|
if ft.Kind() != reflect.Ptr || ft.Elem().Kind() != reflect.Slice {
|
||||||
|
panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft))
|
||||||
|
}
|
||||||
|
conv := NewConverter(ft, fd)
|
||||||
|
fieldOffset := offsetOf(fs, mi.Exporter)
|
||||||
|
return fieldInfo{
|
||||||
|
fieldDesc: fd,
|
||||||
|
has: func(p pointer) bool {
|
||||||
|
if p.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
sp := p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
return rv.Elem().Len() > 0
|
||||||
|
},
|
||||||
|
clear: func(p pointer) {
|
||||||
|
sp := p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
if !sp.IsNil() {
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
rv.Elem().Set(reflect.Zero(rv.Type().Elem()))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
get: func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
sp := p.Apply(fieldOffset).AtomicGetPointer()
|
||||||
|
if sp.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
rv := sp.AsValueOf(fs.Type.Elem())
|
||||||
|
if rv.Elem().Len() == 0 {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
if rv.IsNil() {
|
||||||
|
rv.Set(reflect.New(fs.Type.Elem()))
|
||||||
|
}
|
||||||
|
val := conv.GoValueOf(v)
|
||||||
|
if val.IsNil() {
|
||||||
|
panic(fmt.Sprintf("invalid value: setting repeated field to read-only value"))
|
||||||
|
} else {
|
||||||
|
rv.Elem().Set(val.Elem())
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mutable: func(p pointer) protoreflect.Value {
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
if rv.IsNil() {
|
||||||
|
rv.Set(reflect.New(fs.Type.Elem()))
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
newField: func() protoreflect.Value {
|
||||||
|
return conv.New()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) fieldInfoForScalarOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
|
||||||
|
ft := fs.Type
|
||||||
|
nullable := fd.HasPresence()
|
||||||
|
if oneof := fd.ContainingOneof(); oneof != nil && oneof.IsSynthetic() {
|
||||||
|
nullable = true
|
||||||
|
}
|
||||||
|
deref := false
|
||||||
|
if nullable && ft.Kind() == reflect.Ptr {
|
||||||
|
ft = ft.Elem()
|
||||||
|
deref = true
|
||||||
|
}
|
||||||
|
conv := NewConverter(ft, fd)
|
||||||
|
fieldOffset := offsetOf(fs, mi.Exporter)
|
||||||
|
index, _ := presenceIndex(mi.Desc, fd)
|
||||||
|
var getter func(p pointer) protoreflect.Value
|
||||||
|
if !nullable {
|
||||||
|
getter = getterForDirectScalar(fd, fs, conv, fieldOffset)
|
||||||
|
} else {
|
||||||
|
getter = getterForOpaqueNullableScalar(mi, index, fd, fs, conv, fieldOffset)
|
||||||
|
}
|
||||||
|
return fieldInfo{
|
||||||
|
fieldDesc: fd,
|
||||||
|
has: func(p pointer) bool {
|
||||||
|
if p.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if nullable {
|
||||||
|
return mi.present(p, index)
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
switch rv.Kind() {
|
||||||
|
case reflect.Bool:
|
||||||
|
return rv.Bool()
|
||||||
|
case reflect.Int32, reflect.Int64:
|
||||||
|
return rv.Int() != 0
|
||||||
|
case reflect.Uint32, reflect.Uint64:
|
||||||
|
return rv.Uint() != 0
|
||||||
|
case reflect.Float32, reflect.Float64:
|
||||||
|
return rv.Float() != 0 || math.Signbit(rv.Float())
|
||||||
|
case reflect.String, reflect.Slice:
|
||||||
|
return rv.Len() > 0
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("invalid type: %v", rv.Type())) // should never happen
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clear: func(p pointer) {
|
||||||
|
if nullable {
|
||||||
|
mi.clearPresent(p, index)
|
||||||
|
}
|
||||||
|
// This is only valuable for bytes and strings, but we do it unconditionally.
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
rv.Set(reflect.Zero(rv.Type()))
|
||||||
|
},
|
||||||
|
get: getter,
|
||||||
|
// TODO: Implement unsafe fast path for set?
|
||||||
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
if deref {
|
||||||
|
if rv.IsNil() {
|
||||||
|
rv.Set(reflect.New(ft))
|
||||||
|
}
|
||||||
|
rv = rv.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
rv.Set(conv.GoValueOf(v))
|
||||||
|
if nullable && rv.Kind() == reflect.Slice && rv.IsNil() {
|
||||||
|
rv.Set(emptyBytes)
|
||||||
|
}
|
||||||
|
if nullable {
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
newField: func() protoreflect.Value {
|
||||||
|
return conv.New()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) fieldInfoForMessageOpaque(si opaqueStructInfo, fd protoreflect.FieldDescriptor, fs reflect.StructField) fieldInfo {
|
||||||
|
ft := fs.Type
|
||||||
|
conv := NewConverter(ft, fd)
|
||||||
|
fieldOffset := offsetOf(fs, mi.Exporter)
|
||||||
|
index, _ := presenceIndex(mi.Desc, fd)
|
||||||
|
fieldNumber := fd.Number()
|
||||||
|
elemType := fs.Type.Elem()
|
||||||
|
return fieldInfo{
|
||||||
|
fieldDesc: fd,
|
||||||
|
has: func(p pointer) bool {
|
||||||
|
if p.IsNil() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return mi.present(p, index)
|
||||||
|
},
|
||||||
|
clear: func(p pointer) {
|
||||||
|
mi.clearPresent(p, index)
|
||||||
|
p.Apply(fieldOffset).AtomicSetNilPointer()
|
||||||
|
},
|
||||||
|
get: func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
fp := p.Apply(fieldOffset)
|
||||||
|
mp := fp.AtomicGetPointer()
|
||||||
|
if mp.IsNil() {
|
||||||
|
// Lazily unmarshal this field.
|
||||||
|
mi.lazyUnmarshal(p, fieldNumber)
|
||||||
|
mp = fp.AtomicGetPointer()
|
||||||
|
}
|
||||||
|
rv := mp.AsValueOf(elemType)
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
},
|
||||||
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
|
val := pointerOfValue(conv.GoValueOf(v))
|
||||||
|
if val.IsNil() {
|
||||||
|
panic("invalid nil pointer")
|
||||||
|
}
|
||||||
|
p.Apply(fieldOffset).AtomicSetPointer(val)
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
},
|
||||||
|
mutable: func(p pointer) protoreflect.Value {
|
||||||
|
fp := p.Apply(fieldOffset)
|
||||||
|
mp := fp.AtomicGetPointer()
|
||||||
|
if mp.IsNil() {
|
||||||
|
if mi.present(p, index) {
|
||||||
|
// Lazily unmarshal this field.
|
||||||
|
mi.lazyUnmarshal(p, fieldNumber)
|
||||||
|
mp = fp.AtomicGetPointer()
|
||||||
|
} else {
|
||||||
|
mp = pointerOfValue(conv.GoValueOf(conv.New()))
|
||||||
|
fp.AtomicSetPointer(mp)
|
||||||
|
mi.setPresent(p, index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(mp.AsValueOf(fs.Type.Elem()))
|
||||||
|
},
|
||||||
|
newMessage: func() protoreflect.Message {
|
||||||
|
return conv.New().Message()
|
||||||
|
},
|
||||||
|
newField: func() protoreflect.Value {
|
||||||
|
return conv.New()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A presenceList wraps a List, updating presence bits as necessary when the
|
||||||
|
// list contents change.
|
||||||
|
type presenceList struct {
|
||||||
|
pvalueList
|
||||||
|
setPresence func(bool)
|
||||||
|
}
|
||||||
|
type pvalueList interface {
|
||||||
|
protoreflect.List
|
||||||
|
//Unwrapper
|
||||||
|
}
|
||||||
|
|
||||||
|
func (list presenceList) Append(v protoreflect.Value) {
|
||||||
|
list.pvalueList.Append(v)
|
||||||
|
list.setPresence(true)
|
||||||
|
}
|
||||||
|
func (list presenceList) Truncate(i int) {
|
||||||
|
list.pvalueList.Truncate(i)
|
||||||
|
list.setPresence(i > 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
// presenceIndex returns the index to pass to presence functions.
|
||||||
|
//
|
||||||
|
// TODO: field.Desc.Index() would be simpler, and would give space to record the presence of oneof fields.
|
||||||
|
func presenceIndex(md protoreflect.MessageDescriptor, fd protoreflect.FieldDescriptor) (uint32, presenceSize) {
|
||||||
|
found := false
|
||||||
|
var index, numIndices uint32
|
||||||
|
for i := 0; i < md.Fields().Len(); i++ {
|
||||||
|
f := md.Fields().Get(i)
|
||||||
|
if f == fd {
|
||||||
|
found = true
|
||||||
|
index = numIndices
|
||||||
|
}
|
||||||
|
if f.ContainingOneof() == nil || isLastOneofField(f) {
|
||||||
|
numIndices++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
panic(fmt.Sprintf("BUG: %v not in %v", fd.Name(), md.FullName()))
|
||||||
|
}
|
||||||
|
return index, presenceSize(numIndices)
|
||||||
|
}
|
||||||
|
|
||||||
|
func isLastOneofField(fd protoreflect.FieldDescriptor) bool {
|
||||||
|
fields := fd.ContainingOneof().Fields()
|
||||||
|
return fields.Get(fields.Len()-1) == fd
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) setPresent(p pointer, index uint32) {
|
||||||
|
p.Apply(mi.presenceOffset).PresenceInfo().SetPresent(index, mi.presenceSize)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) clearPresent(p pointer, index uint32) {
|
||||||
|
p.Apply(mi.presenceOffset).PresenceInfo().ClearPresent(index)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *MessageInfo) present(p pointer, index uint32) bool {
|
||||||
|
return p.Apply(mi.presenceOffset).PresenceInfo().Present(index)
|
||||||
|
}
|
||||||
|
|
||||||
|
// usePresenceForField implements the somewhat intricate logic of when
|
||||||
|
// the presence bitmap is used for a field. The main logic is that a
|
||||||
|
// field that is optional or that can be lazy will use the presence
|
||||||
|
// bit, but for proto2, also maps have a presence bit. It also records
|
||||||
|
// if the field can ever be lazy, which is true if we have a
|
||||||
|
// lazyOffset and the field is a message or a slice of messages. A
|
||||||
|
// field that is lazy will always need a presence bit. Oneofs are not
|
||||||
|
// lazy and do not use presence, unless they are a synthetic oneof,
|
||||||
|
// which is a proto3 optional field. For proto3 optionals, we use the
|
||||||
|
// presence and they can also be lazy when applicable (a message).
|
||||||
|
func usePresenceForField(si opaqueStructInfo, fd protoreflect.FieldDescriptor) (usePresence, canBeLazy bool) {
|
||||||
|
hasLazyField := fd.(interface{ IsLazy() bool }).IsLazy()
|
||||||
|
|
||||||
|
// Non-oneof scalar fields with explicit field presence use the presence array.
|
||||||
|
usesPresenceArray := fd.HasPresence() && fd.Message() == nil && (fd.ContainingOneof() == nil || fd.ContainingOneof().IsSynthetic())
|
||||||
|
switch {
|
||||||
|
case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
|
||||||
|
return false, false
|
||||||
|
case fd.IsWeak():
|
||||||
|
return false, false
|
||||||
|
case fd.IsMap():
|
||||||
|
return false, false
|
||||||
|
case fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind:
|
||||||
|
return hasLazyField, hasLazyField
|
||||||
|
default:
|
||||||
|
return usesPresenceArray || (hasLazyField && fd.HasPresence()), false
|
||||||
|
}
|
||||||
|
}
|
132
vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go
generated
vendored
Normal file
132
vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go
generated
vendored
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
// Copyright 2018 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Code generated by generate-types. DO NOT EDIT.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getterForOpaqueNullableScalar(mi *MessageInfo, index uint32, fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
|
||||||
|
ft := fs.Type
|
||||||
|
if ft.Kind() == reflect.Ptr {
|
||||||
|
ft = ft.Elem()
|
||||||
|
}
|
||||||
|
if fd.Kind() == protoreflect.EnumKind {
|
||||||
|
// Enums for nullable opaque types.
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch ft.Kind() {
|
||||||
|
case reflect.Bool:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bool()
|
||||||
|
return protoreflect.ValueOfBool(*x)
|
||||||
|
}
|
||||||
|
case reflect.Int32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Int32()
|
||||||
|
return protoreflect.ValueOfInt32(*x)
|
||||||
|
}
|
||||||
|
case reflect.Uint32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Uint32()
|
||||||
|
return protoreflect.ValueOfUint32(*x)
|
||||||
|
}
|
||||||
|
case reflect.Int64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Int64()
|
||||||
|
return protoreflect.ValueOfInt64(*x)
|
||||||
|
}
|
||||||
|
case reflect.Uint64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Uint64()
|
||||||
|
return protoreflect.ValueOfUint64(*x)
|
||||||
|
}
|
||||||
|
case reflect.Float32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Float32()
|
||||||
|
return protoreflect.ValueOfFloat32(*x)
|
||||||
|
}
|
||||||
|
case reflect.Float64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Float64()
|
||||||
|
return protoreflect.ValueOfFloat64(*x)
|
||||||
|
}
|
||||||
|
case reflect.String:
|
||||||
|
if fd.Kind() == protoreflect.BytesKind {
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).StringPtr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
if len(**x) == 0 {
|
||||||
|
return protoreflect.ValueOfBytes(nil)
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfBytes([]byte(**x))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).StringPtr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfString(**x)
|
||||||
|
}
|
||||||
|
case reflect.Slice:
|
||||||
|
if fd.Kind() == protoreflect.StringKind {
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bytes()
|
||||||
|
return protoreflect.ValueOfString(string(*x))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() || !mi.present(p, index) {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bytes()
|
||||||
|
return protoreflect.ValueOfBytes(*x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic("unexpected protobuf kind: " + ft.Kind().String())
|
||||||
|
}
|
5
vendor/google.golang.org/protobuf/internal/impl/message_reflect.go
generated
vendored
5
vendor/google.golang.org/protobuf/internal/impl/message_reflect.go
generated
vendored
@ -205,6 +205,11 @@ func (mi *MessageInfo) makeFieldTypes(si structInfo) {
|
|||||||
case fd.IsList():
|
case fd.IsList():
|
||||||
if fd.Enum() != nil || fd.Message() != nil {
|
if fd.Enum() != nil || fd.Message() != nil {
|
||||||
ft = fs.Type.Elem()
|
ft = fs.Type.Elem()
|
||||||
|
|
||||||
|
if ft.Kind() == reflect.Slice {
|
||||||
|
ft = ft.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
isMessage = fd.Message() != nil
|
isMessage = fd.Message() != nil
|
||||||
case fd.Enum() != nil:
|
case fd.Enum() != nil:
|
||||||
|
32
vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go
generated
vendored
32
vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go
generated
vendored
@ -256,6 +256,7 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
|
|||||||
ft := fs.Type
|
ft := fs.Type
|
||||||
nullable := fd.HasPresence()
|
nullable := fd.HasPresence()
|
||||||
isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8
|
isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8
|
||||||
|
var getter func(p pointer) protoreflect.Value
|
||||||
if nullable {
|
if nullable {
|
||||||
if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {
|
if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {
|
||||||
// This never occurs for generated message types.
|
// This never occurs for generated message types.
|
||||||
@ -268,19 +269,25 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
conv := NewConverter(ft, fd)
|
conv := NewConverter(ft, fd)
|
||||||
|
|
||||||
// TODO: Implement unsafe fast path?
|
|
||||||
fieldOffset := offsetOf(fs, x)
|
fieldOffset := offsetOf(fs, x)
|
||||||
|
|
||||||
|
// Generate specialized getter functions to avoid going through reflect.Value
|
||||||
|
if nullable {
|
||||||
|
getter = getterForNullableScalar(fd, fs, conv, fieldOffset)
|
||||||
|
} else {
|
||||||
|
getter = getterForDirectScalar(fd, fs, conv, fieldOffset)
|
||||||
|
}
|
||||||
|
|
||||||
return fieldInfo{
|
return fieldInfo{
|
||||||
fieldDesc: fd,
|
fieldDesc: fd,
|
||||||
has: func(p pointer) bool {
|
has: func(p pointer) bool {
|
||||||
if p.IsNil() {
|
if p.IsNil() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
|
||||||
if nullable {
|
if nullable {
|
||||||
return !rv.IsNil()
|
return !p.Apply(fieldOffset).Elem().IsNil()
|
||||||
}
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
switch rv.Kind() {
|
switch rv.Kind() {
|
||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
return rv.Bool()
|
return rv.Bool()
|
||||||
@ -300,21 +307,8 @@ func fieldInfoForScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField,
|
|||||||
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
rv.Set(reflect.Zero(rv.Type()))
|
rv.Set(reflect.Zero(rv.Type()))
|
||||||
},
|
},
|
||||||
get: func(p pointer) protoreflect.Value {
|
get: getter,
|
||||||
if p.IsNil() {
|
// TODO: Implement unsafe fast path for set?
|
||||||
return conv.Zero()
|
|
||||||
}
|
|
||||||
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
|
||||||
if nullable {
|
|
||||||
if rv.IsNil() {
|
|
||||||
return conv.Zero()
|
|
||||||
}
|
|
||||||
if rv.Kind() == reflect.Ptr {
|
|
||||||
rv = rv.Elem()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return conv.PBValueOf(rv)
|
|
||||||
},
|
|
||||||
set: func(p pointer, v protoreflect.Value) {
|
set: func(p pointer, v protoreflect.Value) {
|
||||||
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
if nullable && rv.Kind() == reflect.Ptr {
|
if nullable && rv.Kind() == reflect.Ptr {
|
||||||
|
273
vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go
generated
vendored
Normal file
273
vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go
generated
vendored
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
// Copyright 2018 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Code generated by generate-types. DO NOT EDIT.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getterForNullableScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
|
||||||
|
ft := fs.Type
|
||||||
|
if ft.Kind() == reflect.Ptr {
|
||||||
|
ft = ft.Elem()
|
||||||
|
}
|
||||||
|
if fd.Kind() == protoreflect.EnumKind {
|
||||||
|
elemType := fs.Type.Elem()
|
||||||
|
// Enums for nullable types.
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).Elem().AsValueOf(elemType)
|
||||||
|
if rv.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return conv.PBValueOf(rv.Elem())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch ft.Kind() {
|
||||||
|
case reflect.Bool:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).BoolPtr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfBool(**x)
|
||||||
|
}
|
||||||
|
case reflect.Int32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Int32Ptr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfInt32(**x)
|
||||||
|
}
|
||||||
|
case reflect.Uint32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Uint32Ptr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfUint32(**x)
|
||||||
|
}
|
||||||
|
case reflect.Int64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Int64Ptr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfInt64(**x)
|
||||||
|
}
|
||||||
|
case reflect.Uint64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Uint64Ptr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfUint64(**x)
|
||||||
|
}
|
||||||
|
case reflect.Float32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Float32Ptr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfFloat32(**x)
|
||||||
|
}
|
||||||
|
case reflect.Float64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Float64Ptr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfFloat64(**x)
|
||||||
|
}
|
||||||
|
case reflect.String:
|
||||||
|
if fd.Kind() == protoreflect.BytesKind {
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).StringPtr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
if len(**x) == 0 {
|
||||||
|
return protoreflect.ValueOfBytes(nil)
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfBytes([]byte(**x))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).StringPtr()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfString(**x)
|
||||||
|
}
|
||||||
|
case reflect.Slice:
|
||||||
|
if fd.Kind() == protoreflect.StringKind {
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bytes()
|
||||||
|
if len(*x) == 0 {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfString(string(*x))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bytes()
|
||||||
|
if *x == nil {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfBytes(*x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic("unexpected protobuf kind: " + ft.Kind().String())
|
||||||
|
}
|
||||||
|
|
||||||
|
func getterForDirectScalar(fd protoreflect.FieldDescriptor, fs reflect.StructField, conv Converter, fieldOffset offset) func(p pointer) protoreflect.Value {
|
||||||
|
ft := fs.Type
|
||||||
|
if fd.Kind() == protoreflect.EnumKind {
|
||||||
|
// Enums for non nullable types.
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
|
||||||
|
return conv.PBValueOf(rv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch ft.Kind() {
|
||||||
|
case reflect.Bool:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bool()
|
||||||
|
return protoreflect.ValueOfBool(*x)
|
||||||
|
}
|
||||||
|
case reflect.Int32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Int32()
|
||||||
|
return protoreflect.ValueOfInt32(*x)
|
||||||
|
}
|
||||||
|
case reflect.Uint32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Uint32()
|
||||||
|
return protoreflect.ValueOfUint32(*x)
|
||||||
|
}
|
||||||
|
case reflect.Int64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Int64()
|
||||||
|
return protoreflect.ValueOfInt64(*x)
|
||||||
|
}
|
||||||
|
case reflect.Uint64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Uint64()
|
||||||
|
return protoreflect.ValueOfUint64(*x)
|
||||||
|
}
|
||||||
|
case reflect.Float32:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Float32()
|
||||||
|
return protoreflect.ValueOfFloat32(*x)
|
||||||
|
}
|
||||||
|
case reflect.Float64:
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Float64()
|
||||||
|
return protoreflect.ValueOfFloat64(*x)
|
||||||
|
}
|
||||||
|
case reflect.String:
|
||||||
|
if fd.Kind() == protoreflect.BytesKind {
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).String()
|
||||||
|
if len(*x) == 0 {
|
||||||
|
return protoreflect.ValueOfBytes(nil)
|
||||||
|
}
|
||||||
|
return protoreflect.ValueOfBytes([]byte(*x))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).String()
|
||||||
|
return protoreflect.ValueOfString(*x)
|
||||||
|
}
|
||||||
|
case reflect.Slice:
|
||||||
|
if fd.Kind() == protoreflect.StringKind {
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bytes()
|
||||||
|
return protoreflect.ValueOfString(string(*x))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return func(p pointer) protoreflect.Value {
|
||||||
|
if p.IsNil() {
|
||||||
|
return conv.Zero()
|
||||||
|
}
|
||||||
|
x := p.Apply(fieldOffset).Bytes()
|
||||||
|
return protoreflect.ValueOfBytes(*x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic("unexpected protobuf kind: " + ft.Kind().String())
|
||||||
|
}
|
9
vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go
generated
vendored
9
vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go
generated
vendored
@ -8,6 +8,8 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/internal/protolazy"
|
||||||
)
|
)
|
||||||
|
|
||||||
const UnsafeEnabled = true
|
const UnsafeEnabled = true
|
||||||
@ -111,6 +113,13 @@ func (p pointer) BytesPtr() **[]byte { return (**[]byte)(p.p)
|
|||||||
func (p pointer) BytesSlice() *[][]byte { return (*[][]byte)(p.p) }
|
func (p pointer) BytesSlice() *[][]byte { return (*[][]byte)(p.p) }
|
||||||
func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.p) }
|
func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.p) }
|
||||||
func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }
|
func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }
|
||||||
|
func (p pointer) LazyInfoPtr() **protolazy.XXX_lazyUnmarshalInfo {
|
||||||
|
return (**protolazy.XXX_lazyUnmarshalInfo)(p.p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p pointer) PresenceInfo() presence {
|
||||||
|
return presence{P: p.p}
|
||||||
|
}
|
||||||
|
|
||||||
func (p pointer) Elem() pointer {
|
func (p pointer) Elem() pointer {
|
||||||
return pointer{p: *(*unsafe.Pointer)(p.p)}
|
return pointer{p: *(*unsafe.Pointer)(p.p)}
|
||||||
|
42
vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go
generated
vendored
Normal file
42
vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync/atomic"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (p pointer) AtomicGetPointer() pointer {
|
||||||
|
return pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p pointer) AtomicSetPointer(v pointer) {
|
||||||
|
atomic.StorePointer((*unsafe.Pointer)(p.p), v.p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p pointer) AtomicSetNilPointer() {
|
||||||
|
atomic.StorePointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p pointer) AtomicSetPointerIfNil(v pointer) pointer {
|
||||||
|
if atomic.CompareAndSwapPointer((*unsafe.Pointer)(p.p), unsafe.Pointer(nil), v.p) {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
return pointer{p: atomic.LoadPointer((*unsafe.Pointer)(p.p))}
|
||||||
|
}
|
||||||
|
|
||||||
|
type atomicV1MessageInfo struct{ p Pointer }
|
||||||
|
|
||||||
|
func (mi *atomicV1MessageInfo) Get() Pointer {
|
||||||
|
return Pointer(atomic.LoadPointer((*unsafe.Pointer)(&mi.p)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mi *atomicV1MessageInfo) SetIfNil(p Pointer) Pointer {
|
||||||
|
if atomic.CompareAndSwapPointer((*unsafe.Pointer)(&mi.p), nil, unsafe.Pointer(p)) {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
return mi.Get()
|
||||||
|
}
|
142
vendor/google.golang.org/protobuf/internal/impl/presence.go
generated
vendored
Normal file
142
vendor/google.golang.org/protobuf/internal/impl/presence.go
generated
vendored
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package impl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync/atomic"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// presenceSize represents the size of a presence set, which should be the largest index of the set+1
|
||||||
|
type presenceSize uint32
|
||||||
|
|
||||||
|
// presence is the internal representation of the bitmap array in a generated protobuf
|
||||||
|
type presence struct {
|
||||||
|
// This is a pointer to the beginning of an array of uint32
|
||||||
|
P unsafe.Pointer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p presence) toElem(num uint32) (ret *uint32) {
|
||||||
|
const (
|
||||||
|
bitsPerByte = 8
|
||||||
|
siz = unsafe.Sizeof(*ret)
|
||||||
|
)
|
||||||
|
// p.P points to an array of uint32, num is the bit in this array that the
|
||||||
|
// caller wants to check/manipulate. Calculate the index in the array that
|
||||||
|
// contains this specific bit. E.g.: 76 / 32 = 2 (integer division).
|
||||||
|
offset := uintptr(num) / (siz * bitsPerByte) * siz
|
||||||
|
return (*uint32)(unsafe.Pointer(uintptr(p.P) + offset))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Present checks for the presence of a specific field number in a presence set.
|
||||||
|
func (p presence) Present(num uint32) bool {
|
||||||
|
if p.P == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return Export{}.Present(p.toElem(num), num)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPresent adds presence for a specific field number in a presence set.
|
||||||
|
func (p presence) SetPresent(num uint32, size presenceSize) {
|
||||||
|
Export{}.SetPresent(p.toElem(num), num, uint32(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPresentUnatomic adds presence for a specific field number in a presence set without using
|
||||||
|
// atomic operations. Only to be called during unmarshaling.
|
||||||
|
func (p presence) SetPresentUnatomic(num uint32, size presenceSize) {
|
||||||
|
Export{}.SetPresentNonAtomic(p.toElem(num), num, uint32(size))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClearPresent removes presence for a specific field number in a presence set.
|
||||||
|
func (p presence) ClearPresent(num uint32) {
|
||||||
|
Export{}.ClearPresent(p.toElem(num), num)
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoadPresenceCache (together with PresentInCache) allows for a
|
||||||
|
// cached version of checking for presence without re-reading the word
|
||||||
|
// for every field. It is optimized for efficiency and assumes no
|
||||||
|
// simltaneous mutation of the presence set (or at least does not have
|
||||||
|
// a problem with simultaneous mutation giving inconsistent results).
|
||||||
|
func (p presence) LoadPresenceCache() (current uint32) {
|
||||||
|
if p.P == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return atomic.LoadUint32((*uint32)(p.P))
|
||||||
|
}
|
||||||
|
|
||||||
|
// PresentInCache reads presence from a cached word in the presence
|
||||||
|
// bitmap. It caches up a new word if the bit is outside the
|
||||||
|
// word. This is for really fast iteration through bitmaps in cases
|
||||||
|
// where we either know that the bitmap will not be altered, or we
|
||||||
|
// don't care about inconsistencies caused by simultaneous writes.
|
||||||
|
func (p presence) PresentInCache(num uint32, cachedElement *uint32, current *uint32) bool {
|
||||||
|
if num/32 != *cachedElement {
|
||||||
|
o := uintptr(num/32) * unsafe.Sizeof(uint32(0))
|
||||||
|
q := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))
|
||||||
|
*current = atomic.LoadUint32(q)
|
||||||
|
*cachedElement = num / 32
|
||||||
|
}
|
||||||
|
return (*current & (1 << (num % 32))) > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// AnyPresent checks if any field is marked as present in the bitmap.
|
||||||
|
func (p presence) AnyPresent(size presenceSize) bool {
|
||||||
|
n := uintptr((size + 31) / 32)
|
||||||
|
for j := uintptr(0); j < n; j++ {
|
||||||
|
o := j * unsafe.Sizeof(uint32(0))
|
||||||
|
q := (*uint32)(unsafe.Pointer(uintptr(p.P) + o))
|
||||||
|
b := atomic.LoadUint32(q)
|
||||||
|
if b > 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// toRaceDetectData finds the preceding RaceDetectHookData in a
|
||||||
|
// message by using pointer arithmetic. As the type of the presence
|
||||||
|
// set (bitmap) varies with the number of fields in the protobuf, we
|
||||||
|
// can not have a struct type containing the array and the
|
||||||
|
// RaceDetectHookData. instead the RaceDetectHookData is placed
|
||||||
|
// immediately before the bitmap array, and we find it by walking
|
||||||
|
// backwards in the struct.
|
||||||
|
//
|
||||||
|
// This method is only called from the race-detect version of the code,
|
||||||
|
// so RaceDetectHookData is never an empty struct.
|
||||||
|
func (p presence) toRaceDetectData() *RaceDetectHookData {
|
||||||
|
var template struct {
|
||||||
|
d RaceDetectHookData
|
||||||
|
a [1]uint32
|
||||||
|
}
|
||||||
|
o := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d)))
|
||||||
|
return (*RaceDetectHookData)(unsafe.Pointer(uintptr(p.P) - o))
|
||||||
|
}
|
||||||
|
|
||||||
|
func atomicLoadShadowPresence(p **[]byte) *[]byte {
|
||||||
|
return (*[]byte)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
|
||||||
|
}
|
||||||
|
func atomicStoreShadowPresence(p **[]byte, v *[]byte) {
|
||||||
|
atomic.CompareAndSwapPointer((*unsafe.Pointer)(unsafe.Pointer(p)), nil, unsafe.Pointer(v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// findPointerToRaceDetectData finds the preceding RaceDetectHookData
|
||||||
|
// in a message by using pointer arithmetic. For the methods called
|
||||||
|
// directy from generated code, we don't have a pointer to the
|
||||||
|
// beginning of the presence set, but a pointer inside the array. As
|
||||||
|
// we know the index of the bit we're manipulating (num), we can
|
||||||
|
// calculate which element of the array ptr is pointing to. With that
|
||||||
|
// information we find the preceding RaceDetectHookData and can
|
||||||
|
// manipulate the shadow bitmap.
|
||||||
|
//
|
||||||
|
// This method is only called from the race-detect version of the
|
||||||
|
// code, so RaceDetectHookData is never an empty struct.
|
||||||
|
func findPointerToRaceDetectData(ptr *uint32, num uint32) *RaceDetectHookData {
|
||||||
|
var template struct {
|
||||||
|
d RaceDetectHookData
|
||||||
|
a [1]uint32
|
||||||
|
}
|
||||||
|
o := (uintptr(unsafe.Pointer(&template.a)) - uintptr(unsafe.Pointer(&template.d))) + uintptr(num/32)*unsafe.Sizeof(uint32(0))
|
||||||
|
return (*RaceDetectHookData)(unsafe.Pointer(uintptr(unsafe.Pointer(ptr)) - o))
|
||||||
|
}
|
16
vendor/google.golang.org/protobuf/internal/impl/validate.go
generated
vendored
16
vendor/google.golang.org/protobuf/internal/impl/validate.go
generated
vendored
@ -37,6 +37,10 @@ const (
|
|||||||
|
|
||||||
// ValidationValid indicates that unmarshaling the message will succeed.
|
// ValidationValid indicates that unmarshaling the message will succeed.
|
||||||
ValidationValid
|
ValidationValid
|
||||||
|
|
||||||
|
// ValidationWrongWireType indicates that a validated field does not have
|
||||||
|
// the expected wire type.
|
||||||
|
ValidationWrongWireType
|
||||||
)
|
)
|
||||||
|
|
||||||
func (v ValidationStatus) String() string {
|
func (v ValidationStatus) String() string {
|
||||||
@ -149,11 +153,23 @@ func newValidationInfo(fd protoreflect.FieldDescriptor, ft reflect.Type) validat
|
|||||||
switch fd.Kind() {
|
switch fd.Kind() {
|
||||||
case protoreflect.MessageKind:
|
case protoreflect.MessageKind:
|
||||||
vi.typ = validationTypeMessage
|
vi.typ = validationTypeMessage
|
||||||
|
|
||||||
|
if ft.Kind() == reflect.Ptr {
|
||||||
|
// Repeated opaque message fields are *[]*T.
|
||||||
|
ft = ft.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
if ft.Kind() == reflect.Slice {
|
if ft.Kind() == reflect.Slice {
|
||||||
vi.mi = getMessageInfo(ft.Elem())
|
vi.mi = getMessageInfo(ft.Elem())
|
||||||
}
|
}
|
||||||
case protoreflect.GroupKind:
|
case protoreflect.GroupKind:
|
||||||
vi.typ = validationTypeGroup
|
vi.typ = validationTypeGroup
|
||||||
|
|
||||||
|
if ft.Kind() == reflect.Ptr {
|
||||||
|
// Repeated opaque message fields are *[]*T.
|
||||||
|
ft = ft.Elem()
|
||||||
|
}
|
||||||
|
|
||||||
if ft.Kind() == reflect.Slice {
|
if ft.Kind() == reflect.Slice {
|
||||||
vi.mi = getMessageInfo(ft.Elem())
|
vi.mi = getMessageInfo(ft.Elem())
|
||||||
}
|
}
|
||||||
|
364
vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go
generated
vendored
Normal file
364
vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go
generated
vendored
Normal file
@ -0,0 +1,364 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Helper code for parsing a protocol buffer
|
||||||
|
|
||||||
|
package protolazy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BufferReader is a structure encapsulating a protobuf and a current position
|
||||||
|
type BufferReader struct {
|
||||||
|
Buf []byte
|
||||||
|
Pos int
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewBufferReader creates a new BufferRead from a protobuf
|
||||||
|
func NewBufferReader(buf []byte) BufferReader {
|
||||||
|
return BufferReader{Buf: buf, Pos: 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
var errOutOfBounds = errors.New("protobuf decoding: out of bounds")
|
||||||
|
var errOverflow = errors.New("proto: integer overflow")
|
||||||
|
|
||||||
|
func (b *BufferReader) DecodeVarintSlow() (x uint64, err error) {
|
||||||
|
i := b.Pos
|
||||||
|
l := len(b.Buf)
|
||||||
|
|
||||||
|
for shift := uint(0); shift < 64; shift += 7 {
|
||||||
|
if i >= l {
|
||||||
|
err = io.ErrUnexpectedEOF
|
||||||
|
return
|
||||||
|
}
|
||||||
|
v := b.Buf[i]
|
||||||
|
i++
|
||||||
|
x |= (uint64(v) & 0x7F) << shift
|
||||||
|
if v < 0x80 {
|
||||||
|
b.Pos = i
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The number is too large to represent in a 64-bit value.
|
||||||
|
err = errOverflow
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// decodeVarint decodes a varint at the current position
|
||||||
|
func (b *BufferReader) DecodeVarint() (x uint64, err error) {
|
||||||
|
i := b.Pos
|
||||||
|
buf := b.Buf
|
||||||
|
|
||||||
|
if i >= len(buf) {
|
||||||
|
return 0, io.ErrUnexpectedEOF
|
||||||
|
} else if buf[i] < 0x80 {
|
||||||
|
b.Pos++
|
||||||
|
return uint64(buf[i]), nil
|
||||||
|
} else if len(buf)-i < 10 {
|
||||||
|
return b.DecodeVarintSlow()
|
||||||
|
}
|
||||||
|
|
||||||
|
var v uint64
|
||||||
|
// we already checked the first byte
|
||||||
|
x = uint64(buf[i]) & 127
|
||||||
|
i++
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 7
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 14
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 21
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 28
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 35
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 42
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 49
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 56
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint64(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 63
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0, errOverflow
|
||||||
|
|
||||||
|
done:
|
||||||
|
b.Pos = i
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// decodeVarint32 decodes a varint32 at the current position
|
||||||
|
func (b *BufferReader) DecodeVarint32() (x uint32, err error) {
|
||||||
|
i := b.Pos
|
||||||
|
buf := b.Buf
|
||||||
|
|
||||||
|
if i >= len(buf) {
|
||||||
|
return 0, io.ErrUnexpectedEOF
|
||||||
|
} else if buf[i] < 0x80 {
|
||||||
|
b.Pos++
|
||||||
|
return uint32(buf[i]), nil
|
||||||
|
} else if len(buf)-i < 5 {
|
||||||
|
v, err := b.DecodeVarintSlow()
|
||||||
|
return uint32(v), err
|
||||||
|
}
|
||||||
|
|
||||||
|
var v uint32
|
||||||
|
// we already checked the first byte
|
||||||
|
x = uint32(buf[i]) & 127
|
||||||
|
i++
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 7
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 14
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 21
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
x |= (v & 127) << 28
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0, errOverflow
|
||||||
|
|
||||||
|
done:
|
||||||
|
b.Pos = i
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// skipValue skips a value in the protobuf, based on the specified tag
|
||||||
|
func (b *BufferReader) SkipValue(tag uint32) (err error) {
|
||||||
|
wireType := tag & 0x7
|
||||||
|
switch protowire.Type(wireType) {
|
||||||
|
case protowire.VarintType:
|
||||||
|
err = b.SkipVarint()
|
||||||
|
case protowire.Fixed64Type:
|
||||||
|
err = b.SkipFixed64()
|
||||||
|
case protowire.BytesType:
|
||||||
|
var n uint32
|
||||||
|
n, err = b.DecodeVarint32()
|
||||||
|
if err == nil {
|
||||||
|
err = b.Skip(int(n))
|
||||||
|
}
|
||||||
|
case protowire.StartGroupType:
|
||||||
|
err = b.SkipGroup(tag)
|
||||||
|
case protowire.Fixed32Type:
|
||||||
|
err = b.SkipFixed32()
|
||||||
|
default:
|
||||||
|
err = fmt.Errorf("Unexpected wire type (%d)", wireType)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// skipGroup skips a group with the specified tag. It executes efficiently using a tag stack
|
||||||
|
func (b *BufferReader) SkipGroup(tag uint32) (err error) {
|
||||||
|
tagStack := make([]uint32, 0, 16)
|
||||||
|
tagStack = append(tagStack, tag)
|
||||||
|
var n uint32
|
||||||
|
for len(tagStack) > 0 {
|
||||||
|
tag, err = b.DecodeVarint32()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch protowire.Type(tag & 0x7) {
|
||||||
|
case protowire.VarintType:
|
||||||
|
err = b.SkipVarint()
|
||||||
|
case protowire.Fixed64Type:
|
||||||
|
err = b.Skip(8)
|
||||||
|
case protowire.BytesType:
|
||||||
|
n, err = b.DecodeVarint32()
|
||||||
|
if err == nil {
|
||||||
|
err = b.Skip(int(n))
|
||||||
|
}
|
||||||
|
case protowire.StartGroupType:
|
||||||
|
tagStack = append(tagStack, tag)
|
||||||
|
case protowire.Fixed32Type:
|
||||||
|
err = b.SkipFixed32()
|
||||||
|
case protowire.EndGroupType:
|
||||||
|
if protoFieldNumber(tagStack[len(tagStack)-1]) == protoFieldNumber(tag) {
|
||||||
|
tagStack = tagStack[:len(tagStack)-1]
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("end group tag %d does not match begin group tag %d at pos %d",
|
||||||
|
protoFieldNumber(tag), protoFieldNumber(tagStack[len(tagStack)-1]), b.Pos)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// skipVarint effiently skips a varint
|
||||||
|
func (b *BufferReader) SkipVarint() (err error) {
|
||||||
|
i := b.Pos
|
||||||
|
|
||||||
|
if len(b.Buf)-i < 10 {
|
||||||
|
// Use DecodeVarintSlow() to check for buffer overflow, but ignore result
|
||||||
|
if _, err := b.DecodeVarintSlow(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if b.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
return errOverflow
|
||||||
|
|
||||||
|
out:
|
||||||
|
b.Pos = i + 1
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// skip skips the specified number of bytes
|
||||||
|
func (b *BufferReader) Skip(n int) (err error) {
|
||||||
|
if len(b.Buf) < b.Pos+n {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b.Pos += n
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// skipFixed64 skips a fixed64
|
||||||
|
func (b *BufferReader) SkipFixed64() (err error) {
|
||||||
|
return b.Skip(8)
|
||||||
|
}
|
||||||
|
|
||||||
|
// skipFixed32 skips a fixed32
|
||||||
|
func (b *BufferReader) SkipFixed32() (err error) {
|
||||||
|
return b.Skip(4)
|
||||||
|
}
|
||||||
|
|
||||||
|
// skipBytes skips a set of bytes
|
||||||
|
func (b *BufferReader) SkipBytes() (err error) {
|
||||||
|
n, err := b.DecodeVarint32()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return b.Skip(int(n))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Done returns whether we are at the end of the protobuf
|
||||||
|
func (b *BufferReader) Done() bool {
|
||||||
|
return b.Pos == len(b.Buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remaining returns how many bytes remain
|
||||||
|
func (b *BufferReader) Remaining() int {
|
||||||
|
return len(b.Buf) - b.Pos
|
||||||
|
}
|
359
vendor/google.golang.org/protobuf/internal/protolazy/lazy.go
generated
vendored
Normal file
359
vendor/google.golang.org/protobuf/internal/protolazy/lazy.go
generated
vendored
Normal file
@ -0,0 +1,359 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Package protolazy contains internal data structures for lazy message decoding.
|
||||||
|
package protolazy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
|
piface "google.golang.org/protobuf/runtime/protoiface"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IndexEntry is the structure for an index of the fields in a message of a
|
||||||
|
// proto (not descending to sub-messages)
|
||||||
|
type IndexEntry struct {
|
||||||
|
FieldNum uint32
|
||||||
|
// first byte of this tag/field
|
||||||
|
Start uint32
|
||||||
|
// first byte after a contiguous sequence of bytes for this tag/field, which could
|
||||||
|
// include a single encoding of the field, or multiple encodings for the field
|
||||||
|
End uint32
|
||||||
|
// True if this protobuf segment includes multiple encodings of the field
|
||||||
|
MultipleContiguous bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX_lazyUnmarshalInfo has information about a particular lazily decoded message
|
||||||
|
//
|
||||||
|
// Deprecated: Do not use. This will be deleted in the near future.
|
||||||
|
type XXX_lazyUnmarshalInfo struct {
|
||||||
|
// Index of fields and their positions in the protobuf for this
|
||||||
|
// message. Make index be a pointer to a slice so it can be updated
|
||||||
|
// atomically. The index pointer is only set once (lazily when/if
|
||||||
|
// the index is first needed), and must always be SET and LOADED
|
||||||
|
// ATOMICALLY.
|
||||||
|
index *[]IndexEntry
|
||||||
|
// The protobuf associated with this lazily decoded message. It is
|
||||||
|
// only set during proto.Unmarshal(). It doesn't need to be set and
|
||||||
|
// loaded atomically, since any simultaneous set (Unmarshal) and read
|
||||||
|
// (during a get) would already be a race in the app code.
|
||||||
|
Protobuf []byte
|
||||||
|
// The flags present when Unmarshal was originally called for this particular message
|
||||||
|
unmarshalFlags piface.UnmarshalInputFlags
|
||||||
|
}
|
||||||
|
|
||||||
|
// The Buffer and SetBuffer methods let v2/internal/impl interact with
|
||||||
|
// XXX_lazyUnmarshalInfo via an interface, to avoid an import cycle.
|
||||||
|
|
||||||
|
// Buffer returns the lazy unmarshal buffer.
|
||||||
|
//
|
||||||
|
// Deprecated: Do not use. This will be deleted in the near future.
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) Buffer() []byte {
|
||||||
|
return lazy.Protobuf
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBuffer sets the lazy unmarshal buffer.
|
||||||
|
//
|
||||||
|
// Deprecated: Do not use. This will be deleted in the near future.
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) SetBuffer(b []byte) {
|
||||||
|
lazy.Protobuf = b
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetUnmarshalFlags is called to set a copy of the original unmarshalInputFlags.
|
||||||
|
// The flags should reflect how Unmarshal was called.
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) SetUnmarshalFlags(f piface.UnmarshalInputFlags) {
|
||||||
|
lazy.unmarshalFlags = f
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalFlags returns the original unmarshalInputFlags.
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) UnmarshalFlags() piface.UnmarshalInputFlags {
|
||||||
|
return lazy.unmarshalFlags
|
||||||
|
}
|
||||||
|
|
||||||
|
// AllowedPartial returns true if the user originally unmarshalled this message with
|
||||||
|
// AllowPartial set to true
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) AllowedPartial() bool {
|
||||||
|
return (lazy.unmarshalFlags & piface.UnmarshalCheckRequired) == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func protoFieldNumber(tag uint32) uint32 {
|
||||||
|
return tag >> 3
|
||||||
|
}
|
||||||
|
|
||||||
|
// buildIndex builds an index of the specified protobuf, return the index
|
||||||
|
// array and an error.
|
||||||
|
func buildIndex(buf []byte) ([]IndexEntry, error) {
|
||||||
|
index := make([]IndexEntry, 0, 16)
|
||||||
|
var lastProtoFieldNum uint32
|
||||||
|
var outOfOrder bool
|
||||||
|
|
||||||
|
var r BufferReader = NewBufferReader(buf)
|
||||||
|
|
||||||
|
for !r.Done() {
|
||||||
|
var tag uint32
|
||||||
|
var err error
|
||||||
|
var curPos = r.Pos
|
||||||
|
// INLINED: tag, err = r.DecodeVarint32()
|
||||||
|
{
|
||||||
|
i := r.Pos
|
||||||
|
buf := r.Buf
|
||||||
|
|
||||||
|
if i >= len(buf) {
|
||||||
|
return nil, errOutOfBounds
|
||||||
|
} else if buf[i] < 0x80 {
|
||||||
|
r.Pos++
|
||||||
|
tag = uint32(buf[i])
|
||||||
|
} else if r.Remaining() < 5 {
|
||||||
|
var v uint64
|
||||||
|
v, err = r.DecodeVarintSlow()
|
||||||
|
tag = uint32(v)
|
||||||
|
} else {
|
||||||
|
var v uint32
|
||||||
|
// we already checked the first byte
|
||||||
|
tag = uint32(buf[i]) & 127
|
||||||
|
i++
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
tag |= (v & 127) << 7
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
tag |= (v & 127) << 14
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
tag |= (v & 127) << 21
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
v = uint32(buf[i])
|
||||||
|
i++
|
||||||
|
tag |= (v & 127) << 28
|
||||||
|
if v < 128 {
|
||||||
|
goto done
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, errOutOfBounds
|
||||||
|
|
||||||
|
done:
|
||||||
|
r.Pos = i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// DONE: tag, err = r.DecodeVarint32()
|
||||||
|
|
||||||
|
fieldNum := protoFieldNumber(tag)
|
||||||
|
if fieldNum < lastProtoFieldNum {
|
||||||
|
outOfOrder = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip the current value -- will skip over an entire group as well.
|
||||||
|
// INLINED: err = r.SkipValue(tag)
|
||||||
|
wireType := tag & 0x7
|
||||||
|
switch protowire.Type(wireType) {
|
||||||
|
case protowire.VarintType:
|
||||||
|
// INLINED: err = r.SkipVarint()
|
||||||
|
i := r.Pos
|
||||||
|
|
||||||
|
if len(r.Buf)-i < 10 {
|
||||||
|
// Use DecodeVarintSlow() to skip while
|
||||||
|
// checking for buffer overflow, but ignore result
|
||||||
|
_, err = r.DecodeVarintSlow()
|
||||||
|
goto out2
|
||||||
|
}
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
|
||||||
|
if r.Buf[i] < 0x80 {
|
||||||
|
goto out
|
||||||
|
}
|
||||||
|
return nil, errOverflow
|
||||||
|
out:
|
||||||
|
r.Pos = i + 1
|
||||||
|
// DONE: err = r.SkipVarint()
|
||||||
|
case protowire.Fixed64Type:
|
||||||
|
err = r.SkipFixed64()
|
||||||
|
case protowire.BytesType:
|
||||||
|
var n uint32
|
||||||
|
n, err = r.DecodeVarint32()
|
||||||
|
if err == nil {
|
||||||
|
err = r.Skip(int(n))
|
||||||
|
}
|
||||||
|
case protowire.StartGroupType:
|
||||||
|
err = r.SkipGroup(tag)
|
||||||
|
case protowire.Fixed32Type:
|
||||||
|
err = r.SkipFixed32()
|
||||||
|
default:
|
||||||
|
err = fmt.Errorf("Unexpected wire type (%d)", wireType)
|
||||||
|
}
|
||||||
|
// DONE: err = r.SkipValue(tag)
|
||||||
|
|
||||||
|
out2:
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if fieldNum != lastProtoFieldNum {
|
||||||
|
index = append(index, IndexEntry{FieldNum: fieldNum,
|
||||||
|
Start: uint32(curPos),
|
||||||
|
End: uint32(r.Pos)},
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
index[len(index)-1].End = uint32(r.Pos)
|
||||||
|
index[len(index)-1].MultipleContiguous = true
|
||||||
|
}
|
||||||
|
lastProtoFieldNum = fieldNum
|
||||||
|
}
|
||||||
|
if outOfOrder {
|
||||||
|
sort.Slice(index, func(i, j int) bool {
|
||||||
|
return index[i].FieldNum < index[j].FieldNum ||
|
||||||
|
(index[i].FieldNum == index[j].FieldNum &&
|
||||||
|
index[i].Start < index[j].Start)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return index, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) SizeField(num uint32) (size int) {
|
||||||
|
start, end, found, _, multipleEntries := lazy.FindFieldInProto(num)
|
||||||
|
if multipleEntries != nil {
|
||||||
|
for _, entry := range multipleEntries {
|
||||||
|
size += int(entry.End - entry.Start)
|
||||||
|
}
|
||||||
|
return size
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return int(end - start)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) AppendField(b []byte, num uint32) ([]byte, bool) {
|
||||||
|
start, end, found, _, multipleEntries := lazy.FindFieldInProto(num)
|
||||||
|
if multipleEntries != nil {
|
||||||
|
for _, entry := range multipleEntries {
|
||||||
|
b = append(b, lazy.Protobuf[entry.Start:entry.End]...)
|
||||||
|
}
|
||||||
|
return b, true
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
b = append(b, lazy.Protobuf[start:end]...)
|
||||||
|
return b, true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) SetIndex(index []IndexEntry) {
|
||||||
|
atomicStoreIndex(&lazy.index, &index)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindFieldInProto looks for field fieldNum in lazyUnmarshalInfo information
|
||||||
|
// (including protobuf), returns startOffset/endOffset/found.
|
||||||
|
func (lazy *XXX_lazyUnmarshalInfo) FindFieldInProto(fieldNum uint32) (start, end uint32, found, multipleContiguous bool, multipleEntries []IndexEntry) {
|
||||||
|
if lazy.Protobuf == nil {
|
||||||
|
// There is no backing protobuf for this message -- it was made from a builder
|
||||||
|
return 0, 0, false, false, nil
|
||||||
|
}
|
||||||
|
index := atomicLoadIndex(&lazy.index)
|
||||||
|
if index == nil {
|
||||||
|
r, err := buildIndex(lazy.Protobuf)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("findFieldInfo: error building index when looking for field %d: %v", fieldNum, err))
|
||||||
|
}
|
||||||
|
// lazy.index is a pointer to the slice returned by BuildIndex
|
||||||
|
index = &r
|
||||||
|
atomicStoreIndex(&lazy.index, index)
|
||||||
|
}
|
||||||
|
return lookupField(index, fieldNum)
|
||||||
|
}
|
||||||
|
|
||||||
|
// lookupField returns the offset at which the indicated field starts using
|
||||||
|
// the index, offset immediately after field ends (including all instances of
|
||||||
|
// a repeated field), and bools indicating if field was found and if there
|
||||||
|
// are multiple encodings of the field in the byte range.
|
||||||
|
//
|
||||||
|
// To hande the uncommon case where there are repeated encodings for the same
|
||||||
|
// field which are not consecutive in the protobuf (so we need to returns
|
||||||
|
// multiple start/end offsets), we also return a slice multipleEntries. If
|
||||||
|
// multipleEntries is non-nil, then multiple entries were found, and the
|
||||||
|
// values in the slice should be used, rather than start/end/found.
|
||||||
|
func lookupField(indexp *[]IndexEntry, fieldNum uint32) (start, end uint32, found bool, multipleContiguous bool, multipleEntries []IndexEntry) {
|
||||||
|
// The pointer indexp to the index was already loaded atomically.
|
||||||
|
// The slice is uniquely associated with the pointer, so it doesn't
|
||||||
|
// need to be loaded atomically.
|
||||||
|
index := *indexp
|
||||||
|
for i, entry := range index {
|
||||||
|
if fieldNum == entry.FieldNum {
|
||||||
|
if i < len(index)-1 && entry.FieldNum == index[i+1].FieldNum {
|
||||||
|
// Handle the uncommon case where there are
|
||||||
|
// repeated entries for the same field which
|
||||||
|
// are not contiguous in the protobuf.
|
||||||
|
multiple := make([]IndexEntry, 1, 2)
|
||||||
|
multiple[0] = IndexEntry{fieldNum, entry.Start, entry.End, entry.MultipleContiguous}
|
||||||
|
i++
|
||||||
|
for i < len(index) && index[i].FieldNum == fieldNum {
|
||||||
|
multiple = append(multiple, IndexEntry{fieldNum, index[i].Start, index[i].End, index[i].MultipleContiguous})
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
return 0, 0, false, false, multiple
|
||||||
|
|
||||||
|
}
|
||||||
|
return entry.Start, entry.End, true, entry.MultipleContiguous, nil
|
||||||
|
}
|
||||||
|
if fieldNum < entry.FieldNum {
|
||||||
|
return 0, 0, false, false, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0, 0, false, false, nil
|
||||||
|
}
|
17
vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go
generated
vendored
Normal file
17
vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package protolazy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync/atomic"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
func atomicLoadIndex(p **[]IndexEntry) *[]IndexEntry {
|
||||||
|
return (*[]IndexEntry)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
|
||||||
|
}
|
||||||
|
func atomicStoreIndex(p **[]IndexEntry, v *[]IndexEntry) {
|
||||||
|
atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
|
||||||
|
}
|
2
vendor/google.golang.org/protobuf/internal/version/version.go
generated
vendored
2
vendor/google.golang.org/protobuf/internal/version/version.go
generated
vendored
@ -51,7 +51,7 @@ import (
|
|||||||
// 10. Send out the CL for review and submit it.
|
// 10. Send out the CL for review and submit it.
|
||||||
const (
|
const (
|
||||||
Major = 1
|
Major = 1
|
||||||
Minor = 35
|
Minor = 36
|
||||||
Patch = 1
|
Patch = 1
|
||||||
PreRelease = ""
|
PreRelease = ""
|
||||||
)
|
)
|
||||||
|
16
vendor/google.golang.org/protobuf/proto/decode.go
generated
vendored
16
vendor/google.golang.org/protobuf/proto/decode.go
generated
vendored
@ -47,6 +47,12 @@ type UnmarshalOptions struct {
|
|||||||
// RecursionLimit limits how deeply messages may be nested.
|
// RecursionLimit limits how deeply messages may be nested.
|
||||||
// If zero, a default limit is applied.
|
// If zero, a default limit is applied.
|
||||||
RecursionLimit int
|
RecursionLimit int
|
||||||
|
|
||||||
|
//
|
||||||
|
// NoLazyDecoding turns off lazy decoding, which otherwise is enabled by
|
||||||
|
// default. Lazy decoding only affects submessages (annotated with [lazy =
|
||||||
|
// true] in the .proto file) within messages that use the Opaque API.
|
||||||
|
NoLazyDecoding bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unmarshal parses the wire-format message in b and places the result in m.
|
// Unmarshal parses the wire-format message in b and places the result in m.
|
||||||
@ -104,6 +110,16 @@ func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out proto
|
|||||||
if o.DiscardUnknown {
|
if o.DiscardUnknown {
|
||||||
in.Flags |= protoiface.UnmarshalDiscardUnknown
|
in.Flags |= protoiface.UnmarshalDiscardUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !allowPartial {
|
||||||
|
// This does not affect how current unmarshal functions work, it just allows them
|
||||||
|
// to record this for lazy the decoding case.
|
||||||
|
in.Flags |= protoiface.UnmarshalCheckRequired
|
||||||
|
}
|
||||||
|
if o.NoLazyDecoding {
|
||||||
|
in.Flags |= protoiface.UnmarshalNoLazyDecoding
|
||||||
|
}
|
||||||
|
|
||||||
out, err = methods.Unmarshal(in)
|
out, err = methods.Unmarshal(in)
|
||||||
} else {
|
} else {
|
||||||
o.RecursionLimit--
|
o.RecursionLimit--
|
||||||
|
3
vendor/google.golang.org/protobuf/proto/encode.go
generated
vendored
3
vendor/google.golang.org/protobuf/proto/encode.go
generated
vendored
@ -63,7 +63,8 @@ type MarshalOptions struct {
|
|||||||
// options (except for UseCachedSize itself).
|
// options (except for UseCachedSize itself).
|
||||||
//
|
//
|
||||||
// 2. The message and all its submessages have not changed in any
|
// 2. The message and all its submessages have not changed in any
|
||||||
// way since the Size call.
|
// way since the Size call. For lazily decoded messages, accessing
|
||||||
|
// a message results in decoding the message, which is a change.
|
||||||
//
|
//
|
||||||
// If either of these invariants is violated,
|
// If either of these invariants is violated,
|
||||||
// the results are undefined and may include panics or corrupted output.
|
// the results are undefined and may include panics or corrupted output.
|
||||||
|
8
vendor/google.golang.org/protobuf/proto/size.go
generated
vendored
8
vendor/google.golang.org/protobuf/proto/size.go
generated
vendored
@ -12,11 +12,19 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Size returns the size in bytes of the wire-format encoding of m.
|
// Size returns the size in bytes of the wire-format encoding of m.
|
||||||
|
//
|
||||||
|
// Note that Size might return more bytes than Marshal will write in the case of
|
||||||
|
// lazily decoded messages that arrive in non-minimal wire format: see
|
||||||
|
// https://protobuf.dev/reference/go/size/ for more details.
|
||||||
func Size(m Message) int {
|
func Size(m Message) int {
|
||||||
return MarshalOptions{}.Size(m)
|
return MarshalOptions{}.Size(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Size returns the size in bytes of the wire-format encoding of m.
|
// Size returns the size in bytes of the wire-format encoding of m.
|
||||||
|
//
|
||||||
|
// Note that Size might return more bytes than Marshal will write in the case of
|
||||||
|
// lazily decoded messages that arrive in non-minimal wire format: see
|
||||||
|
// https://protobuf.dev/reference/go/size/ for more details.
|
||||||
func (o MarshalOptions) Size(m Message) int {
|
func (o MarshalOptions) Size(m Message) int {
|
||||||
// Treat a nil message interface as an empty message; nothing to output.
|
// Treat a nil message interface as an empty message; nothing to output.
|
||||||
if m == nil {
|
if m == nil {
|
||||||
|
80
vendor/google.golang.org/protobuf/proto/wrapperopaque.go
generated
vendored
Normal file
80
vendor/google.golang.org/protobuf/proto/wrapperopaque.go
generated
vendored
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
// Copyright 2024 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package proto
|
||||||
|
|
||||||
|
// ValueOrNil returns nil if has is false, or a pointer to a new variable
|
||||||
|
// containing the value returned by the specified getter.
|
||||||
|
//
|
||||||
|
// This function is similar to the wrappers (proto.Int32(), proto.String(),
|
||||||
|
// etc.), but is generic (works for any field type) and works with the hasser
|
||||||
|
// and getter of a field, as opposed to a value.
|
||||||
|
//
|
||||||
|
// This is convenient when populating builder fields.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
//
|
||||||
|
// hop := attr.GetDirectHop()
|
||||||
|
// injectedRoute := ripb.InjectedRoute_builder{
|
||||||
|
// Prefixes: route.GetPrefixes(),
|
||||||
|
// NextHop: proto.ValueOrNil(hop.HasAddress(), hop.GetAddress),
|
||||||
|
// }
|
||||||
|
func ValueOrNil[T any](has bool, getter func() T) *T {
|
||||||
|
if !has {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
v := getter()
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValueOrDefault returns the protobuf message val if val is not nil, otherwise
|
||||||
|
// it returns a pointer to an empty val message.
|
||||||
|
//
|
||||||
|
// This function allows for translating code from the old Open Struct API to the
|
||||||
|
// new Opaque API.
|
||||||
|
//
|
||||||
|
// The old Open Struct API represented oneof fields with a wrapper struct:
|
||||||
|
//
|
||||||
|
// var signedImg *accountpb.SignedImage
|
||||||
|
// profile := &accountpb.Profile{
|
||||||
|
// // The Avatar oneof will be set, with an empty SignedImage.
|
||||||
|
// Avatar: &accountpb.Profile_SignedImage{signedImg},
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// The new Opaque API treats oneof fields like regular fields, there are no more
|
||||||
|
// wrapper structs:
|
||||||
|
//
|
||||||
|
// var signedImg *accountpb.SignedImage
|
||||||
|
// profile := &accountpb.Profile{}
|
||||||
|
// profile.SetSignedImage(signedImg)
|
||||||
|
//
|
||||||
|
// For convenience, the Opaque API also offers Builders, which allow for a
|
||||||
|
// direct translation of struct initialization. However, because Builders use
|
||||||
|
// nilness to represent field presence (but there is no non-nil wrapper struct
|
||||||
|
// anymore), Builders cannot distinguish between an unset oneof and a set oneof
|
||||||
|
// with nil message. The above code would need to be translated with help of the
|
||||||
|
// ValueOrDefault function to retain the same behavior:
|
||||||
|
//
|
||||||
|
// var signedImg *accountpb.SignedImage
|
||||||
|
// return &accountpb.Profile_builder{
|
||||||
|
// SignedImage: proto.ValueOrDefault(signedImg),
|
||||||
|
// }.Build()
|
||||||
|
func ValueOrDefault[T interface {
|
||||||
|
*P
|
||||||
|
Message
|
||||||
|
}, P any](val T) T {
|
||||||
|
if val == nil {
|
||||||
|
return T(new(P))
|
||||||
|
}
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValueOrDefaultBytes is like ValueOrDefault but for working with fields of
|
||||||
|
// type []byte.
|
||||||
|
func ValueOrDefaultBytes(val []byte) []byte {
|
||||||
|
if val == nil {
|
||||||
|
return []byte{}
|
||||||
|
}
|
||||||
|
return val
|
||||||
|
}
|
2
vendor/google.golang.org/protobuf/reflect/protoreflect/value.go
generated
vendored
2
vendor/google.golang.org/protobuf/reflect/protoreflect/value.go
generated
vendored
@ -152,7 +152,7 @@ type Message interface {
|
|||||||
// This method may return nil.
|
// This method may return nil.
|
||||||
//
|
//
|
||||||
// The returned methods type is identical to
|
// The returned methods type is identical to
|
||||||
// google.golang.org/protobuf/runtime/protoiface.Methods.
|
// [google.golang.org/protobuf/runtime/protoiface.Methods].
|
||||||
// Consult the protoiface package documentation for details.
|
// Consult the protoiface package documentation for details.
|
||||||
ProtoMethods() *methods
|
ProtoMethods() *methods
|
||||||
}
|
}
|
||||||
|
16
vendor/google.golang.org/protobuf/runtime/protoiface/methods.go
generated
vendored
16
vendor/google.golang.org/protobuf/runtime/protoiface/methods.go
generated
vendored
@ -122,6 +122,22 @@ type UnmarshalInputFlags = uint8
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota
|
UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota
|
||||||
|
|
||||||
|
// UnmarshalAliasBuffer permits unmarshal operations to alias the input buffer.
|
||||||
|
// The unmarshaller must not modify the contents of the buffer.
|
||||||
|
UnmarshalAliasBuffer
|
||||||
|
|
||||||
|
// UnmarshalValidated indicates that validation has already been
|
||||||
|
// performed on the input buffer.
|
||||||
|
UnmarshalValidated
|
||||||
|
|
||||||
|
// UnmarshalCheckRequired is set if this unmarshal operation ultimately will care if required fields are
|
||||||
|
// initialized.
|
||||||
|
UnmarshalCheckRequired
|
||||||
|
|
||||||
|
// UnmarshalNoLazyDecoding is set if this unmarshal operation should not use
|
||||||
|
// lazy decoding, even when otherwise available.
|
||||||
|
UnmarshalNoLazyDecoding
|
||||||
)
|
)
|
||||||
|
|
||||||
// UnmarshalOutputFlags are output from the Unmarshal method.
|
// UnmarshalOutputFlags are output from the Unmarshal method.
|
||||||
|
4
vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go
generated
vendored
4
vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go
generated
vendored
@ -15,6 +15,7 @@ import (
|
|||||||
"google.golang.org/protobuf/internal/filedesc"
|
"google.golang.org/protobuf/internal/filedesc"
|
||||||
"google.golang.org/protobuf/internal/filetype"
|
"google.golang.org/protobuf/internal/filetype"
|
||||||
"google.golang.org/protobuf/internal/impl"
|
"google.golang.org/protobuf/internal/impl"
|
||||||
|
"google.golang.org/protobuf/internal/protolazy"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UnsafeEnabled specifies whether package unsafe can be used.
|
// UnsafeEnabled specifies whether package unsafe can be used.
|
||||||
@ -39,6 +40,9 @@ type (
|
|||||||
ExtensionFieldV1 = impl.ExtensionField
|
ExtensionFieldV1 = impl.ExtensionField
|
||||||
|
|
||||||
Pointer = impl.Pointer
|
Pointer = impl.Pointer
|
||||||
|
|
||||||
|
LazyUnmarshalInfo = *protolazy.XXX_lazyUnmarshalInfo
|
||||||
|
RaceDetectHookData = impl.RaceDetectHookData
|
||||||
)
|
)
|
||||||
|
|
||||||
var X impl.Export
|
var X impl.Export
|
||||||
|
9
vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go
generated
vendored
9
vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go
generated
vendored
@ -210,10 +210,7 @@ import (
|
|||||||
// "value": "1.212s"
|
// "value": "1.212s"
|
||||||
// }
|
// }
|
||||||
type Any struct {
|
type Any struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
// A URL/resource name that uniquely identifies the type of the serialized
|
// A URL/resource name that uniquely identifies the type of the serialized
|
||||||
// protocol buffer message. This string must contain at least
|
// protocol buffer message. This string must contain at least
|
||||||
// one "/" character. The last segment of the URL's path must represent
|
// one "/" character. The last segment of the URL's path must represent
|
||||||
@ -244,7 +241,9 @@ type Any struct {
|
|||||||
// used with implementation specific semantics.
|
// used with implementation specific semantics.
|
||||||
TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
|
TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
|
||||||
// Must be a valid serialized protocol buffer of the above specified type.
|
// Must be a valid serialized protocol buffer of the above specified type.
|
||||||
Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
|
Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
}
|
}
|
||||||
|
|
||||||
// New marshals src into a new Any instance.
|
// New marshals src into a new Any instance.
|
||||||
|
22
vendor/modules.txt
vendored
22
vendor/modules.txt
vendored
@ -100,7 +100,7 @@ github.com/google/go-cmp/cmp/internal/diff
|
|||||||
github.com/google/go-cmp/cmp/internal/flags
|
github.com/google/go-cmp/cmp/internal/flags
|
||||||
github.com/google/go-cmp/cmp/internal/function
|
github.com/google/go-cmp/cmp/internal/function
|
||||||
github.com/google/go-cmp/cmp/internal/value
|
github.com/google/go-cmp/cmp/internal/value
|
||||||
# github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db
|
# github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad
|
||||||
## explicit; go 1.22
|
## explicit; go 1.22
|
||||||
github.com/google/pprof/profile
|
github.com/google/pprof/profile
|
||||||
# github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475
|
# github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475
|
||||||
@ -128,7 +128,7 @@ github.com/networkplumbing/go-nft/nft
|
|||||||
github.com/networkplumbing/go-nft/nft/config
|
github.com/networkplumbing/go-nft/nft/config
|
||||||
github.com/networkplumbing/go-nft/nft/exec
|
github.com/networkplumbing/go-nft/nft/exec
|
||||||
github.com/networkplumbing/go-nft/nft/schema
|
github.com/networkplumbing/go-nft/nft/schema
|
||||||
# github.com/onsi/ginkgo/v2 v2.22.0
|
# github.com/onsi/ginkgo/v2 v2.22.2
|
||||||
## explicit; go 1.22.0
|
## explicit; go 1.22.0
|
||||||
github.com/onsi/ginkgo/v2
|
github.com/onsi/ginkgo/v2
|
||||||
github.com/onsi/ginkgo/v2/config
|
github.com/onsi/ginkgo/v2/config
|
||||||
@ -150,8 +150,8 @@ github.com/onsi/ginkgo/v2/internal/parallel_support
|
|||||||
github.com/onsi/ginkgo/v2/internal/testingtproxy
|
github.com/onsi/ginkgo/v2/internal/testingtproxy
|
||||||
github.com/onsi/ginkgo/v2/reporters
|
github.com/onsi/ginkgo/v2/reporters
|
||||||
github.com/onsi/ginkgo/v2/types
|
github.com/onsi/ginkgo/v2/types
|
||||||
# github.com/onsi/gomega v1.36.0
|
# github.com/onsi/gomega v1.36.2
|
||||||
## explicit; go 1.22
|
## explicit; go 1.22.0
|
||||||
github.com/onsi/gomega
|
github.com/onsi/gomega
|
||||||
github.com/onsi/gomega/format
|
github.com/onsi/gomega/format
|
||||||
github.com/onsi/gomega/gbytes
|
github.com/onsi/gomega/gbytes
|
||||||
@ -203,22 +203,21 @@ go.opencensus.io/internal
|
|||||||
go.opencensus.io/trace
|
go.opencensus.io/trace
|
||||||
go.opencensus.io/trace/internal
|
go.opencensus.io/trace/internal
|
||||||
go.opencensus.io/trace/tracestate
|
go.opencensus.io/trace/tracestate
|
||||||
# golang.org/x/net v0.30.0
|
# golang.org/x/net v0.33.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/net/bpf
|
golang.org/x/net/bpf
|
||||||
golang.org/x/net/context
|
|
||||||
golang.org/x/net/html
|
golang.org/x/net/html
|
||||||
golang.org/x/net/html/atom
|
golang.org/x/net/html/atom
|
||||||
golang.org/x/net/html/charset
|
golang.org/x/net/html/charset
|
||||||
# golang.org/x/sync v0.8.0
|
# golang.org/x/sync v0.10.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/sync/errgroup
|
golang.org/x/sync/errgroup
|
||||||
# golang.org/x/sys v0.27.0
|
# golang.org/x/sys v0.28.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
golang.org/x/sys/windows/registry
|
golang.org/x/sys/windows/registry
|
||||||
# golang.org/x/text v0.19.0
|
# golang.org/x/text v0.21.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/text/encoding
|
golang.org/x/text/encoding
|
||||||
golang.org/x/text/encoding/charmap
|
golang.org/x/text/encoding/charmap
|
||||||
@ -237,7 +236,7 @@ golang.org/x/text/internal/utf8internal
|
|||||||
golang.org/x/text/language
|
golang.org/x/text/language
|
||||||
golang.org/x/text/runes
|
golang.org/x/text/runes
|
||||||
golang.org/x/text/transform
|
golang.org/x/text/transform
|
||||||
# golang.org/x/tools v0.26.0
|
# golang.org/x/tools v0.28.0
|
||||||
## explicit; go 1.22.0
|
## explicit; go 1.22.0
|
||||||
golang.org/x/tools/cover
|
golang.org/x/tools/cover
|
||||||
golang.org/x/tools/go/ast/inspector
|
golang.org/x/tools/go/ast/inspector
|
||||||
@ -254,7 +253,7 @@ google.golang.org/grpc/internal
|
|||||||
google.golang.org/grpc/internal/status
|
google.golang.org/grpc/internal/status
|
||||||
google.golang.org/grpc/serviceconfig
|
google.golang.org/grpc/serviceconfig
|
||||||
google.golang.org/grpc/status
|
google.golang.org/grpc/status
|
||||||
# google.golang.org/protobuf v1.35.1
|
# google.golang.org/protobuf v1.36.1
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
google.golang.org/protobuf/encoding/protojson
|
google.golang.org/protobuf/encoding/protojson
|
||||||
google.golang.org/protobuf/encoding/prototext
|
google.golang.org/protobuf/encoding/prototext
|
||||||
@ -276,6 +275,7 @@ google.golang.org/protobuf/internal/genid
|
|||||||
google.golang.org/protobuf/internal/impl
|
google.golang.org/protobuf/internal/impl
|
||||||
google.golang.org/protobuf/internal/order
|
google.golang.org/protobuf/internal/order
|
||||||
google.golang.org/protobuf/internal/pragma
|
google.golang.org/protobuf/internal/pragma
|
||||||
|
google.golang.org/protobuf/internal/protolazy
|
||||||
google.golang.org/protobuf/internal/set
|
google.golang.org/protobuf/internal/set
|
||||||
google.golang.org/protobuf/internal/strs
|
google.golang.org/protobuf/internal/strs
|
||||||
google.golang.org/protobuf/internal/version
|
google.golang.org/protobuf/internal/version
|
||||||
|
Loading…
x
Reference in New Issue
Block a user